Simply follow these steps in order to change the color of the Edit control or Combobox control in ATL.
- Add a handler for WM_CTLCOLOREDIT
MESSAGE_HANDLER(WM_CTLCOLOREDIT, OnCtlColorEdit)
- Implementation of the handler, return the brush that you want to use to color the control
LRESULT OnCtlColorEdit(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { HDC hdcEdit = (HDC) wParam; // handle to display context HWND hwndEdit = (HWND) lParam; // handle to static control if (( hwndEdit == GetDlgItem(IDC_EDIT) || ( hwndEdit == GetDlgItem(IDC_COMBO)) { // m_hBrush is an instance variable that stores the // current Color brush. If this is the first time through // we need to create it. The brush is deleted in the destructor if ( m_hBrush == NULL ) m_hBrush = CreateSolidBrush( RGB(255,0,0) ) // Get the DC provided and set the appropriate attributes SetBkMode(hdcEdit, TRANSPARENT ); SetBkColor(hdcEdit, RGB(255,0,0)); // Return a handle to the brush HBRUSH far* hbr = (HBRUSH far*) m_hBrush; return ((DWORD) hbr); } return 0; }
History
Date Posted: August 3, 2000