6

我正在向 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

当应用程序运行时,它的行为方式相同。我应该设置或告诉复选框它们是选项卡的子级?或者我该如何解决这个问题

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

4

1 回答 1

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;
}

更多信息在这里

我不知道您的 C++ 技能有多少,但您还必须在项目的 .h 文件中添加一些行以包含此 OnCtlColor 函数以及对话框 .cpp 文件的消息映射中的一些更改。

于 2013-01-29T01:46:31.767 回答