vc api 可以在WM_CREATE 那里创建矩形吗

[复制链接]
查看11 | 回复2 | 2010-9-9 17:06:12 | 显示全部楼层 |阅读模式
case WM_CREATE:
hdc=GetDC(hwnd);
hb=(HBRUSH)GetStockObject(BLACK_BRUSH);
SelectObject(hdc,hb);
Rectangle(hdc,50,50,300,300);
ReleaseDC(hwnd,hdc);
DeleteObject(hb);
break;
运行程序时,并没有显示矩形,怎么回事。我不想在WM_PAINT里做

回复

使用道具 举报

千问 | 2010-9-9 17:06:12 | 显示全部楼层
绘制操作不能放在WM_CREATE消息中,这是因为:虽然发送该消息时,窗口已经创建,但该窗口的风格为SW_HIDE,GetDC()返回一个绘图区域为空的设备环境,因此屏幕上不会有矩形出现,应在WM_PAINT消息中,执行绘图操作。此时GetDC()返回一个绘图区域不为空的设备环境。应为窗口的显示风格已变为SW_SHOW。,其实在WM_CREATE消息中,系统不会执行任何绘制操作,而不是被显示出来的窗口刷没了!你可以尝试:case WM_CREATE: hdc=GetDC(hwnd); hb=(HBRUSH)GetStockObject(BLACK_BRUSH); SelectObject(hdc,hb); Rec
回复

使用道具 举报

千问 | 2010-9-9 17:06:12 | 显示全部楼层
....那你就在WM_ACTIVE里画吧WM_CREATE时,,,窗口还没show出来,,,等show出来后,,矩形已经被重刷复盖掉了。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行