程序分为工作者线程和界面线程,考虑通过界面线程向工作者线程发送消息,来实现两个线程的通讯,能不能实现,该怎么实现?
解决方案 »
- VC++6.0与2000DDK,无法编译驱动,why?
- 问一个线程优先级的问题
- waveOutWrite的问题
- OnPaint函数中位图显示不出来,请大家帮帮忙!
- windows media player 控件问题(evc)
- 如何动态显示一个等待窗口,告诉用户正在忙,
- 产生提示的声音用哪个函数?俺一下忘了》》》》》》》》
- 一个关于串行化(Serialize)的问题?急急急!
- 去何处找工作?
- how can i get circumcenter(外心) coordinate when u know three points that are not in the same line
- 请问atoi和strtoi有什么区别啊?
- 请问各位大侠,如何使用CFile实现一次性向硬盘写入超过64K的数据啊???其他方法也行。
MSG msg;while (GetMessage(&msg, NULL, 0, 0))
{
switch (msg.message)
{
...
}
}主线程中
PostThreadMessage(dwThreadID, UM_MESSAGE, 0, 0);
CreateEvent
SetEvent
ResetEvent
WaitForSingleObject
WaitForMultipleObjects
等函数,可以在MSDN找到其用法另外也可以用 MsgWaitForMultipleObjects 同时使用两种方法
Windows有没有这样一种功能呢?
Windows有没有这样一种功能呢?
=====================================
这样的话,还是用事件好些。
while (g_bRunning)
{
while (PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE))
{
BOOL bGetResult = GetMessage(&Msg, NULL, 0, 0);
TranslateMessage(&Msg);
DispatchMessage(&Msg);
if (bGetResult==0)
g_bRunning = false;
}
if (g_bRunning)
{
....//空闲处理
}
}
Windows有没有这样一种功能呢?
----------------------------------------------------------
GetMessage就可以实现这样的要求
GetMessage在没有消息时是阻塞的,当WM_QUIT时返回FALSE,其它消息返回TRUE