Win32API質問箱 Build43

このエントリーをはてなブックマークに追加
918デフォルトの名無しさん
>>884
ありがとうございます!

BCCだけで何とかするように頑張っている訳ですが、きっと参考になると思います!

しかし何でこの部分「Platform SDK: COM」文書はウヤムヤな事しか書いていないのか・・・

で、一応報告。

まだまだゴソゴソやってるんですが、自作コントロールの場合、

1. RegisterClass() / g_hWndMain = CreateWindow("MyClass")
2. CoCreateInstance(CLSID_..., IID_IOleObject, &pOleObject)
3. pOleObject->EnumVerbs() // 取得したポインタはそのまま捨てる(Release)
4. pOleObject->QueryInterface(IID_IOleWindow, &pOleWindow);
5. pOleWindow->GetWindow(&g_hWndWBC)
6. SetParent(g_hWndCtrl, g_hWndMain); // 無理矢理子ウィンドウに(^^;)
7. ShowWindow(g_hWndWBC, SW_SHOW); // 表示
8. メッセージループ突入

こんなやり方で、一応表示されているように見えます。コントロールに搭載されているボタンに結びつけられたOnClickプロシージャもちゃんと動作しているように見えます。
このコントロールに限りこれで使える事は使えるのかも。

しかし、WebBrowserコントロールにはこのやり方は通用しない・・・WebBrowserはEnumVerbs()してもウィンドウは生成されない。
どのコントロールでも使える正しい方法はどういうものなのだろうか?
というかそもそもEnumVerbs()して何で生成されるかワケがわからない・・・