Изменение цвета строки заголовка в приложении mf c SDI - PullRequest
0 голосов
/ 25 февраля 2020

Я могу изменить цвет строки заголовка диалога следующим образом: -

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); Кто-нибудь может мне помочь, как решить то же самое, или если есть лучшее средство для этого. Я хотел бы изменить цвет строки заголовка, включая установку шрифта для заголовка строки, и кнопка закрытия также должна быть доступна

...