개발공부/C++
[C++ MFC] 다이얼로그 배경색 변경, 그룹박스 배경 투명으로 변경
ssoyxon
2024. 4. 16. 15:38
다이얼로그 배경색 변경
ctrl + shift + X 로 클래스 마법사에 들어간다.
해당 클래스 → 메세지 → WM_ERASEBKGND 를 더블클릭하여 추가한다.
아래 코드를 추가한다.
// 다이얼로그 색 변경
BOOL CMultiClientChart::OnEraseBkgnd(CDC* pDC)
{
CRect rect;
GetClientRect(rect);
pDC->FillSolidRect(rect, RGB(0, 0, 0)); // 변경하고 싶은 색상 RGB색
return TRUE;
return CDialogEx::OnEraseBkgnd(pDC);
}
이렇게 하면 그룹박스 뒤에 선이 생긴다.
if (pWnd->GetDlgCtrlID() == IDC_STATIC_SENSOR_ID_SETTING || pWnd->GetDlgCtrlID() == IDC_STATIC_CLIENT_HIDDEN_SETTINIG
|| pWnd->GetDlgCtrlID() == IDC_GROUP_MOTION_POS_CAL || pWnd->GetDlgCtrlID() == IDC_GROUP_AUTOCAL
|| pWnd->GetDlgCtrlID() == IDC_STATIC_MANUAL_OFFSET1 || pWnd->GetDlgCtrlID() == IDC_STATIC_MANUAL_OFFSET2
|| pWnd->GetDlgCtrlID() == IDC_GROUP_LOAD_LOCAL_DATA || pWnd->GetDlgCtrlID() == IDC_STATIC_SUMMARY_DATA_EDGE
|| pWnd->GetDlgCtrlID() == IDC_GROUP_AUTO_EDGE_SEARCH || pWnd->GetDlgCtrlID() == IDC_STATIC_DATA_SIMUL
|| pWnd->GetDlgCtrlID() == IDC_STATIC_DEV_MODE || pWnd->GetDlgCtrlID() == IDC_STATIC_CAL
|| pWnd->GetDlgCtrlID() == IDC_STATIC_MEMO
)
{
pDC->SetBkColor(COLOR_SETTING);
//pDC->SetBkMode(TRANSPARENT); //그룹 박스는 이거 해주면 안됨
pDC->SetBkMode(OPAQUE);
pDC->SetTextColor(COLOR_BLACK);
return(HBRUSH)GetStockObject(NULL_BRUSH);
}
else if (nCtlColor == CTLCOLOR_STATIC) {
pDC->SetBkColor(COLOR_SETTING);
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(COLOR_BLACK);
return(HBRUSH)GetStockObject(NULL_BRUSH);
}
해당 그룹박스 아이디를 우선순위로 if로 조건을 주고 배경을 투명하게 주고
나머지 static들은 else if로 넣어서 배경색을 넣어준다.
끝~~~