こういう質問があったので。
Internet Explorer 6.0 for Windows CE で ActiveX コントロールを使いたい - MSDN フォーラム
MSDNコミュニティには参加してないので回答はしませんw
それにしてもひどい回答状況だな...つーかいつものモデレータは珍しく登場してないようだがどうしたんだろう?
Windows CEでのActiveXは特殊で、というか面倒くさい。(Developing Secure ActiveX Controls)
Microsoftは一応動作はするようにしているが、コンパイラチーム(開発環境)にはやる気があるように見受けられない。
どうしてかって、、、
eMbedded Visual C++ 4.0の時も、Visual Studio 2005でも、ウィザードが吐き出すスケルトンActiveXはバグバグなので。本当にテストしてるんかよ?と思ってしまう。。。
eMbedded Visual C++ 4.0の時はウィザードはWindows CEでサポートされないスレッディングモデル用のスケルトンコードを吐き出してくれる。(eMbedded Visual C++ 4.0のREADME『4.5 アパートメントスレッドモデルがIDEによって誤って設定される』を参照)
Visual Studio 2005では、IObjectSafetyが実装されない。(参考:Microsoft® Visual Studio® 2005 Beta 2 の既知の問題)
デフォルトではウィザードが生成するコードは
#if defined(_WIN32_WCE) && (_WIN32_WCE < 0x500) // pIE on Windows Mobile platforms under 5.0 require IObjectSafety for the control to be loaded public IObjectSafetyImpl, #endif
となっており、ご丁寧なことにWindows CE 5.0以降だとIObjectSafetyの実装が無効にされてしまう。結果的にビルドしたものはIObjectSafetyにアクセスできないため、ブラウザからのロードが失敗する。
Windows CE 5.0以降で動かすためには#if と #endifをばっさり外してしまう必要がある。
ちなみにもう一箇所もあるので同様に。
#if defined(_WIN32_WCE) && (_WIN32_WCE < 0x500) COM_INTERFACE_ENTRY_IID(IID_IObjectSafety, IObjectSafety) #endif