VS 2019 기준 MFC 라디오 버튼 배경색과 텍스트 색 변경하는 방법을 알아보겠습니다.
Button 생성
[리소스뷰] -> [Dialog] -> [도구상자]-> [Radio Button] 클릭하여 버튼 생성합니다.
Button의 ID 변경
라디오 버튼의 caption과 ID를 원하는대로 변경합니다.
저는 caption은 ON으로 ID를 IDC_RADIO_ON으로 변경하였습니다.
Radio Button 배경색 및 텍스트 색상 변경
라디오 버튼의 배경과 텍스트 색상을 변경하기위해 메인 dialog에 아래의 구문을 작성합니다.
BOOL CMainDlg::OnInitDialog()
{
::SetWindowTheme(GetDlgItem(IDC_RADIO_ON)->GetSafeHwnd(), L"wstr", L"wstr");
// ...
}
이후 [Ctrl+shift+x]를 눌러서 클래스 마법사를 켭니다.
클래스 마법사에서 메시지란에 ctl을 누르면 WM_CTLCOLOR 메시지 함수가 뜹니다.
해당 메시지 함수는 여러 컨트롤이 그려질 때 나타나는 메시지 입니다.
해당 메시지를 더블클릭하여 OnCtlColor 함수를 추가합니다.
이후 라디오 버튼의 배경 색상 및 텍스트 색상을 변경하는 코드를 아래와 같이 작성합니다.
BOOL CMainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 여기서 DC의 특성을 변경합니다.
switch (pWnd->GetDlgCtrlID())
{
case IDC_RADIO_ON: // 변경할 라디오 버튼의 ID
pDC->SetTextColor(RGB(255, 255, 255)); // 글자 색 변경
pDC->SetBkMode(TRANSPARENT);
// 브러쉬를 만드는 변수나 초기화 부분은 클래스 전역변수로 OnInitDialog()에서 초기화 하는 것이 더 좋습니다.
CBrush cbr;
cbr.CreateSolidBrush(RGB(50, 50, 50)); // 배경 색 변경
hbr = (HBRUSH)cbr; // 배경 색 적용
}
return hbr;
}
이 후 다이얼로그를 실행해봄면 라디오버튼의 배경색과 글자색이 변경된 것을 확인할 수 있습니다.
[Reference]
https://stackoverflow.com/questions/31854015/changing-win32s-radio-button-text-color
'Programming > MFC' 카테고리의 다른 글
[MFC] mfc 버튼에 배경색 없는 아이콘 넣기 (vs 2019) (0) | 2024.12.28 |
---|---|
[MFC] 버튼 눌러서 윈도우 파일탐색기 열기 (vs 2019) (0) | 2024.12.16 |
[MFC] 엑셀 파일 읽기 (vs2019) (0) | 2024.08.06 |
[MFC] mfc 버튼 배경색 및 텍스트 색상 변경하기 (vs 2019) (0) | 2024.04.02 |