Windows处理重要事件的一些操作
1.消息:WM_ACTIVATE
参数:fActive = LOWORD(wParam);
fMinimized = (BOOL)HIWORD(wParam)
hwndPrevious = (HWND)lParam
其中fActive主要定义了该窗口发生了什么事,主要是判断是激活还是取消;
其中fMinimized变量只能指示该窗口是否最小化,非零为真;
hwndPrevious是窗口激活句柄
例子:case WM_ACTIVATE:
{
HDC hdc = GetDC(hwnd);
if(LOWORD(wparam)!=WA_INACTIVE)
{
SetTextColor(hdc,RGB(0,0,255));
SetBkColor(hdc,RGB(0,0,0));
SetBkMode(hdc,OPAQUE);
TextOut(hdc,0,100,"激活",strlen("激活"));
}
else
{
SetTextColor(hdc,RGB(0,0,255));
SetBkColor(hdc,RGB(0,0,0));
SetBkMode(hdc,OPAQUE);
TextOut(hdc,0,100,"沉睡",strlen("即或"));
}
ReleaseDC(hwnd,hdc);
}
2.消息:WM_CLOSE
参数:无
该消息在WM_DESTROY和WM_QUIT消息之前被发送,指示用户关闭窗口。如果该消息操作后WinProc()的返回
值为0,则消息被扔了,什么也不会发生.
例子:case WM_CLOSE:
{
int result = MessageBox(hwnd,"确认退
出?","out",MB_YESNO|MB_ICONQUESTION);
if(result==IDYES)
{
return(DefWindowProc(hwnd,msg,wparam,lparam));
}
else
{
return(0);
}
}
3.消息WM_SiZE
参数:fwSizeType = wParam;
nWidth = LOWORD(lParam)
nHeight = HIWORD(lParam)
其中,fwSizeType表示将会发生哪种尺寸的改变,具体见MSDN
该消息对于窗口游戏非常重要,因为当窗体尺寸改变时,必须调整图象显示来适应,但是如果游戏在全屏状
态下运行时就不必调整图象显示,但是在窗口游戏中,用户可能会改变窗口的大小。当用户改变窗口大小
时,应当使显示对中,并且调整环境,或者使用任何方法保证图象准确。
例子: case WM_SIZE:
{
Height = LOWORD(lparam);
Width = HIWORD(lparam);
HDC hdc = GetDC(hwnd);
SetTextColor(hdc,RGB(0,255,255));
SetBkColor(hdc,RGB(0,0,0));
SetBkMode(hdc,OPAQUE);
sprintf(buffer_2,"Height:%d,Width:%d",Height,Width);
TextOut(hdc,0,200,buffer_2,strlen(buffer_2));
ReleaseDC(hwnd,hdc);
}break;
4WM_MOVE
参数:
xPos = (int)LOWORD(lParam);
yPos = (int)HIWORD(lParam);
WM_MOVE消息在一个窗口移动到一个新位置时传递,该消息在窗口移动之后传递,而不是实际移动过程中
传递,如果想跟踪一个窗口的每个象素的精确移动,你就需要处理WM_MOVING消息。但在多数情况下,直
到用户已完成窗口的移动才停止该处理过程。