我开了一个线程,在线程里doModal了一个对话框,在启动线程的语句afxbeginthread()之前有个waitsingleobject(g_eventstart,INFINT);问题就是当加了这个waitsingleobject时,我的对话框就不显示了,把waitsingleobject删除了,就能显示,这是怎么回事呀??
---------MyDlg.cpp----------
#include"ProDlg.h"
#include"MyDlg.h"
CEvent g_eventStart;
UINT ProcessThread(LPVOID lParam)
{
CProDlg m_prodlg;
.......
m_prodlg.DoModal();
g_eventStart.SetEvent();
return 0;
}
CMyDlg::function()
{
...........
::WaitForSingleObject(g_eventStart,INFINITE);//它的存在对
// m_proDlg.DoModal()有影响!
::Sleep(200);
AfxBeginThread(ProcessThread, (LPVOID)GetSafeHwnd(),
THREAD_PRIORITY_NORMAL);
g_eventStart.ResetEvent();
}
CMyDlg::OnItiDialog()
{
g_eventStart.SetEvent();
}
----------------------------------------------
---------MyDlg.cpp----------
#include"ProDlg.h"
#include"MyDlg.h"
CEvent g_eventStart;
UINT ProcessThread(LPVOID lParam)
{
CProDlg m_prodlg;
.......
m_prodlg.DoModal();
g_eventStart.SetEvent();
return 0;
}
CMyDlg::function()
{
...........
::WaitForSingleObject(g_eventStart,INFINITE);//它的存在对
// m_proDlg.DoModal()有影响!
::Sleep(200);
AfxBeginThread(ProcessThread, (LPVOID)GetSafeHwnd(),
THREAD_PRIORITY_NORMAL);
g_eventStart.ResetEvent();
}
CMyDlg::OnItiDialog()
{
g_eventStart.SetEvent();
}
----------------------------------------------
解决方案 »
- VC6.0 的工程区文件有个CPP有8000多行就很卡!
- 关于剪贴板通信的问题
- 大家帮帮忙吧,我遇到了很奇怪的问题,快疯了。分数可以加
- 请教各位大侠,如何从一幅很大的位图中截取矩形区域显示?
- 打印文本居中?SetTextAlign?
- 请问怎样在msflexGrid的单元格中加图片
- 为什么净出这种错?
- 如何设置USB发送断点、接受断点管道大小
- 这个问题困扰好久了,高手清如《》《〈〉〈〉〈〉〈〉〈〉〈〉〈〉〈〉》》》》》》》》》》》》》》》〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉
- 如何把几个chm(已编译的 html 文件)文件合成一个chm文件
- 使用ADOX操作SQL SERVER的问题,“不支持此接口”?
- 如何得到客户区原点和绘图板原点的偏移量?
你这样做吧。
...........
::Sleep(200);
AfxBeginThread(ProcessThread, (LPVOID)GetSafeHwnd(),
THREAD_PRIORITY_NORMAL); ::WaitForSingleObject(g_eventStart,INFINITE);//它的存在对 g_eventStart.ResetEvent();
有信号的!!!
在OnInitDialog()不是设置了么?
而且,当我把 m_prodlg.DoModal();该成MessabeBox()时就不管有没有删除waitsingleobject()都可以执行!
所以我认为这是关于线程和对话框的问题!