mfc的 windows消息处理

本文详细介绍了消息处理函数的实现方式,特别是针对用户定义的消息及系统消息的处理逻辑。包括了如何响应用户点击事件来显示窗口或者弹出菜单,以及如何在接收到系统最小化和关闭消息时隐藏窗口。

消息处理函数:

2,消息处理
LRESULT CWork::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
    // TODO: Add your specialized code here and/or call the base class
    switch(message)
    { 
        //如果是用户定义的消息     
//     case MY_WM_NOTIFYICON: 
//         {
//             //鼠标左键单击时work窗口出现 
//             if(lParam==WM_LBUTTONDOWN)
//             { 
//                 ShowWindow(SW_SHOW);
//             //    m_bIsShow = TRUE;
//         
//             
//                 HICON hIcon;
//                 hIcon=AfxGetApp()->LoadIcon(IDI_ICON_work);//work窗口图标
//                 m_TrayIcon.hIcon = hIcon;
//                 ::Shell_NotifyIcon(NIM_MODIFY,&m_TrayIcon);
//                 if(hIcon)
//                 {
//                     ::DestroyIcon(hIcon); 
//                 }
//                 
//             } 
//             //鼠标右键单击弹出选单 
//             else if(lParam==WM_RBUTTONDOWN)
//             { 
//                 CMenu menu; 
//                 menu.LoadMenu(IDR_MENU_RIGHT); //载入事先定义的选单 
//                 CMenu *pMenu = menu.GetSubMenu(0); 
//                 CPoint pos; 
//                 GetCursorPos(&pos); 
//                 pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd()); 
//             } 
//             break;
//         } 
        //如果是系统消息 
             case WM_SYSCOMMAND: 
                  {
                     //接收到最小化消息和关闭消息时窗口隐藏(即按关闭和最小化按钮) 
                     if(wParam == SC_MINIMIZE)
                      { 
                        ShowWindow(SW_HIDE);
                          //ShowWindow(visibility);
                        //ShowWindow(SW_HIDE); 
                      } 
                    if(wParam == SC_CLOSE)
                    { 
                        OnExit();
                        //ShowWindow(SW_HIDE);
                        //ShowWindow(visibility);
                        //ShowWindow(SW_HIDE); 
                        return 0; 
                      } 
                      break; 
                 }
    default: 
        break;
     }
    return CDialog::WindowProc(message, wParam, lParam);
}

 

转载于:https://www.cnblogs.com/rechen/p/5100230.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值