none
如何获取对话框的背景颜色 RRS feed

  • 问题

  •               我原以为这个问题比较容易,没想到用了一系列的方法还没搞定。用过以下方法:

    1.

    GetClassLong(this-> GetSafeHwnd(), GCL_GCL_HBRBACKGROUND); // 返回值居然为0

    2.

    GetSysColor(COLOR_3DFACE)

      获取的值为一个白色,不是对话框背景那种灰色。

    3.

    CDC *pDC = GetDC();
    GetPixel(pDC->GetSafeHdc,0,0);
       
      获取的值为一个白色,不是对话框背景那种灰色。

    4.GetSysColor(COLOR_WINDOW);

      获取的值为一个白色,不是对话框背景那种灰色。


    前无古人,后无来者
    2010年7月26日 10:06

答案

  • GetSysColor(COLOR_3DFACE / COLOR_BTNFACE );
    就是默认的对话框的那种灰色的

    R: 212

    G: 208

    B: 200


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年3月7日 6:33
    版主
  • GetSysColor(COLOR_3DFACE / COLOR_BTNFACE );
    就是默认的对话框的那种灰色的

    R: 212

    G: 208

    B: 200


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    这种方法大多时候都不准,除非用的是windows标准窗口
    0xBAADF00D
    2011年3月27日 3:37
    版主

全部回复

  • 比较绕路的方法。。这个你可以通过GetDesktopWindow()然后对整个桌面进行截图,根据你的窗口的位置来GetPixel就可以获取颜色了。


    0xBAADF00D
    2011年3月4日 13:58
    版主
  • GetSysColor(COLOR_3DFACE / COLOR_BTNFACE );
    就是默认的对话框的那种灰色的

    R: 212

    G: 208

    B: 200


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年3月7日 6:33
    版主
  • GetSysColor(COLOR_3DFACE / COLOR_BTNFACE );
    就是默认的对话框的那种灰色的

    R: 212

    G: 208

    B: 200


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    这种方法大多时候都不准,除非用的是windows标准窗口
    0xBAADF00D
    2011年3月27日 3:37
    版主