コンソールアプリケーションでのWIN32 APIメッセージ処理
コンソールアプリケーションでのWIN32 APIメッセージ処理
VisualStdio.NET 2005のC++で作成しているコンソールアプリケーションで、
PostMessageでメッセージを送信しているのに、PeekMessageで検出できません。
下のプログラムに誤った点があるのでしょうか?
尚、ウィンドウハンドルの確認部分はパスしますが、
PostMessageとPeekMessageの引数hWndをNULLに置き換えるとメッセージの検出はできるので、
やはり、ウィンドウハンドルに問題があるのかもしれません。
#include <windows.h>
#include <stdio.h>
void main( void )
{
char OldTitle[1024], NewTitle[1024];
char WindowText[1024], ConsoleTitle[1024];
HWND hWnd;
MSG Msg;
/*** ウィンドウハンドルの取得 ***/
GetConsoleTitle( OldTitle, 1024 );
wsprintf( NewTitle, "%d/%d", GetTickCount(), GetCurrentProcessId());
SetConsoleTitle( NewTitle );
Sleep(40);
hWnd = FindWindow( NULL, NewTitle );
SetConsoleTitle( OldTitle );
/*** ウィンドウハンドルの確認 ***/
GetWindowText( hWnd, WindowText, 1024 );
GetConsoleTitle( ConsoleTitle, 1024 );
if ( strcmp( WindowText, ConsoleTitle ) != 0 ){
printf( "ウィンドウハンドルが不正です" );
return;
}
/*** メッセージの送信と検出 ***/
PostMessage( hWnd, 1050, 0, 0 );
do{
while ( PeekMessage( &Msg, hWnd, 0, 0, PM_REMOVE )){
printf( "メッセージを検出しました" );
return;
}
} while( 1 );
}
お礼
解決しました。ありがとうございました。