打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何将无模式对话框设为不激活状态
在 WindowProc 中过滤 WM_ACTIVATE 和 WM_CLOSE

LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{

  switch(uMsg)
  {
case WM_ACTIVATE:
      {
        BOOL fActive = LOWORD(wParam);
        fMinimized = (BOOL) HIWORD(wParam); 
        HWND hwndPrevious = (HWND) lParam;
        // m_hWndMyDialog 为 无模式对话框的hWnd
        if(fActive != WA_INACTIVE &&
               hwndPrevious &&
                   hwndPrevious == m_hWndMyDialog)
        {
            PostMessage(hwndPrevious,WM_ACTIVATE,MAKEWPARAM(0,WA_INACTIVE),
                          LPARAM(hwndPrevious) );
            return 0;
        }
      }
      break;

//  case WM_NCACTIVATE:
//     if((fActive = LOWORD(wParam))!=FALSE)
//         return TRUE;
//      break;

参考:
WM_ACTIVATE
The WM_ACTIVATE message is sent to both the window being activated and the window being deactivated. If the windows use the same input queue, the message is sent synchronously, first to the window procedure of the top-level window being deactivated, then to the window procedure of the top-level window being activated. If the windows use different input queues, the message is sent asynchronously, so the window is activated immediately. 

WM_ACTIVATE 
fActive = LOWORD(wParam);           // activation flag 
fMinimized = (BOOL) HIWORD(wParam); // minimized flag 
hwndPrevious = (HWND) lParam;       // window handle 
 
Parameters
fActive 
Value of the low-order word of wParam. Specifies whether the window is being activated or deactivated. This parameter can be one of the following values. Value Meaning 
WA_ACTIVE Activated by some method other than a mouse click (for example, by a call to the SetActiveWindow function or by use of the keyboard interface to select the window). 
WA_CLICKACTIVE Activated by a mouse click. 
WA_INACTIVE Deactivated. 


fMinimized 
Value of the high-order word of wParam. Specifies the minimized state of the window being activated or deactivated. A nonzero value indicates the window is minimized. 
hwndPrevious 
Value of lParam. Handle to the window being activated or deactivated, depending on the value of the fActive parameter. If the value of fActive is WA_INACTIVE, hwndPrevious is the handle to the window being activated. If the value of fActive is WA_ACTIVE or WA_CLICKACTIVE, hwndPrevious is the handle to the window being deactivated. This handle can be NULL. 
Return Values
If an application processes this message, it should return zero.

(###)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
用Windows API实现一个简单的文本输入框
文件监控
win32对话框
MFC子窗口向父窗口发送消息
SendMessage函数的常用消息及其应用大全
如何模拟键盘操作(c++版本)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服