Slider und transparentes fenster



  • Ich möchte über einen Slider (Schieberegler) der über die Range
    von 0-255 verfügt ein zuvor ermitteltes anderes Anwendungsfenster schrittweise
    transparent gestalten.

    Leider wird das gewählte Fenster immer nur abwechseln transparent oder
    eben nicht. Aber stufenweise "faden" kann ich es irgendwie nicht.

    Der Code in meinem Button um das Fenster zu wählen:

    CWnd *wnd;
    	POINT pt;
    	::GetCursorPos(&pt);
    	wnd=WindowFromPoint(pt);
    	wnd->GetWindowText(title);
    	GetDlgItem(IDC_STATICZ)->SetWindowText(title);
    hWnd=::FindWindow(NULL,title);
    

    Der Slideregler soll dann das Fenster transparent setzen:

    void transpa::OnNMReleasedcaptureSlider1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    CString strTemp; 
    strTemp.Format("%d", m_slide1.GetPos()); 
    GetDlgItem(IDC_STATICW)->SetWindowText(strTemp);    
    int strTempi=atoi(strTemp);
    
    SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE)^WS_EX_LAYERED);
    ::SetLayeredWindowAttributes(hWnd,RGB(0,0,0),strTempi,LWA_ALPHA);//50 ist sehr transparent 255 ist normal
    
    *pResult = 0;
    }
    

    Hat jemand eine Idee ?



  • Was mir eben noch aufgefallen ist.. Sobald ich mit der Maus über den
    kleinen Schieberegler fahre flackert das Fenster, das ich transparent
    setzen möchte. Es wird mal voll dargestellt, dann wieder transparent



  • Also viele Möglichkeiten an Ereignishandlern habe ich ja für den Slider
    nicht wirklich. Habe schon alles durchprobiert, aber einfach keine Lösung
    gefunden. Mein Schieberegler setzt praktisch nur bei jedem 2ten Klick
    das andere Fenster transparent. Beim klicken springt er auch in 50er-
    Schritten. Wie kann man das beeinflussen ? Ideal wäre wenn er in 10er-
    Schritten springen würde.


Anmelden zum Antworten