第一个问题如何让窗口重绘
我的意思是 当点击客户区上的一个按钮 出现一个通用对话框(颜色)选取颜色之后 改变客户区的颜色   ChooseColor(&cc);
   SetClassLong(hwnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(cc.rgbResult));
   InvalidateRect(hwnd,NULL,TRUE);
   ValidateRect(hwnd,NULL);
这是当点击按钮之后运行的程序
可是为什么不好用呢? 第二个问题
BM_SETSTATE是什么消息
第三个问题
是《WINDOWS程序设计》对话框中的
SetDlgitemText(hwnd,VK_ESCAPE,szBuffer)我对其中的第2个参数有疑问
第一个参数是对话框句柄  第二个参数是标识带有将被设置的标题和文本的控件  第三个是要修改后的字符串但是这个第二个参数为什么是键盘码? ESC???

解决方案 »

  1.   

    InvalidateRect函数调用之后会给hwnd对应的窗口传递WM_PAINT消息,注意是Pose方式,而不是Send方式的。但是hwnd对应的窗口当前不是活动窗口,所以不会响应WM_PAINT消息,等到关闭对话框之后才会响应。要即时看到效果,在调用InvalidateRect函数之后,调用UpdateWindow函数,强制窗口响应WM_PAINT消息即可。