首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

非形式对话框不响应消息

2013-01-23 
非模式对话框不响应消息我程序中两处调用建立非模态对话框,第一处通过模式对话框的主窗口按键消息创建一个

非模式对话框不响应消息
我程序中两处调用建立非模态对话框,
第一处通过模式对话框的主窗口按键消息创建一个窗口

CDlgShouyeMenu *pDlgShouyeMenu = new CDlgShouyeMenu;
pDlgShouyeMenu->Create(CDlgShouyeMenu::IDD);
pDlgShouyeMenu->ShowWindow(SW_SHOW);

代码可以成功的执行, 并且显示界面, 消息也能完美相应.

但是第二处, 通过一个读串口的线程创建的就有问题.
我建了一个线程用来读取串口数据, 并将数据通过回调函数发回主窗口, 回调函数中通过主窗口指针调用主窗口的某个函数创建非模式对话框. 创建出来的非模式对话框只执行ShowWindow(SW_SHOW);一闪而过不会显示界面, 必须调用UpdateWindow();才能显示界面.

CDialog *m_pCurDlg = NULL; //主窗口的成员变量
...
if(m_pCurDlg)
{
m_pCurDlg->DestroyWindow();
m_pCurDlg = NULL;
}
m_pCurDlg = new CDlgFaduanxinStat(0);
m_pCurDlg->Create(CDlgFaduanxinStat::IDD);
m_pCurDlg->ShowWindow(SW_SHOW);
m_pCurDlg->UpdateWindow();

但是就算显示出界面来, 不响应PreTranslateMessage()函数.
如果我把
m_pCurDlg->Create(CDlgFaduanxinStat::IDD);
换成
m_pCurDlg->Create(CDlgFaduanxinStat::IDD, this);

直接报Debug Assertion Failed. 错误定位在 CWnd::AsserValid(void)


求救..
[解决办法]
你不要直接调用主窗口的函数,而是通过给主窗口发送消息,在主窗口接收到消息后,创建这个m_pCurDlg

热点排行