メッセージを受信したときに、hWnd からウィンドウを削除しなければならない状況があります。CreateWindowEx
HWND を返すことによってオブジェクトを作成するため、これは可能であるに違いありませんが、オブジェクトを削除できる必要があります。
注:hWndは他のプロセスにあります。
適切な方法は、関連するウィンドウにWM_CLOSEメッセージを送信するか、 WM_DESTROYメッセージをウィンドウに送信する DestroyWindow を呼び出すだけです。
スレッドは、DestroyWindow を使用して、別のスレッドによって作成されたウィンドウを破棄することはできません。
WM_CLOSE と WM_DESTROY の違い:
WM_CLOSE を送信した後、ターゲット アプリケーションは、ウィンドウを破棄する前に、WM_CLOSE メッセージを処理し、ユーザーが選択を確認した場合にのみ DestroyWindow 関数を呼び出すことにより、ユーザーに確認を求めることができます。
つまり、WM_CLOSE を使用してウィンドウを閉じることは拒否できますが、アプリケーションは確認を求めて変更を保存できるため、WM_DESTROY よりも「安全」と見なされます。ただし、強制的に閉じる必要がある場合は、WM_DESTROY を使用してください。
HWND 構造体ポインターはシステムによって管理されます。削除しようとさえしないでください。
WM_CLOSE メッセージを使用する場合、どのプロセスがウィンドウを所有しているかは問題ではありません。
でウィンドウにWM_CLOSE
メッセージを送信しますSendMessage
。