Windows处理重要事件的一些操作

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消息。但在多数情况下,直

到用户已完成窗口的移动才停止该处理过程。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值