IOleInPlaceObject::SetObjectRects

IOleInPlaceObject::SetObjectRectsで、インプレースオブジェクトの範囲を指定する。

IOleInPlaceObject::SetObjectRects (oleidl.h) - Win32 apps | Microsoft Learn
概要説明

WebBrowserHost.cppで、

こう書く。

成功はするが
成功はするが

成功はするが、

左上に出来てしまう。
左上に出来てしまう。

左上に出来てしまう。
空キャプションの謎ウィンドウの正体。
デバッガでいろいろ調べていくと、

渡されるウィンドウハンドルはあるが
渡されるウィンドウハンドルはあるが

渡されるウィンドウハンドルはあるが、

OnCreateが終ってないので、m_hWndはNULLのまま
OnCreateが終ってないので、m_hWndはNULLのまま

OnCreateが終ってないので、m_hWndはNULLのまま、

ここも先に呼ばれてしまうし
ここも先に呼ばれてしまうし

ここも先に呼ばれてしまうし、

ここも先に呼ばれてしまう
ここも先に呼ばれてしまう

ここも先に呼ばれてしまう。
なので、WebBrowserHost.hに、

未確定のウィンドウハンドルm_hWndUndeterminedを追加。

OnCreateで、最初にm_hWndUndeterminedにhwndをセット。

DoVerbのところ、m_hWndUndeterminedに置き換え。

GetWindowも、

GetWindowContextも置き換える。

スクリプトエラーは出るけど
スクリプトエラーは出るけど

スクリプトエラーは出るけど、

指定の枠にロードされてる
指定の枠にロードされてる

指定の枠にロードされてる。
空キャプションの謎ウィンドウもなくなり、1つのウィンドウに統合されてる。

Sample/com/IOleInPlaceObject/SetObjectRects/src/IOleInPlaceObject at master · bg1bgst333/Sample · GitHub