我正在为C ++应用程序添加一个新对话框(Visual Studio 2010)。我无法摆脱默认情况下放置在白色选项卡上的复选框的灰色背景:
.rc文件中的相关文本如下:
IDD_ExportHTML DIALOGEX 164, 128, 292, 136
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
LTEXT "statFileName0",102,9,9,59,8
LTEXT "statFileName",101,9,20,190,8
CONTROL "",150,"SysTabControl32",TCS_RAGGEDRIGHT,11,38,201,92
DEFPUSHBUTTON "btnOK",IDOK,241,97,45,15
PUSHBUTTON "btnCancel",IDCANCEL,241,115,45,15
CONTROL "chboxLines",106,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,71,135,12
CONTROL "chboxBackground",107,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,84,135,12
CONTROL "chboxPaging",108,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,98,135,12
END
应用程序运行时的行为方式相同。我应该设置或告诉复选框他们是标签的子项?或者我该如何解决问题
感谢您的时间和经验, 彼得
答案 0 :(得分:5)
做这样的事情:
HBRUSH CYourDialogHere::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = (HBRUSH)m_brush;
CWnd *pCheckBox = GetDlgItem(IDC_CHECK1); // put ID of your checkbox here.
if (*pCheckBox == *pWnd)
{
pDC->SetBkColor(RGB(255, 0, 0));
}
else
hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
更多信息是here
我不知道您的C ++技能有多少,但您还必须在项目的.h文件中添加一些行以包含此OnCtlColor函数以及对话框.cpp文件的消息映射中的一些更改。