나는 CButton을 사용하여 소유자가 그려진 체크 상자를 만들려고하지만, 텍스트 색상 만 바꾸고 싶으므로 체크 상자 표시를 그대로 유지하고 싶습니다.기본 확인란 이미지를 얻으려면 어떻게해야합니까?
프로그램이 실행되는 플랫폼의 기본 확인란 비트 맵을 검색 할 수있는 명령이 있습니까?
는 (또는 : 어떻게 체크 박스 표시를 보존, 텍스트 만의 색상을 변경할 수 있습니다?)
나는 CButton을 사용하여 소유자가 그려진 체크 상자를 만들려고하지만, 텍스트 색상 만 바꾸고 싶으므로 체크 상자 표시를 그대로 유지하고 싶습니다.기본 확인란 이미지를 얻으려면 어떻게해야합니까?
프로그램이 실행되는 플랫폼의 기본 확인란 비트 맵을 검색 할 수있는 명령이 있습니까?
는 (또는 : 어떻게 체크 박스 표시를 보존, 텍스트 만의 색상을 변경할 수 있습니다?)
UxTheme.dll을 사용하여 사용자 정의 확인란을 그립니다.
먼저 내가 체크 박스 마크 사용 그릴 : DrawThemeBackground 그것을 수정하는 구형을 전달 (checkboxRect.right = pCustomDraw-> rc.left + 15)
그리고 나 자신이 사용하여 텍스트를 그릴 :: DrawText.
도움이되기를 바랍니다.
는 당신의 최선의 전략은 OnCtlColor 핸들러를 오버라이드 (override)하는 것입니다 :
BEGIN_MESSAGE_MAP(CBaseDialog, CDialog)
{
ON_WM_CTLCOLOR()
}
HBRUSH CXXX:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hBkgrBrush= CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetTextColor(RGB(255,0,0)); // red
pDC->SetBkMode (TRANSPARENT);
return hBkgrBrush;
}
참조 http://msdn.microsoft.com/en-us/library/0wwk06hc(VS.80).aspx|
텍스트 색상 만 변경하려는 경우 포함 대화 상자에서 OnCtlColor
에 대한 핸들러를 구현하십시오. 이처럼 :
HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd->GetDlgCtrlID() == IDC_CHECK_BOX) //check for your check box control ID
{
pDC->SetTextColor(RGB(255,0,0));
}
return hbr;
}
이 일반 푸시 버튼에없는 작동을 조심하지만, 체크 박스에 대한 아무 문제가 없어야합니다. 소유자가 그린 컨트롤을 구현할 필요가 없습니다.
는
편집 : 당신은 확인해야
, 당신의 체크 박스는 BS_AUTOCHECKBOX
스타일을 사용합니다. BS_OWNERDRAW
스타일이 설정되지 않았는지 확인하십시오.
편집 # 2 : DFCS_BUTTONCHECK와 DrawFrameControl()는 기본 확인란 비트 맵을 그릴 수있게된다.
그 작품, 게다가 그 CMFCVisualManager :: GetInstance() -> DrawCheckBox 똑같은 않습니다 알아 냈어. – djeidot
문제를 해결할 수 있다는 점을 잘 알고 있습니다! –
그래, 텍스트 색상을 변경하는 작업은 여전히 많이 있지만 그래도 ... – djeidot