Win32API質問箱 Build44

このエントリーをはてなブックマークに追加
348デフォルトの名無しさん
一応できました。タブ巡回。
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するのが正しいと思うのですが、なぜこれをコントロールに通知しなければならないのでしょうか?
例えばアニメーションを表示するコントロールとかで非アクティブになった時にアニメを停止するとか?