代码之家  ›  专栏  ›  技术社区  ›  user90150

C属性表和C属性页显示为白色

  •  0
  • user90150  · 技术社区  · 16 年前

    我创建了一个简单的propertysheet(cpropertysheet)和几个cpropertypage派生类。

    运行应用程序时,属性表、页和选项卡显示为白色。

    我原以为他们会像正常的寡妇对话颜色。

    是否有任何线索使属性页、页面背景与其他正常的mfc对话框一样出现?

    我使用不带.NET CLR的Visual Studio 2008 MFC。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Roel    16 年前

    “系统颜色”是什么意思?灰色(彩色)?你在开什么操作系统?如果xp属性表应该是彩色的,vista/win7我不知道什么是正确的颜色。如果不做任何特殊的操作,它们将以系统默认颜色显示。

        2
  •  0
  •   xjdrew    15 年前

    这是一个mfc错误。使用spy++监视你的应用程序,你会发现你的应用程序收到许多wm_getdlgcode消息,似乎进入了死循环。是的,这就是问题所在。

    微软已经发布了一个关于这个问题的prb。请查看: PRB: Child CPropertySheet Hangs If Focus Is Switched

    简而言之,将ws_ex_controlparent样式添加到属性表中。

       BOOL CMySheet::OnInitDialog()
       {
                 ModifyStyleEx (0, WS_EX_CONTROLPARENT);
                 return CPropertySheet::OnInitDialog();
       }
    
        3
  •  0
  •   Pierre Fournier    11 年前

    处理wm_ctlcolordlg消息。

    case WM_CTLCOLORDLG:
       {
          HDC hdc = (HDC)wParam;
          COLORREF color = GetSysColor(COLOR_3DFACE);
          SetBkColor(hdc, color);
          static HBRUSH brush = CreateSolidBrush(color);
          return (BOOL)brush;
       }
    
    推荐文章