Как получить изображения по умолчанию для флажков?
Я пытаюсь создать флажок, нарисованный владельцем, используя CButton, но, поскольку я хочу изменить только цвет текста, я бы хотел, чтобы флажки флажка оставались прежними.
Есть ли команда, которая позволяет мне получать растровые изображения флажка по умолчанию для платформы, на которой работает программа?
(альтернативно: как я могу изменить только цвет текста, сохранив флажки флажков?)
4 ответа
Я использую UxTheme.dll, чтобы нарисовать свой флажок.
Сначала я рисую флажки с помощью: DrawThemeBackground, передавая ему измененный прямоугольник (checkboxRect.right = pCustomDraw->rc.left + 15;)
А потом я рисую текст самостоятельно, используя::DrawText.
Я надеюсь, что это помогает.
Ваша лучшая стратегия - переопределить обработчик OnCtlColor:
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: DrawFrameControl () с DFCS_BUTTONCHECK позволит вам рисовать растровые изображения флажка по умолчанию.
Чтобы получить изображения флажка системы Windows (который я думаю, что спросили):
LoadBitmap(0,OBM_CHECKBOXES);
вернет дескриптор растрового изображения к растровому изображению 4x3 всех флажков (включает переключатели, а также включен и отключен)