游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2072|回复: 6

【求解】加上这段代码后运行,几秒后程序无响应

[复制链接]

1

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2008-12-27 18:57:00 | 显示全部楼层 |阅读模式
        case WM_SIZE:
                {
                       
HDC hdc = GetDC(hwnd);
            
int nwidth=LOWORD(lparam);

int nheight=LOWORD(lparam);
       
               
     while(msg!=WM_DESTROY)
    // draw some text at a random location
         {
   SetTextColor(hdc, RGB(rand()%256,rand()%256,rand()%256));

    // set the background color to black
    SetBkColor(hdc, RGB(0,0,0));

    // finally set the transparency mode to transparent
    SetBkMode(hdc, TRANSPARENT);
   
   TextOut(hdc,rand()%nwidth,rand()%nheight, L"GDI Text Demo!", wcslen(L"GDI Text Demo!"));
       
    Sleep(5);
         }
                ReleaseDC(hwnd,hdc);
                }

1

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2008-12-27 19:03:00 | 显示全部楼层

Re:【求解】加上这段代码后运行,几秒后程序无响应

补充下,这段代码加在LRESULT CALLBACK WindowProc()中无响应
             加在 WINAPI WinMain()创建窗口后无影响。

0

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2008-12-28 15:02:00 | 显示全部楼层

Re:【求解】加上这段代码后运行,几秒后程序无响应

当然没响应了!
WindowProc是来一个消息就被调用一次的,你那段代码把WindowProc直接死循环了,程序就没办法处理别的消息了啊

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2008-12-29 00:21:00 | 显示全部楼层

Re:【求解】加上这段代码后运行,几秒后程序无响应

正如楼上所说,你进了winproc就出不来了.

227

主题

1793

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
发表于 2008-12-29 13:05:00 | 显示全部楼层

Re:【求解】加上这段代码后运行,几秒后程序无响应

while(msg!=WM_DESTROY)

你还真敢这么写orz
WM_DESTROY是啥知道吧
这等于所有的消息都要处理一次
而且还是死循环

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2008-12-29 13:15:00 | 显示全部楼层

Re:【求解】加上这段代码后运行,几秒后程序无响应

while(msg!=WM_DESTROY)
{
.....
}

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2008-12-30 14:54:00 | 显示全部楼层

Re:【求解】加上这段代码后运行,几秒后程序无响应

运行这程序的时候,打开任务管理器,看看你的CPU,你就知道为什么没响应了。。。

楼主,你想实现的程序效果是不是不停地在窗体上,随机的地方,写出随机颜色的文本呢??

如果是,你可以下面两种方法任选其一:
1.把你WM_SIZE中间的所有代码加入一个TIMER中,同时把 “while(msg!=WM_DESTROY)”这一行注释掉
2.把你的这个代码依然放在 windowproc() 中,但是,要把你的 WM_SIZE 改成 WM_PAINT,同时把 “while(msg!=WM_DESTROY)”这一行注释掉

反正,“while(msg!=WM_DESTROY)”这个用得太猛了。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 14:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表