mfc基于对话框的程序,程序有多个对话框,主对话框的名字为“myProj”,
为了实现程序的唯一实例化,也就是程序隐藏后再次点击exe不会再次开启一个程序,而是显示之前已运行的窗口。
在InitInstance()函数里加了如下代码
        HANDLE hIsWndOpened = CreateMutex(NULL,TRUE,_T("myProj"));  //myProj是程序主窗口的名字
if(GetLastError() == ERROR_ALREADY_EXISTS) 

HWND hWnd;
hWnd = ::FindWindow(NULL,_T("OBDProj"));
if (hWnd != NULL)
{
::SendMessage(hWnd,WM_SHOWWND,0,0);
AfxMessageBox(_T("890"));    //测试这条消息打印出来了
}
return 0; 
} 测试后发现发送消息的代码执行到了,但是窗口没有收到这条消息。
消息响应函数的处理应该没问题,在子窗口给主窗口发送这条消息就收的到。
哪位大侠知道这是什么原因啊?
或者谁能提供其他能程序唯一实例化的方法?
附:消息相应处理:
.h
#define WM_SHOWWND          WM_USER+203
afx_msg LRESULT ShowWndMsgHandler(WPARAM,LPARAM);.cpp
ON_MESSAGE(WM_SHOWWND,ShowWndMsgHandler) //显示窗口
LRESULT COBDFirstDlg::ShowWndMsgHandler(WPARAM w,LPARAM l)
{
AfxMessageBox(_T("123"));  // 这句话没有执行到
        //此处省略显示窗口的代码段
}之前也是这样写的测试成功过,后来给程序加功能,再回头试这个功能就不行了。