Я могу изменить цвет строки заголовка диалога следующим образом: -
void CactiveSampleDlg::OnNcPaint()
{
CDC* pDC = GetWindowDC();
CRect CapRct;
GetWindowRect(&CapRct);
long myFillColour = RGB(200, 0, 0);
long myTextColour = RGB(0, 0, 0);
int x1 = GetSystemMetrics(SM_CXDLGFRAME);
int y1 = GetSystemMetrics(SM_CYDLGFRAME);
int x2 = CapRct.Width() - GetSystemMetrics(SM_CXDLGFRAME);
int y2 = GetSystemMetrics(SM_CYICON) - GetSystemMetrics(SM_CYDLGFRAME) - GetSystemMetrics(SM_CYBORDER);
CapRct.left = x1;
CapRct.top = y1;
CapRct.right = x2;
CapRct.bottom = y2;
pDC->FillSolidRect(&CapRct, myFillColour);
CFont* pCurFont = GetFont();
LOGFONT lf;
pCurFont->GetLogFont (&lf);
lf.lfItalic = TRUE;
lf.lfWeight = FW_NORMAL;
lf.lfWidth = 12;
lf.lfHeight = 18;
strcpy(reinterpret_cast<char*>(lf.lfFaceName) ,"Veranda");
CFont capfont ;
capfont.CreateFontIndirect (&lf);
pCurFont = pDC->SelectObject (&capfont);
pDC->SetBkMode (TRANSPARENT);
pDC->SetTextColor (GetSysColor(COLOR_CAPTIONTEXT));
pDC->DrawText (_T("<Dialog Text>"), &CapRct, DT_CENTER | DT_VCENTER);
}
Но когда я применяю то же самое в приложении SDI, он выдает ошибку утверждения pCurFont-> GetLogFont (& lf); Кто-нибудь может мне помочь, как решить то же самое, или если есть лучшее средство для этого. Я хотел бы изменить цвет строки заголовка, включая установку шрифта для заголовка строки, и кнопка закрытия также должна быть доступна