[C++] Đổi màu Editbox trong MFC?

Chào mọi người,

Mình đang có một vấn đề, mọi người cùng tìm giải pháp :smile:

Trong dialog MFC của mình, khi dialog đã hiện lên, mình muốn click vào 1 button thì cùng 1 lúc màu của vài (giả sử là 10) Editbox sẽ thay đổi.

Mình tìm hiểu, thì trong MFC họ dùng OnCtlColor. Tuy nhiên, để SetTextColor và SetBackColor cho 10 Editbox thì cần tới 20 biến members để set màu cho Editbox.

COLORREF m_TextColor, m_BkColor; //in header file.
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    Switch (pWnd)
    Case: IDC_EDIT_1:
        // TODO: Change any attributes of the DC here
    pDC->SetBkColor(m_BkColor1);
    pDC->SetTextColor(m_TextColor1);
    Case IDC_EDIT_2:
    pDC->SetBkColor(m_BkColor2);
    pDC->SetTextColor(m_TextColor2);
    ....
        // TODO: Return a different brush if the default is not desired
    return hbr;
}

Vậy có cách nào để thực hiện việc trên tối ưu hơn không?

Thanks,

AnhNT

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?