검색결과 리스트
글
윈도우의 일반적인 컨트롤은 기능에 중점을 준것이기 때문에
모양새가 별로이다.
그럴때 색상을 변경할때 많이 사용하는게 WM_CTRCOLOR 이다.
static, Edit의 배경색을 바꿀때 요긴하다.
WM_CTLCOLOR 메세지는 컨트롤의 부모가 받는다.
조건 : 바꾸고자 하는 Edit의 ID --> IDC_EDIT_USERID
컨트롤의 부모는 --> CDemoDlg
1. 부모인 CDemoDlg의 WM_CTLCOLOR을 등록한다.
2. 메세지 핸들러를 클래스 위져드로 등록하면 컨트롤의 부모는
HBRUSH CDemoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // 새로 작성한 부분 if ( pWnd->GetDlgCtrlID() == IDC_EDIT_USERID ) { pDC->SetBkColor( RGB(249, 225, 155) ); pDC->SetBkMode( OPAQUE ); return m_brText; } // TODO: Return a different brush if the default is not desired return hbr; }
특이한것은 변경하고자 하는 컨트롤의 리턴 HBRUSH는 hbr과 다른 것을
리턴해야 한다.
그렇지 않고 그냥 return hbr 을 리턴하면 색상이 변경되지 않는다.
ps. m_brText는 CBrush로 생성자에서 m_brText.CreateSolidBrush( RGB(249, 225, 155) )로
생성해줬습니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[VC++ 6.0] warning C4013: 'XXXXX' undefined; assuming extern returning int (0) | 2008.06.24 |
---|---|
[MFC] CListCtrl의 SetExtendedStyle(LVS_EX_FULLROWSELECT) (0) | 2008.06.09 |
[MFC] 팝업메뉴 활성/비활성 시키기 (0) | 2008.04.30 |
[MFC] Dialog와 FormView의 초기화 위치 (0) | 2008.04.22 |
[MFC] SS_NOTIFY와 Reflection Message (0) | 2008.03.24 |
RECENT COMMENT