回 帖 发 新 帖 刷新版面

主题:怎样设置窗口框架的颜色?

响应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个回复)

沙发

首先,是FrameRect.
其次,你应该准确的描述到底是什么问题.
最后,确保你已经认真看过MSDN中这两部分的相关说明.

板凳

大概看了一下,应该DrawEdge可以....

3 楼

不行啊,实在不懂的了,我以前就是这样写:

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 楼

哈哈....
我最开始也犯了这个错误.屏幕坐标与客区坐标问题.
调用一句TextOut你就知道是怎么回事了.
hdc对象是通过传入的区域创建的.说简单点hdc操作的是通过消息参数传入的那个区域,所以当操作hdc,这个区域已经没有意义了.

5 楼

郁闷了,TextOut输不出任何东西....

6 楼

忘了一个最关键的.其实MSDN上的代码是不能正确的创建DC对象的.
GetDCEx的标志一定要改为DCX_PARENTCLIP不能为DCX_INTERSECTRGN,不然创建DC都不会成功.不信你试试.

7 楼

那岂不误人子弟?哪天到总部揍他总裁...哈哈

8 楼

你去.我支持你一张飞机票的钱............................的万分之一.

9 楼

看来不能偷懒的了,一切自己动手....画出来!!默认的限制多

10 楼

嘻嘻.....
微软可不是随便让大家改他自己的东东的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册