Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- SetThreadAffinityMask
- 사용자매크로
- Jetson Nano
- Thread
- inspiron 15 7590
- 환경변수
- 인스피론
- 가벼워
- MFC
- VisualStudio
- 여객선
- 영상처리
Archives
- Today
- Total
MuTa
[MFC] 버튼 색상 변경 본문
출처 http://452345236123123124.tistory.com/entry/MFC-%EB%B2%84%ED%8A%BC-%EC%83%89%EC%83%81-%EB%B3%80%EA%B2%BD
1. Button의 Owner Draw 속성을 True로 변경
2. .h 파일에 afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct); 함수 추가
3. .cpp 파일에 BEGIN_MESSAGE_MAP(CTextDlg, CDialog) 메세지 맵에 ON_WM_DRAWITEM() 이벤트 추가
4. .cpp 파일에 void CTextDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 함수 내용 추가
void CTextDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { // nIDCtl = IDC값 if ((nIDCtl == IDC_BUTTON1)) { CDC dc; RECT rect; dc.Attach(lpDrawItemStruct -> hDC); //버튼의 dc구하기 rect = lpDrawItemStruct->rcItem; //버튼영역 구하기 dc.Draw3dRect(&rect,RGB(255,255,255),RGB(0,0,0)); //버튼의 외각선 그리기 dc.FillSolidRect(&rect,RGB(51,51,51)); //버튼색상 UINT state = lpDrawItemStruct-> itemState; //버튼상태구하기 if((state &ODS_SELECTED)) { dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT); } else { dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT); } dc.SetBkColor(RGB(51,51,51)); //text의 백그라운드 색상 dc.SetTextColor(RGB(255,255,255)); //texttort TCHAR buffer[MAX_PATH]; //버튼의 text를 얻기위한 임시버퍼 ZeroMemory(buffer,MAX_PATH); //버퍼초기화 ::GetWindowTextA(lpDrawItemStruct->hwndItem,buffer,MAX_PATH); //버튼의 text얻기 dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE); //버튼의 text넣기 dc.Detach(); //버튼의 dc 풀어주기 } CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct); }
[결과 화면]
'MFC-C++' 카테고리의 다른 글
3차원 vector c++11 (0) | 2016.05.11 |
---|---|
CString Parsing (0) | 2016.05.11 |
폴더내 파일 리스트 가져오기 (0) | 2016.03.30 |
Std:bitset 활용 (0) | 2016.03.30 |
Std::vector Sort (0) | 2016.03.30 |