WM_CTLCOLORSTATIC und ListView
-
Warum zeichnest Du in WM_CTLCOLORSTATIC??? Da gehört das nicht hin!
-
Das mache ich damit die Radiobuttons einen durchsichtigen Hintergrund haben, bzw den gleichen Hintergrund wie das Parent. Wenn nicht so, wie soll ich das dann machen?
-
Das mit dem durchsichtigen Hintergrund hab ich kapiert. Aber: WARUM zeichnest Du da??????
-
Ich zeichne das Bitmap das auch auf dem Parent ist in den Radiobutton, damit es aussieht als würde er durchsichtig sein!!! Wo sollte ich es den deiner Meinung nach zeichnen ohne das ich ein Full Ownerdraw Button machen muss? Oder gibt es irgendeinen anderen Weg das zu machen ohne zu zeichnen, wenn ja, welchen?
-
Warum zeichnest Du nicht im "Window"?
Schau Dir mal das hier an:
http://www.codeproject.com/Articles/18967/Bitmap-Backgrounds-For-Dialog-Boxes
-
Das bitmap zeichne ich ja auf das parent in WM_PAINT, und hbmMem ist dan das bitmap das bei dem WM_PAINT rauskommt. Ich mache doch so wie der codeproject link, oder nicht? Und die radiobuttons sind ja auch durchsichtig, ich habe nur das Problem mit der Listview!
-
In dem Beispiel
1. wird in OnEreaseBackground gezeichnet
2. wird in CtrlColor den DC auf Transparent gesetzt und der HOLLOW_BRUSH zurückgegeben und *nichts* gezeichnet...Quote:
HBRUSH CMyDlg::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->GetDlgCtrlID() == IDC_STATIC_MESSAGE) { CRect rect; pWnd->GetClientRect(&rect); pDC->FillSolidRect(&rect, RGB(255,255,255)); hbr = (HBRUSH)::GetStockObject(HOLLOW_BRUSH); pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0,0,0)); } return hbr; }
-
Das heist ich muss alle subclassen und wm_erasebkgnd abfangen?
-
Nur im Dialog (Hauptfenster)... ladt Dir doch mal das Codeproject Beispiel runter...
-
Ich habs mir schon heruntergeladen, aber die radiobuttons werden nicht durchsichtig.
so sieht jetzt mein WM_ERASEBKGND aus:case WM_ERASEBKGND: { HDC hdc = CreateCompatibleDC((HDC)wParam); RECT rc; GetWindowRect(hWnd,&rc); HBITMAP hbmOld = (HBITMAP)SelectObject(hdc, hbmMem); BitBlt((HDC)wParam, 0, 0, rc.right, rc.bottom, hdc, 0, 0, SRCCOPY); SelectObject(hdc, hbmOld); return 1; }