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

アプリケーションの実行時と同じように動作します。タブの子であるチェックボックスを設定または通知するにはどうすればよいですか? または、どうすれば問題を解決できますか

時間と経験をありがとう、Petr

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 に答える