这恰恰是 CSysCmdRouter 做的事情。它截取 WM_INITMENUPOPUP 并清除 bSysMenu 标志,也就是 LPARAM 的 HIWORD: if(msg==WM_INITMENUPOPUP){ lp=LOWORD(lp);// (set HIWORD = 0) } 现在,当 MFC 获得 WM_INITMENUPOPUP,它认为该菜单是常规菜单。只要你的命令 IDs 与真正的系统菜单不冲突,一切都运行得很好。
这就需要你在主窗口消息映射中添加ON_WM_SYSCOMMAND,它有一个处理函数如下: CMainFrame::OnSysCommand(UINT nID, LPARAM lp) { if (nID==ID_MY_COMMAND) { ... // 处理它 return 0; } // 传递到基类:这一步很重要! return CFrameWnd::OnSysCommand(nID, lp); } 如果该命令不是你的,不要忘了将它传...
CMainFrame::OnSysCommand(UINT nID, LPARAM lp) { if (nID==ID_MY_COMMAND) { ... //处理它 return 0; } //传递到基类:这一步很重要! return CFrameWnd::OnSysCommand(nID, lp); } 如果该命令不是你的,不要忘了将它传递到你的基类处理——典型地,那就是CFrameWnd或CMDIFrameWnd。否则,Windows将无法得...
这就需要你在主窗口消息映射中添加ON_WM_SYSCOMMAND,它有一个处理函数如下: CMainFrame::OnSysCommand(UINT nID, LPARAM lp) { if (nID==ID_MY_COMMAND) { ... // 处理它 return 0; } // 传递到基类:这一步很重要! return CFrameWnd::OnSysCommand(nID, lp); } 如果该命令不是你的,不要忘了将它传...
---// [in] lp = &psz//---staticintCALLBACKIEEnumChildProc(HWND w, LPARAM lp){UNREFERENCED_PARAMETER(lp);intrc=true;// true=continuer l'énumérationcharszClassName[128+1]; DWORD dw; HRESULT hr; IHTMLDocument2 *pHTMLDocument2=NULL; BSTR bstrURL=NULL; BSTR bstrState=NULL; T_GETURL ...
当你生命了一个变量,而没有使用时,编译器就会报警告:“warningC4100:''XXXX'':unreferencedformalparameter.”所以,为了让编译器不必检测你的警告,就使用UNREFERENCED_PARAMETER语句。比如:intSomeFunction(intarg1,intarg2){UNREFERENCED_PARAMETER(arg2)...}我看到过一些C++代码针对没有使用过的参数用UNREFERENCED_...
CMainFrame::OnSysCommand(UINT nID, LPARAM lp) { if (nID==ID_MY_COMMAND) { ... // 处理它 return 0; } // 传递到基类:这一步很重要! return CFrameWnd::OnSysCommand(nID, lp); } 如果该命令不是你的,不要忘了将它传递到你的基类处理——典型地,那就是 CFrameWnd 或 CMDIFrameWnd。否则,Windows...