我创建了一个简单的propertySheet(CPropertySheet)和几个CPropertyPage派生类。
在运行应用程序时,ProperySheet,Page和标签显示为白色。
我期待它们像普通的寡妇对话颜色一样。
有关制作属性表的任何线索,页面背景与其他正常的MFC对话框一样会出现吗?
我使用不带.NET CLR的Visual Studio 2008 MFC。
答案 0 :(得分:1)
你的意思是'系统颜色'?灰色(COLOR_BTNFACE)?你在用什么操作系统?如果XP属性表应该在COLOR_BTNFACE,Vista / Win7我不知道什么是正确的颜色。如果您不做任何特殊操作,它们将以系统默认颜色显示。
答案 1 :(得分:0)
这是一个MFC错误。使用间谍++监视器你的应用程序,你会发现你的应用程序收到许多WM_GETDLGCODE消息,似乎进入一个死循环。是的,这就是问题所在。
微软已经针对这个问题发布了PRB。请查看:PRB: Child CPropertySheet Hangs If Focus Is Switched
简而言之,将WS_EX_CONTROLPARENT样式添加到PropertySheet。
BOOL CMySheet::OnInitDialog()
{
ModifyStyleEx (0, WS_EX_CONTROLPARENT);
return CPropertySheet::OnInitDialog();
}
答案 2 :(得分:0)
处理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;
}