0
私は子ウィンドウの閉じるボタンを押したときにメッセージWM_CLOSE
が引き金となると予想WM_CLOSEを使用して子ウィンドウを閉じるにはどうすればよいですか?
m_childHwnd = CreateWindowEx(
NULL,
TEXT("STATIC"), TEXT("childW"),
WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
m_parentHWnd, NULL,
GetModuleHandle(NULL), NULL
);
m_childhProc = (WNDPROC)SetWindowLongPtr(m_childHwnd , GWLP_WNDPROC, (LONG_PTR)WndChildProc);
static LRESULT CALLBACK WndChildProc(HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam)
{
switch (message)
{
case WM_CLOSE:
DestroyWindow(hwnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
default:
return CallWindowProc(m_childhProc, hwnd, message, wParam, lParam);
}
子ウィンドウから閉じるボタンとハンドルメッセージのWndchildProc
でポップアップとして子供hwnd
を作成します。そして、私はこの方法で子供hwnd
を閉じることができます。
子供の閉じるボタンhwnd
が押されても、何も起こりません。 parent-hwnd
の閉じるボタンが押された場合、WM_DESTROY
メッセージトリガー。 したがって、閉じるボタンで子ウィンドウを閉じることはできません。
閉じるボタンを使用して子ウィンドウを閉じるにはどうすればよいですか?
更新:コピーにテキストがありません。デフォルトではCallWindowProcが追加されました。
その他のすべてのケースでは、ウィンドウプロシージャを呼び出す必要があります。 – EJP
子ウィンドウは 'WS_CHILD'スタイルのウィンドウです。あなたの質問には何もありません。私はあなたが解決しようとしている問題は、次のものではありません。さらに、古い(危険な)コントロールをサブクラス化し、代わりに提供されたインフラストラクチャを使う(「サブクラス化コントロール」(https://msdn.microsoft.com/en-us/library/windows/desktop)を参照してください) /bb773183.aspx))。 – IInspectable