VS2010:复选框在对话框中的白色选项卡上具有灰色背景。怎么解决?

时间:2012-09-13 12:01:30

标签: visual-studio-2010 visual-c++ user-interface

我正在为C ++应用程序添加一个新对话框(Visual Studio 2010)。我无法摆脱默认情况下放置在白色选项卡上的复选框的灰色背景:

Dialog being edited in the resource editor

.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

应用程序运行时的行为方式相同。我应该设置或告诉复选框他们是标签的子项?或者我该如何解决问题

感谢您的时间和经验,    彼得

1 个答案:

答案 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文件的消息映射中的一些更改。