关于消息和DC,SetTextColor的求助

老灰狼 2012-04-12 03:53:23
一个完整的消息是不是分为UINT message, WPARAM wParam, LPARAM lParam,这三个部分?
比如,按键还是鼠标消息,按下那个键?是哪个参数决定.
刚学win32api
想看看修改字体颜色的函数效果和用法
所以在WM_CREATE处理里面
hdc = GetDC (hwnd) ;
SetTextColor(hdc,RGB(0,255,255));
可是运行后文字颜色没有改变;
我又在WM_PAINT处理时添加了
hdc = BeginPaint (hwnd, &ps) ;
SetTextColor(hdc,RGB(0,255,255));
这时才会改变字体颜色,想问一下,
窗口接收到的第一个消息不应该是CREATE么?
为什么我在这里修改不行?
在个问题就是,虽然CREATE里对DC释放了.
PAINT时再次获取就成了修改前的DC了么?
为什么不会保存修改后的呢?

...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
老灰狼 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

如果窗口类不指定CS_OWNDC,则GetDC,BeginPaint获取的是系统缓存的公用dc,每次获取时都会初始化成缺省值,所以ReleaseDC后修改的属性不保留
要加快绘制速度,为窗口类指定CS_OWNDC,窗口创建时就为其准备好专用的dc,这个dc由GetDC,BeginPaint获取时不会改成缺省值,修改的属性可保留,无需ReleaseDC,并且句柄值可以保存,后面再用时无需GetD……
[/Quote]
对我第二个问题的回答一针见血!太棒了
老灰狼 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

比如,按键还是鼠标消息,按下那个键?是哪个参数决定.
得看具体的消息,msdn

为什么不会保存修改后的呢?
SelectObject
[/Quote]
比如WM_CHAR消息,时WParam, LPARAM分别有什么用?
Lactoferrin 2012-04-12
  • 打赏
  • 举报
回复
如果窗口类不指定CS_OWNDC,则GetDC,BeginPaint获取的是系统缓存的公用dc,每次获取时都会初始化成缺省值,所以ReleaseDC后修改的属性不保留
要加快绘制速度,为窗口类指定CS_OWNDC,窗口创建时就为其准备好专用的dc,这个dc由GetDC,BeginPaint获取时不会改成缺省值,修改的属性可保留,无需ReleaseDC,并且句柄值可以保存,后面再用时无需GetDC
ouyh12345 2012-04-12
  • 打赏
  • 举报
回复
比如,按键还是鼠标消息,按下那个键?是哪个参数决定.
得看具体的消息,msdn

为什么不会保存修改后的呢?
SelectObject

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧