// 1. 메세지 전달.
// 계산기의 Hwnd를 얻어 일반용으로 만든다.
// 계산기의 Hwnd를 얻어 일반용으로 만든다.
int main()
{
HWND hwnd = FindWindow( 0, "계산기" );
if( hwnd == 0 )
{
printf( "계산기를먼저 실행\n");
return 0;
}
SendMessage( hwnd, WM_COMMAND, 305, 0 );
}
// 계산기의 Hwnd를 얻어 윈도우를 닫는다.
int main()
{
HWND hwnd = FindWindow( 0, "계산기" );
if ( hwnd == 0 )
{
printf( " B를 먼저 실행.\n" );
return 0;
}
//---------------------------
int result = 0;
result = SendMessage( hwnd, WM_CLOSE, 10, 20 );
printf( "결과 : %d\n", result );
}
{
HWND hwnd = FindWindow( 0, "계산기" );
if( hwnd == 0 )
{
printf( "계산기를먼저 실행\n");
return 0;
}
SendMessage( hwnd, WM_COMMAND, 305, 0 );
}
// 계산기의 Hwnd를 얻어 윈도우를 닫는다.
int main()
{
HWND hwnd = FindWindow( 0, "계산기" );
if ( hwnd == 0 )
{
printf( " B를 먼저 실행.\n" );
return 0;
}
//---------------------------
int result = 0;
result = SendMessage( hwnd, WM_CLOSE, 10, 20 );
printf( "결과 : %d\n", result );
}
// 2. WM_CLOSE 와 WM_NCHITTEST
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch( msg )
{
case WM_CLOSE:
{
UINT ret = MessageBox( hwnd, "정말 종료?", "확인", MB_YESNO );
if( ret == IDYES )
{
// 죽인다.. 또는 DefWindowProc()로 보내도 된다.
DestroyWindow( hwnd );
}
}
return 0;
// WM_NCHITTEST 를 처리하는 방법
case WM_NCHITTEST:
{
// 1. 먼저 DefWindowProc()으로 전달해서 hit test code를 얻는다.
int code = DefWindowProc( hwnd, msg, wParam, lParam );
// 2. code를 조작한다. Ctrl 누르고 끌면 창이 이동.
if( code == HTCLIENT && GetKeyState( VK_CONTROL ) < 0 )
code = HTCAPTION;
// 3. code를 리턴한다. - 다음 메세지는 이 리턴값에 의해 결정된다.
return code;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc( hwnd, msg, wParam, lParam);
}
{
switch( msg )
{
case WM_CLOSE:
{
UINT ret = MessageBox( hwnd, "정말 종료?", "확인", MB_YESNO );
if( ret == IDYES )
{
// 죽인다.. 또는 DefWindowProc()로 보내도 된다.
DestroyWindow( hwnd );
}
}
return 0;
// WM_NCHITTEST 를 처리하는 방법
case WM_NCHITTEST:
{
// 1. 먼저 DefWindowProc()으로 전달해서 hit test code를 얻는다.
int code = DefWindowProc( hwnd, msg, wParam, lParam );
// 2. code를 조작한다. Ctrl 누르고 끌면 창이 이동.
if( code == HTCLIENT && GetKeyState( VK_CONTROL ) < 0 )
code = HTCAPTION;
// 3. code를 리턴한다. - 다음 메세지는 이 리턴값에 의해 결정된다.
return code;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc( hwnd, msg, wParam, lParam);
}