社区
C++ 语言
帖子详情
我在VC。NET 下建了一个空窗体,什么都没干,却发现CPU使用100%,这是为什么啊
tigerlhp
2008-03-15 09:03:36
我在VC。NET 下建了一个空窗体,什么都没干,却发现CPU使用100%,这是为什么啊
...全文
115
10
打赏
收藏
我在VC。NET 下建了一个空窗体,什么都没干,却发现CPU使用100%,这是为什么啊
我在VC。NET 下建了一个空窗体,什么都没干,却发现CPU使用100%,这是为什么啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Pause_break
2008-03-18
打赏
举报
回复
getmessage和peekmessage都是获取消息队列里的消息;不同的是getmessage在获取不到对应的消息时程序会被操作系统挂起cpu就让给其它程序,而peekmessage在获取不到合适消息时并不把控制权马上交回去他会让自己的程序得以再执行一段时间。
Rainstorey
2008-03-17
打赏
举报
回复
peekmessage基本用在游戏程序中.一搬窗口就用GetMessage.
sniperhuangwei
2008-03-17
打赏
举报
回复
peek是不管有没有消息都会返回,
get在没有消息的时候被阻塞,有消息才返回.
不知道对不对啊,没在win上写过程序.
过去的我
2008-03-15
打赏
举报
回复
消息不是加在这里的啊,是回调函数中处理的,你用vc自动生成一个win32的helloworld程序看看就知道了
tigerlhp
2008-03-15
打赏
举报
回复
那我应该怎么写
count();
paint(hdc);
这两个函数应该放在什么地方好。
0黄瓜0
2008-03-15
打赏
举报
回复
if()
{...}
else
{...}
都这样了,有消息要处理消息,没消息要处理你的else块,自然要占完cpu了.
michney
2008-03-15
打赏
举报
回复
这个叫做busy waiting
tigerlhp
2008-03-15
打赏
举报
回复
// 主消息循环:
while (true)
{
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
tNow = GetTickCount();
int numT = 40 - tDur; //DWORD类型是无符号类型的
if(numT < 0) numT = 0;
if(tNow - tEnd >= numT || tNow - tEnd < 0)
{
tEnd = GetTickCount();
tDur = tEnd - tNow;
count();
paint(hdc);
}
}
}
我用以上消息循环就100的CPU处理,那消息循环有错吗
hastings
2008-03-15
打赏
举报
回复
恭喜你,编了个病毒程序..哈.哈..
tigerlhp
2008-03-15
打赏
举报
回复
照你说的做了。
/*
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
*/
用下面代码取代了上面的,立刻就100%的CPU使用。请教一下怎么回事?
DWORD tNow,tEnd,tDur;
while (true)
{
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
tNow = GetTickCount();
int numT = 40 - tDur; //DWORD类型是无符号类型的
if(numT < 0) numT = 0;
if(tNow - tEnd >= numT || tNow - tEnd < 0)
{
tEnd = GetTickCount();
tDur = tEnd - tNow;
//count();
//paint(hdc);
}
}
}
VC
界面之不规则
窗体
很不错的
一个
VC
不规则
窗体
实例,源码 【XP系统编译通过】
一个
用
VC
实现的透视投影演示程序
一个
透视投影的演示程序,含源代码,
VC
6工程文件。可以读取3ds文件,用线框显示。具体实现细节可以参考我的Blog。
vc
串口编程基础实例
AIP和控件的都有。可参考学习。是入门的好东西。关键是要动手做一下。
VC
++实现Vista玻璃
窗体
程序
VC
++实现Vista玻璃
窗体
程序
利用
VC
# 创作简单的多线程组件
利用
VC
# 创作简单的多线程组件
C++ 语言
65,176
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章