积极答复者
自定义消息中弹出CFileDialog对话框,消息无法再次响应

问题
-
我的程序需要响应串口的消息,在响应串口的消息函数中,根据消息的内容分为三个调用函数,其中一个是需要有打开文件的功能,另一个是模拟鼠标的操作,主要的代码如下:
afx_msg LRESULT MainDlg::OnCommunication(WPARAM wParam,LPARAM lParam)
{
if(...)
MenuFileOpen();
else if(...)
MouseAction();
else
...
}
MenuFileOpen()
{
CFileDialog OpenFile(TRUE,NULL,NULL,0,_T("采集卡数据(*.traw)|*.traw||"));
OpenFile.m_ofn.lpstrInitialDir=_T("D:\\TSDATA");
if (OpenFile.DoModal()==IDOK){
//...
}
}
当我第一次收到该自定义消息时,执行的是打开文件操作,但弹出对话框后无法响应模拟鼠标的操作。
实际的鼠标仍可以对窗口上的鼠标进行操作。
程序界面上有个button,点击后调用的函数也是MenuFileOpen(),但是通过模拟鼠标的操作函数点击该button后弹出对话框,却依然可以响应模拟鼠标的操作。这和上面的方式有什么区别?
void MainDlg::OnBnClickedBtnmenuFile()
{
MenuFileOpen();
}
我想问问大家,这是什么原因,我可以用什么方法解决串口发送的消息打开文件后,依然可以响应模拟鼠标的操作。
个人感觉是对话框DoModal的问题,但是点击button和在自定义消息响应函数中调用有什么区别?