transparenter button
-
habs mir mal durchgelesen.
es hilft aber nicht sonderlich.kann ich nicht irgentwie an die buttonclass rankommen um die hintergrundfarbe auf "NULL" zu setzen?
das würde alle probleme auf einmal lösen.
-
ich wollte das das aussehen am ende dem eines "links" in html ähnelt.
-
Wieso hat dir der Beitrag nicht geholfen
1.) Du kannst wie dort beschrieben ein Static nehmen und den Mausklick abfangen
2.) Du subclasst den Button
3.) Du erstellst eine komplett eigene Fenster-Klasse, die dein gewünschtes Verhalten und aussehen besitzt
-
ich versuchs jetzt mit:
case WM_CTLCOLORSTATIC:
SetTextColor((HDC)wParam,RGB(255,255,255));
SetBkMode((HDC)wParam,TRANSPARENT);
return (LRESULT)GetStockObject(NULL_BRUSH);ich hab nur noch ne frage wie ich das für meine buttons einsetze.
ich find in der msdn keine angabe womit ich diese nachricht abfange (wParam/lParam/HIWORD/LOWORD)weiterhin weiß ich nicht ob es in:
case WM_DRAWITEM:
gehört oder nicht.
-
Ach du verwendest OwnerDraw-Buttons - sag dass doch gleich
Dann sollte es eigentlich einfach reichen keinen Hintergrund zu zeichnen - zeig mal deinen Code in WM_DRAWITEM
-
Auch wenn ich mich nun blamiere, aber soll am Ende sowas dabei rauskommen?
http://www.c-plusplus.net/forum/viewtopic.php?t=14103&highlight=dialog+url
-
case WM_DRAWITEM: LPDRAWITEMSTRUCT lpdis; lpdis = (LPDRAWITEMSTRUCT) lParam; switch(lpdis->CtlID) { case but7: hdcmem = CreateCompatibleDC(lpdis->hDC); hdcmem1 = CreateCompatibleDC(lpdis->hDC); SelectObject(hdcmem,hhintergrund); SelectObject(hdcmem1,hbiberzurueck); BitBlt(lpdis->hDC,0,0,75,75,hdcmem,4,222,SRCCOPY); TransparentImage(lpdis->hDC,0,0,75,75,hdcmem1,0,0,75,75,GetPixel(hdcmem1,1,1)); DeleteDC(hdcmem); DeleteDC(hdcmem1); break; } break;
das is mein quelli zum zeichnen.
ich hab die hintergrundfarbe nicht eingestellt die ist automatisch grau.
ich hab nur ein bitmap immer reingeladen welche ich aber erstmal als "notiz" gekennzeichnet hab um zu schaun obs geht.
ich hab schon versucht mit setbkmode(hdc,TRANSPARENT) den hintergrund ein zu stellen aber es geht net.
-
Du blittest ja erst ein Bild normal (ohne Transparenz) drauf und anschließend ein zweites darüber, oder?
-
bisher wusste ich mir nicht anders zu helfen als das ich zuerst den ausschnit den der button einfach verdeckt kopiere und auf den button lege um danach dann eine figur auf den button zu packen.
leider ist dieses verfahren sehr langsam sodass ein kurzes flimmern beim laden des fensters entsteht.
deshalb suche ich jetzt nach ner anderen methode
-
ich habe jetzt folgendes eingebastelt:
case WM_CTLCOLORBTN: return (LRESULT)GetStockObject(NULL_BRUSH);
leider funzt das zu gut.
es lässt nicht nur meinen button transparent werden nein es lässt mich auch noch durch das fenster schauen
ich habe ein parent aus dem ich ein child aufrufe mit dem button drinne und jetzt kann ich bis aufs parent schauen in dem viereck welches der button sein sollte
kann mir jemand helfen?