검색결과 리스트
글
윈도우의 일반적인 컨트롤은 기능에 중점을 준것이기 때문에
모양새가 별로이다.
그럴때 색상을 변경할때 많이 사용하는게 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