一応できました。タブ巡回。
WBC003.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)
http://winscript.s41.xrea.com/upload/source/No_0019.lzh ですがこれが完全に正しいやり方なのか確信が持てません。みなさんはどう思われますか? 窓API的におかしい所ないでしょうか? (でも結局自作コントロールでは通用せず・・・)
g_pOleInPlaceActiveObject->OnFrameWindowActivate(TRUE);
g_pOleInPlaceActiveObject->OnDocWindowActivate(TRUE);
for(;;)
{
if (!IsWindow(g_hWndMain))
{
break;
}
GetMessageA(&msg, NULL, 0, 0);
hr = g_pOleInPlaceActiveObject->TranslateAccelerator(&msg);
if (hr == S_OK)
{
DispatchMessageA(&msg);
}
else if (hr == S_FALSE)
{
if (!IsDialogMessageA(g_hWndMain, &msg))
{
TranslateMessage(&msg);
DispatchMessageA(&msg);
}
}
}
なお、IsWindow()でループ脱出するのは気にしないでください(^^;)DefWindowProc使ってるのでこうなるのです。
ここはGetMessage()==FALSEで判断されているのだと思って下さい(^^;;;)いずれウィンドウプロシージャは設置するつもりです。
で、OnFrameWindowActivate/OnDocWindowActivate()は、本当はウィンドウプロシージャのWM_ACTIVATE中で呼び出し、ステートに応じてTRUE/FALSEするのが正しいと思うのですが、なぜこれをコントロールに通知しなければならないのでしょうか?
例えばアニメーションを表示するコントロールとかで非アクティブになった時にアニメを停止するとか?