急问关于消息处理 用PreTransxxxxmessage,这是处理消息前的一个函数,重载它就可以。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在对话框类里吗?App中没有吗? 有啊。任何WINDOWS类都有。最低级的就是CWnd类了。再下去就用Prexxmessage,dispatchxxxmessage等API了。 首先要确定要处理的消息是否只能通过框架的过程处理?实际上通过重载PreTransMessage()函数,基本上基于windows 的消息都能处理。 我在App中重载了:BOOL CDetectorApp::PreTranslateMessage(MSG* pMsg)好像并没有起到作用,连极小化等消息都没拦截到 PreTranslateMessage是个虚函数,重载它可以得到一切消息,你是怎么拦截的,把源码贴出来看看 BOOL CDetectorApp::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class switch (pMsg->message){ case MYWM_NOTIFYICON: if(pMsg->lParam==WM_LBUTTONDBLCLK) { AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW); } break; case WM_SYSCOMMAND: if(pMsg->wParam==SC_MINIMIZE) { AfxMessageBox("hi"); AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE); //return 0; } break; } return CWinApp::PreTranslateMessage(pMsg);}SC_MINIMIZE是系统消息,和映射没有关系吧?为什么拦截不到呢? CDetectorApp是个什么类啊,你要重载mainframe的pretranslatemessage才行 问题就在这里啊,CDetectorApp是我的App啊,我没有mainframe来供我重载pretranslatemessage(),因为我的工程是基于对话框的,没有mainframe的类 classwizard 里有自己去看吧 不太明白,classwizard里有?返回TRUE也没有什么用的,发现很快就进行正常处理(最小化)说明没有正常返回TRUE; 在classwizard里给你的类添加虚函数PreTranslateMessage,然后edit code,自己写就行了 是啊,我上边贴的代码就是这样写出来的,只不过是在App类中重载的pretranslatemessage(),这样难道不成吗? 找到一些原因:PreTranslateMessage确实起到了作用,但当我最小化的时候,他却不认为收到的是SC_MINIMIZE消息! 在dialog类中重载 WindowProc OKWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { if (message==WM_SYSCOMMAND) { if (wParam==SC_MINIMIZE) { AfxMessageBox("hello"); return 1; } } return CDialog::WindowProc(message, wParam, lParam); 关于Win32 Dll问题 界面都是写在rc文件里面的吗,不能写在cpp文件吗 CSDN回帖后一点小小的变化 请教:InstallShield的使用中的一个问题 c#编写MDI的问题 广播的问题 一个非常棘手的问题!希望你能帮我解决!~ 用char数组能不能生成BSTR类型的字符串? 关于结构体 mfc消息循环问题? 如何解决串行通信程序的控件问题?? 简单问题,来拿分啊:怎样移动一个文件并将它改名?
{
// TODO: Add your specialized code here and/or call the base class
switch (pMsg->message){
case MYWM_NOTIFYICON:
if(pMsg->lParam==WM_LBUTTONDBLCLK)
{
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
}
break; case WM_SYSCOMMAND:
if(pMsg->wParam==SC_MINIMIZE)
{
AfxMessageBox("hi");
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
//return 0;
}
break;
}
return CWinApp::PreTranslateMessage(pMsg);
}SC_MINIMIZE是系统消息,和映射没有关系吧?为什么拦截不到呢?
自己去看吧
返回TRUE也没有什么用的,发现很快就进行正常处理(最小化)说明没有正常返回TRUE;
PreTranslateMessage确实起到了作用,但当我最小化的时候,他却不认为收到的是SC_MINIMIZE消息!
WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{ if (message==WM_SYSCOMMAND)
{
if (wParam==SC_MINIMIZE)
{
AfxMessageBox("hello");
return 1;
}
}
return CDialog::WindowProc(message, wParam, lParam);