楼主搞错了。
CListCtrl 只能在主线程操作。
WaitForSingleObject 没问题。
22楼白痴。
回答你
1,人家那是简写。难道楼主故意写个死循环在那么?
2,你根本就没看懂。人家说是有消息来也可以往下执行。知道什么是有消息么?
re: C++中关于类中常数静态成员初始化的问题 houjie 2008-02-28 11:15
const必须初始化,而且初始值必须是常量表达式。怎么可以用函数初始化const变量呢
LZ看了你的文章后有些疑惑的,
1. 的线程代码中的 for(;;){
ReadInfoFromList();
InsertToCListCtrl();
}
好像没有必要要for(;;){}这一层吧,这样的话你的while(!bTerminate)就没有什么意义了,永远没法执行到吧,
2. result = MsgWaitForMultipleObjects(1, &readThreadHandle, FALSE, INFINITE, QS_ALLINPUT); 如果你用INFINITE永远等待不超时后面的代码在在等待的时间没有发生的情况下还能执行到吗?
re: boost::regex学习(5) shootingstars 2008-01-17 14:53
--引用--------------------------------------------------
no_name: s = "Hello World ! GoodBye World\r\n \r\n ";
reg = "((\\w*.*)*)\\b([\\s\\r\\n\\t])*";
std::cout <<"regualar expression is"<<reg<<endl;
std::cout <<"the string before replace:"<<s<<endl;
s = boost::regex_replace(s, reg, "$1");
cout<<"the string after replace:"<<s<<endl;
--------------------------------------------------------
Thank You Very Much
真是回答了我的怀疑,看来以后不光要去想还要具体看看源码.虚心向你学习!
微软的文档写得清清楚楚啦,凡是创建窗口的线程必须谨慎使用该函数!
re: 《世界大战》《变形金刚》观后感 no_name 2007-12-21 17:00
基本同赞同。
尤其是"一:外星生物必须是人类理解的生命吗?"
re: boost::regex学习(5) no_name 2007-12-21 16:52
s = "Hello World ! GoodBye World\r\n \r\n ";
reg = "((\\w*.*)*)\\b([\\s\\r\\n\\t])*";
std::cout <<"regualar expression is"<<reg<<endl;
std::cout <<"the string before replace:"<<s<<endl;
s = boost::regex_replace(s, reg, "$1");
cout<<"the string after replace:"<<s<<endl;
你好,看了你的代码后对我帮助很大,但同时也发现了个很奇怪的问题。
在debug版本下面正常运行
但如果在release版本下,你的等待那个函数
while(TRUE)
{
DWORD result ;
MSG msg ;
result = MsgWaitForMultipleObjects(1, &readThreadHandle,
FALSE, INFINITE, QS_ALLINPUT);
if (result == (WAIT_OBJECT_0))
{
break;
}
else
{
PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
DispatchMessage(&msg);
}
}
好像就没起作用了。
我估计是不是函数的返回值有问题。。。不太清楚,希望你能帮忙看下,
谢谢!!
是你自己字线程本身代码有问题,不是WaitForSingleObject的错
for没办法退出,怎么WaitForSingleObject?
To zhcen
你的主线程不是一个UI线程吗?
我的建议是:在UI线程中等待某个事件发生一定使用MsgWaitForMultipleObjects,不要使用WaitForMultipleObjects。
来帮下忙吧! zhcen 2007-10-06 19:25
我要在主线程中开启一个UI线程,该UI线程查找某种设备,所以主线程要阻塞,一直到UI线程结束,我该怎么办呢
太感谢了,困扰我好几个礼拜的问题啊....
不过在WaitForSingleObject的第二个参数设置成一个数值也可以避免出问题,不过没有楼主的效果好~
我遇到了这样的错误 "fatal error c1083:cannot open include file 'windows.h',no such file file or directory" 一直解决不了,请教一下
SendMessage的目标窗口如果属于另一个线程,则会发生线程上下文切换,等待另一线程处理完成消息。为了防止另一线程当掉,导致SendMessage永远不能返回,我们可以调用SendMessageTimeout函数
直接把for(;;)去掉就可以了吧。那样while循环条件不成立时函数就返回了,WaitForSingleObject也就返回了。
re: 版本管理遇到的问题 zhangyiluo 2006-03-06 11:33
偶然发现你的问题,我也遇到这样问题,不过问题不是突现。
我认为解决的办法是:一,毕竟vss是小团队规模的版本库(公司级的我曾用过ccharvest)。分开成开发库和版本库,不同的文件夹当然权限就可以设定了。其次,配置管理员落实check in 工作,其实就是做“搬过来”的工作,要定时定制度。
二,分支能合并的,最好合并到主干上。另外,分支的功能遵守设计模式的“开闭原则”,既然分出去了就不要干扰主干。详细记录分支的理由。实际上,越往后越发现当初分支的理由可能是荒谬的。
console不会是因为他没有消息循环的原因吧。猜想你的程序可能是创建一个线程之后就让它在console停在那里了对吧,这是正常的,但是在有窗口消息的程序中就不行了。
我是一个初学者,有VC高手希望能交个朋友。
我的E-MAIL:puma-ly@163.com
To world
SendMessageA发送的消息确实不进入消息循环,但是这个过程是在主线程的上下文中完成的,还是在开的线程中完成的?
呵呵,有空再研究研究,或许原理还是有问题。
To wuzq
不知道你是如何做的测试,能够把测试代码贴出来吗?
您好!我对你写的内容好奇,于是我就按照你的做法在windows32的console程序,
并没有出现你说的事情,线程依然很好干了他该干的事。我想可能是你搞错了,导致死锁了吧。
hello world 2005-02-27 16:06
作者你好,
消息循环只负责获取消息队列中的消息 ,
SendMessageA的消息并不进入消息队列
谢谢,这个问题我找了很久了!! HXY 2004-09-17 11:38
谢谢你的文章!