Halbtransparentes Fenster

roxX0r

Mitglied
Hallo,

ich möchte um ein Fenster eines anderen Programmes ein Rahmen legen, also Rechteck. Dazu hab ich mir überlegt, ein transparentes Fenster über dieses andere Fenster zu legen und auf dieses transparente Fenster dann den Rahmen zu ziehen. Das transparente Fenster soll natürlich durchklickbar sein... so dazu habe ich jetzt bischen rumprobiert, aber ich bekomme das transparente Fenster zwar durchsichtig, aber dann sieht man natürlich auch den Rahmen nicht mehr... wie kann ich denn sowas machen?

hier mal mein code:

Code:
    HWND windowHandle = CreateWindowEx(WS_EX_LAYERED | WS_EX_TRANSPARENT, "#32770", "Fenster", WS_POPUP | WS_VISIBLE, 100, 100, 500, 500, 0, 0, 0, 0);

    SetLayeredWindowAttributes(windowHandle, 0, 0, LWA_ALPHA);

    PAINTSTRUCT ps;
    HDC hdc = GetDC(windowHandle);
    HPEN greenPen=CreatePen(PS_SOLID, 5, RGB(0,255,0));
    hdc=BeginPaint(windowHandle, &ps);
    SelectObject(hdc,greenPen);
    MoveToEx(hdc,0,0, NULL);
     Rectangle(hdc,0,0,100,100);
     EndPaint(windowHandle, &ps);

     ReleaseDC(windowHandle, hdc);
    DeleteObject(greenPen);
 
Da bieten sich Regions an. Damit kann man Löcher in ein Fenster kloppen. Inwieweit sich das mit Layered Window Attributes verträgt, weiss ich allerdings nicht.
 
Habe jetzt folgendes:

Code:
    HWND windowHandle = CreateWindowEx( WS_EX_LAYERED | WS_EX_TRANSPARENT, "#32770", "Fenster", WS_POPUP | WS_VISIBLE , 100, 100, 500, 500, 0, 0, 0, 0);
SetLayeredWindowAttributes(windowHandle, RGB(240,240,240), 255, LWA_COLORKEY);

    PAINTSTRUCT ps;
    HDC hdc = GetDC(windowHandle);
    HPEN greenPen=CreatePen(PS_SOLID, 5, RGB(0,255,0));
    hdc=BeginPaint(windowHandle, &ps);
    SelectObject(hdc,greenPen);
    MoveToEx(hdc,0,0, NULL);
     Rectangle(hdc,0,0,100,100);
     EndPaint(windowHandle, &ps);

     ReleaseDC(windowHandle, hdc);
    DeleteObject(greenPen);

nun sehe ich mein grünes Rechteck, alles drumherum ist transparent, jedoch die Region IM Rechteck, ist weiterhin Sichtbar...

jemand eine Idee, wie ich diese Region auch durchsichtig bekomme?
Und vielleicht noch einen Tip, wie ich es verhindere, dass das neue Fenster einen Eintrag in der Taskbar bekommt? Der User soll von dem Fenster garnix mitbekommen ...
 
Zurück