0

2つのCeditと1つのCComboboxがあります。

アンダーコードが表示されます。テキストの色を黄色に設定しました。

次に、透明なテキストの背景と透明な背景を使用します。

Ceditでは完全に正常に機能します(何かを入力するときの変更は気にしません)。

しかしpDC->SetBkMode(TRANSPARENT);、CComboboxには何もしないことに気づきました。

透明な背景を実現するためにCComboBoxをサブクラス化することは本当に望んでいません。

または、drawitemを使用する必要がありますか?

HBRUSH CValueInputDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  
{  
    HBRUSH hBrush = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);  
    if (nCtlColor == CTLCOLOR_EDIT)  
    {  
        pDC->SetBkMode(TRANSPARENT);  
        pDC->SetTextColor(RGB(255, 255, 0));  
        hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);  
    }  
    return hBrush;  
}
4

1 に答える 1

2

サブクラス化するか、さらに作業を行わないと、良い結果が得られないと思います。MFCの透過的な制御は簡単なことではありません。

とにかく、コンボのドロップダウンリストで透明な背景を取得したい場合は、CTLCOLOR_EDITの代わりにCTLCOLOR_LISTBOXを使用する必要があります。そして、ドラウダウンボタンのCTLCOLOR_BTN。

于 2012-08-17T06:41:30.980 に答える