C++控制台程序怎样使主函数无限循环

如题... 如题 展开
 我来答
阿成饭19
2016-04-11 · 贡献了超过116个回答
知道答主
回答量:116
采纳率:0%
帮助的人:19.1万
展开全部
for(;;)和while(TRUE)都是无限循环,只有break或者return跳出

PeekMessage不会阻塞,最后一个参数传PM_NOREMOVE,不会将消息从队列取出,可以用于检测消息队列是否有消息。有时候,当我们使用全局变量之类的方式进行线程间交互,PeekMessage很有用。

比如你用一个全局变量BOOL bStop表示线程是否停止,主线程bStop设为TRUE就是通知工作线程结束
if(PeekMessage(&iMsg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&iMsg,NULL,0,0))
return iMsg.wParam;

TranslateMessage(&iMsg);
DispatchMessage(&iMsg);
}
else
{
if (bStop)
break;/*结束*/
}
追问:
我有一个程序是多线程,采用win32控制台程序编写,通过scoket对端口进行监听。
但是为了将程序最小化到托盘,采用了消息循环,但是不知道如何将监听的代码放到循环里,所以增加了一个线程专门用来监听。有没有更好的解决办法?
另外,消息循环放在主线程,对端口监听放在另一个线程里。采用上面哪个消息循环好。采用消息循环的目的是为了将窗口托盘化。
追答:
一般来说,你这种情况,主线程是界面线程,处理界面消息的,工作线程只用于网络相关操作,你的问题只在于主线程,如何能够响应界面上点了最小化按钮,是吧?

GetMessage后,取出了消息保存在iMsg中,DispatchMessage(&iMsg);会根据iMsg结构体保存的窗口句柄,去掉用对应的窗口消息处理函数,这个回调函数应该是你在注册窗口类时定义了的。在这个函数中,处理最小化消息。

最小化,是通过WM_SYSCOMMAND消息发送的,wParam等于SC_MINIMIZE时代表最小化
百度网友d4da770
2012-12-22 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:81.9万
展开全部
while(1)
{
//始终为真,一直循环。
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LicthDay
推荐于2016-05-15 · TA获得超过223个赞
知道小有建树答主
回答量:128
采纳率:100%
帮助的人:142万
展开全部
int main(void)
{
while(true)
{
printf("无限循环");
}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fancitron
2012-12-22
知道答主
回答量:34
采纳率:0%
帮助的人:14.9万
展开全部
while (1) { }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
濮方雅BX
2012-12-22 · TA获得超过4042个赞
知道大有可为答主
回答量:2482
采纳率:60%
帮助的人:2469万
展开全部
while(1)
for(;;)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式