主题:怎样设置窗口框架的颜色?
InitInstance
[专家分:8720] 发布于 2006-05-09 23:36:00
响应WM_NCPAINT消息后怎么设置呢?
用FramRect()好象不行啊,大虾不吝指教啊;
我这样写:
case WM_NCPAINT://在这里画边框颜色
HDC hdc;
hdc = GetDCEx(hwnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN);
// Paint into this DC
//在这里怎么画边框颜色?用FramRect()?
ReleaseDC(hwnd, hdc);
return 0;
回复列表 (共14个回复)
沙发
aaronwang [专家分:16870] 发布于 2006-05-10 08:44:00
首先,是FrameRect.
其次,你应该准确的描述到底是什么问题.
最后,确保你已经认真看过MSDN中这两部分的相关说明.
板凳
InitInstance [专家分:8720] 发布于 2006-05-10 12:33:00
大概看了一下,应该DrawEdge可以....
3 楼
InitInstance [专家分:8720] 发布于 2006-05-11 10:46:00
不行啊,实在不懂的了,我以前就是这样写:
case WM_NCPAINT://在这里画边框颜色
{
HDC hdc;
HBRUSH hbr;
hdc = GetDCEx(hwnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN);
hbr=CreateSolidBrush(RGB(20,20,30));
SelectObject(hdc,hbr);
FillRgn(hdc, (HRGN)wParam, hbr);
DeleteObject(hbr);
ReleaseDC(hwnd, hdc);
}
是不是规定窗口是自绘的才行啊????望大虾指教指教啊
4 楼
aaronwang [专家分:16870] 发布于 2006-05-11 13:07:00
哈哈....
我最开始也犯了这个错误.屏幕坐标与客区坐标问题.
调用一句TextOut你就知道是怎么回事了.
hdc对象是通过传入的区域创建的.说简单点hdc操作的是通过消息参数传入的那个区域,所以当操作hdc,这个区域已经没有意义了.
5 楼
InitInstance [专家分:8720] 发布于 2006-05-11 13:32:00
郁闷了,TextOut输不出任何东西....
6 楼
aaronwang [专家分:16870] 发布于 2006-05-11 14:13:00
忘了一个最关键的.其实MSDN上的代码是不能正确的创建DC对象的.
GetDCEx的标志一定要改为DCX_PARENTCLIP不能为DCX_INTERSECTRGN,不然创建DC都不会成功.不信你试试.
7 楼
InitInstance [专家分:8720] 发布于 2006-05-11 14:37:00
那岂不误人子弟?哪天到总部揍他总裁...哈哈
8 楼
aaronwang [专家分:16870] 发布于 2006-05-11 15:37:00
你去.我支持你一张飞机票的钱............................的万分之一.
9 楼
InitInstance [专家分:8720] 发布于 2006-05-11 15:46:00
看来不能偷懒的了,一切自己动手....画出来!!默认的限制多
10 楼
aaronwang [专家分:16870] 发布于 2006-05-11 16:51:00
嘻嘻.....
微软可不是随便让大家改他自己的东东的.
我来回复