SOS!主界面中键盘响应弹出非模态对话框,程序运行时无法响应。。

职业炒股 2011-12-18 03:23:44
下面是键盘响应弹出对话框 , 没有启动其他线程的时候可以弹出来, 程序运行后很难响应出来,只听到声音。我代码里面还有两个定时器,一个1S的,一个3S的。
BOOL CMoniDlg::PreTranslateMessage(MSG* pMsg)
{

if (pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_RETURN:
return TRUE;
case VK_ESCAPE:
return TRUE;
case 'D':
if ( ::GetKeyState(VK_CONTROL)<0)
{
MessageBox(L"a");
RealData *pDataDlg = new RealData;
pDataDlg->Create( IDD_DATA , this);
pDataDlg->ShowWindow(SW_SHOW); pDataDlg->GetDlgItem(IDC_ACCOUNT)->SetWindowTextW(Info.wAccount.c_str());

return TRUE;
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}



后来我改成线程弹出对话框:
case 'D':
if ( ::GetKeyState(VK_CONTROL)<0)
{
hDisplayThread = CreateThread( NULL, 0, DisplayThread, &Info, CREATE_SUSPENDED, 0 );//创建上传报表数据到网盘的工作者线程
::ResumeThread( hDisplayThread );

}

结果悲剧了。。。线程界面是卡死的,线程的弹界面怎么写额。。。
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
职业炒股 2011-12-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]

C/C++ code

// Thread handler funcation
UINT __cdecl ThreadProc(LPVOID lParam)
{
CAboutDlg dlg;
dlg.Create(IDD_ABOUTBOX);
dlg.ShowWindow(SW_SHOW);

MSG msg;
while(GetMessage(&……
[/Quote]是模态对话框吧
Eleven 2011-12-18
  • 打赏
  • 举报
回复

// Thread handler funcation
UINT __cdecl ThreadProc(LPVOID lParam)
{
CAboutDlg dlg;
dlg.Create(IDD_ABOUTBOX);
dlg.ShowWindow(SW_SHOW);

MSG msg;
while(GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

// Create Thread
AfxBeginThread(ThreadProc, NULL);
职业炒股 2011-12-18
  • 打赏
  • 举报
回复
快来人解决啊。。。。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧