求救!!!怎样使工作线程处理消息循环?
写了一个程序,开了一个工作线程,在工作线程里用到CAsynSocket类,而CAsynSocket类里面需要处理OnConnect、OnReceive类,需要用到消息循环,该怎样处理呢? 问题点数:50、回复次数:10Top
1 楼lzzqqq(Jonersen)回复于 2006-03-03 11:45:06 得分 0
DWORD dwThread(LPVOID lp)
{
/*......
你的乱七八糟的初始化,操作什么的....
*/
MSG msg;
while(GetMessage(&msg,NULL,0,0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return EXIT_SUCCESS;
}Top
2 楼laiyiling(陌生人[MVP])回复于 2006-03-03 11:51:52 得分 0
http://support.microsoft.com/kb/192570/Top
3 楼netree(白衣痴人)回复于 2006-03-03 14:28:52 得分 0
To lzzqqq(Jonersen)
DWORD dwThread(LPVOID lp)
{
/*......
你的乱七八糟的初始化,操作什么的....
(我在这里代码里就调用了Connect函数引起了OnConnect消息,而这时候消息循环还没有产生啊,所以程序还是运行不起来啊,怎么办呢,如不在这里调用,怎么办呢?
*/
MSG msg;
while(GetMessage(&msg,NULL,0,0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return EXIT_SUCCESS;
}
Top
4 楼netree(白衣痴人)回复于 2006-03-03 14:35:54 得分 0
To laiyiling(陌生人)
微软的那个示例里好像用的用户界面线程吧Top
5 楼sboom(+-LingCh-+)(爱美人不爱VC)回复于 2006-03-03 19:14:36 得分 0
DWORD dwThread(LPVOID lp)
{
/*......
你的乱七八糟的初始化,操作什么的....
*/
MSG msg;
while(GetMessage(&msg,NULL,0,0)
{
TranslateMessage(&msg);
switch(msg.MESSAGE_ID/*忘记了这个叫什么名字*/){
case WM_XXX:
DoXXX();
break;
case WM_YYY:
DoYYY();
break;
}
}
return EXIT_SUCCESS;
}
Top
6 楼newcore(to be or not to be, it's a question.)回复于 2006-03-04 11:24:59 得分 0
帮你看看
Top
7 楼orbit(走了走了)回复于 2006-03-04 11:38:04 得分 0
CAsynSocket会自己创建一个隐藏窗口分派消息,只要创建窗口,线程就有消息循环了Top
8 楼JetLuo(JetLuo)回复于 2006-03-04 20:26:01 得分 0
其实可用用户界面线程CWinThread代替一般的工作者线程,因为它具有消息循环的功能。Top
9 楼BBirdlyh(BBird)回复于 2006-03-04 22:52:37 得分 0
1 CAsynSocket 本身就是异步的了,还用线程干什么
2 CAsynSocket 本身包含一个窗口,所有他的消息会从这个窗口走,不用担心这个问题Top
10 楼newcore(to be or not to be, it's a question.)回复于 2006-03-05 14:27:32 得分 0
两种方法:
1、用户界面线程CWinThread代替工作者线程
2、工作者线程中自己实现消息循环,这个我已经作了个测试,如果要,可以发给你。
对于 CAsynSocket 本身包含一个窗口,所有他的消息会从这个窗口走,不用担心这个问题,同意
Top




