이것때문에 몇번을 고생했는지 모른다. MFC Dialog를 이용할때 프로그램이 시작될때 OnPaint 부분에 초기값을 설정해놓으면 Color를 변경할수 있다.
참고로 여러 색상을 이용하기 위해 color.h 헤더파일을 만들어서 색상을 미리 정의 하였다.
color.h
#define RED RGB(127, 0, 0) #define GREEN RGB( 0,127, 0) #define BLUE RGB( 0, 0,127) #define LIGHTRED RGB(255, 0, 0) #define LIGHTGREEN RGB( 0,255, 0) #define LIGHTBLUE RGB( 0, 0,255) #define BLACK RGB( 0, 0, 0) #define WHITE RGB(255,255,255) #define GRAY RGB(192,192,192)
Dlg.cpp
void CMFCVIEWERDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트입니다. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다. int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 아이콘을 그립니다. dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); /*CDC* p = m_View.GetWindowDC(); p->SetBkColor(BLACK_BRUSH); on p->Rectangle(200, 100, 300, 200);*/ CRect rect; GetClientRect(&rect); CBrush myBrush(LIGHTRED); // dialog background color <- 요기 바꾸면 됨. CDC* pDC = m_View.GetWindowDC(); CBrush *pOld = pDC->SelectObject(&myBrush); BOOL bRes = pDC->PatBlt(0, 0, rect.Width(), rect.Height(), PATCOPY); pDC->SelectObject(pOld); // restore old brush } } <
결과.
'Programming > C & C++' 카테고리의 다른 글
[MFC] Dialog 에 Menu 추가 (0) | 2019.07.04 |
---|---|
[MFC] MFC Dialog Backgroud Color (0) | 2019.07.03 |
[C++] Console 기반 학생관리프로그램 (0) | 2018.02.23 |
[C++] Bingo Game ver.3 ( AI Ver ) (0) | 2018.02.21 |
[C++] Bingo Game ver.2 (0) | 2018.02.20 |