asteroid |
опубликован 04-12-2001 14:20 MSK
Каким образом можно изменить цвет окна CDialogBar и цвет рамки (CFrameWnd) в SDI,можнт кто подскажет. Я пробовал для CDialogBarHBRUSH CNewBar::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); pDC->SetTextColor(RGB(35, 18, 122)); pDC->SetBkColor(RGB(172, 13, 155)); } return hbr;} но ничего не меняется, а для рамки пробовал BOOL CMainFrame::OnEraseBkgnd(CDC* pDC) { CBrush* pOldBrush = pDC->SelectObject(&backBrush); CRect rect; pDC->GetClipBox(&rect); pDC->PatBlt(rect.left, rect.top, rect.Wid(), rect.Height(), PATCOPY); pDC->SelectObject(pOldBrush); return TRUE; return CFrameWnd::OnEraseBkgnd(pDC); } но цвет не меняется может кто подскажет как быть.
|
DmitryRyvkin
|
опубликован 04-12-2001 21:17 MSK
Что касаемо рамочки, то она относится к неклиенту, и ее надо рисовать OnNcPaint (отключите фильтр для фрейма а то не увидите WM_NCPAINT)void CMainFrame::OnNcPaint() { CFrameWnd::OnNcPaint(); CRect rect; CWindowDC dc (this); GetWindowRect (&rect); rect.OffsetRect (- CPoint (rect.left, rect.top)); dc.FillSolidRect (rect.left, rect.bottom - 3, rect.Width (), 3, RGB (0,0,0)); } Тут заморочка с координатами, разберетесь. Также обработайте WM_NCACTIVATE Кстати так можно делать кнопочки на Caption' е А вот что касается фона диалога (и диалогбара иже с ним) то вот его то и надо OnEraseBkg. Только выбирать в pDC ничего не надо, просто рисуйте на нем ( ну ессно не вызывать родной, впрочем вы и не вызываете)
|