0

カラー背景の標準 MFCCButtonチェックボックスは次のようになります。

チェックボックスの色にじみ ここに画像の説明を入力

グレーの余白をなくしたいのですが、消えません。コントロールのサイズをどのように設定しても、まだ表示されます。

に変更すると、次のようになりCMFCButtonます。

未チェック チェック済み

これでマージンが取り除かれますが、チェックマークがなくなりました。そのチェックマークが必要です。

チェックマークを付けてきれいな見た目にする方法はありますか?標準の画像セットを に渡すことを考えていましたが、CMFCControl::SetImage()それらを取得する方法がわかりません。私は自分ですべてを描くことができることを知っていますが、車輪の再発明は避けようとしています.

ここSOには同様の質問がたくさんあることは知っていますが、私が見つけた答えはどれも当てはまらないようです。私が見つけた最も近いものはこれでした:一度だけ:Windows APIで完全に透明なチェックボックス、ボタン、ラジオボタンなどを取得するにはどうすればよいですか?黒い背景ではありませんか? ; しかし、そこにある最初の答えは非常に不可解であり、2 番目の答えはやり過ぎのように見える大きなコードの塊です。

4

1 に答える 1

0

機能する簡単なものを見つけました:

ON_WM_CTLCOLOR()ダイアログのに追加した後MESSAGE_MAP、これをダイアログ クラスに追加しました。

HBRUSH MyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

    if (myCheckbox.m_hWnd == pWnd->m_hWnd) // myCheckbox is the problem control
    {
        pDC->SetBkMode(TRANSPARENT);
        hbr = reinterpret_cast<HBRUSH>(::GetStockObject(NULL_BRUSH));
    }

    return hbr;
}
于 2020-03-05T21:50:13.150 に答える