Trackbar Frage

Hallasas

Erfahrenes Mitglied
Hallo Community!
Diesmal habe ich ein anderes Problem:

Vorab: Ich arbeit mit Win API

Ich möchte über eine Trackbar ( die ich mit "msctls_trackbar32" erstellt habe ), je nachdem, wie sie verschoben wird, die Transparenz meiner GUI verändern.
Das Erstellen und Platzieren der Trackbar ist kein Problem, doch wie kann ich auf das "Verschieben" Aktionen ausführen ?

Da in meiner SDK der Bezeichner "SetLayeredWindowAttributes" fehlt, habe ich eine eigene Funktion "zusammengestellt":
Code:
typedef BOOL (WINAPI TRNZ)
(
    HWND hwnd,
    COLORREF crKey,
    BYTE bAlpha,
    DWORD dwFlags
);

typedef TRNZ* TRANSPARENCY;

BOOL WindowTransparency ( HWND hwnd, BYTE bAlpha )
{
	HINSTANCE    hCommonDLL;
	TRANSPARENCY WndTrcy;

	if ( NULL == ( hCommonDLL = LoadLibrary ( "user32.dll" ) ) )
	{
		MessageBox( NULL, "Failed to load user32.dll!", "Error", MB_OK );
	}

	WndTrcy = ( TRANSPARENCY ) GetProcAddress ( hCommonDLL, "SetLayeredWindowAttributes" );

	SetWindowLong ( hwnd, (-20), 
              GetWindowLong ( hwnd, (-20) ) | 0x80000 );

	WndTrcy ( hwnd, RGB( 255, 255, 255 ), bAlpha, 2 ); 

	return true;
}

Ich hoffe, ihr könnt mir helfen...
Gruß Hallasas :)
 
Also ich habe einen *sehr langen* Text von der msdn durchgelesen, und erfahren, dass ich diese Bezeichner brauche:
Code:
TBM_SETPOS
TBM_GETPOS

Mitdenen ich dann die Position des Trackbar Thumbs "lokalisieren" kann...

In der msdn stand, dass dieser Bezeichner auf einen 32 Bit Wert "returnt".
Code:
SendMessage( Trackbar, TBM_GETPOS, 0, 0 );

Daraufhin habe ich dies versucht:
Code:
WindowTransparency( hwnd, SendMessage( Trackbar, TBM_GETPOS, 0, 0 ) );

Doch dies funktioniert leider nicht :(

Ist es vielleicht ein Problem mit dem L bzw. WParam ?
Ich habe auch schon soetwas ausprobiert:
Code:
case WM_COMMAND:
{
    if ( lParam == ( LPARAM ) Trackbar )
    {
        WindowTransparency( hwnd, SendMessage( Trackbar, TBM_GETPOS, 0, 0 ) );
    }
    return 0;
}

Doch nichts wollte funktionieren...
Das Problem ist mir recht wichtig und darum bitte ich euch nochmals um eure Hilfe.

Gruß Hallasas
 
Nunja, ich habe es jetzt mit einem Button versucht, und es geht...
Code:
case WM_COMMAND:
{
   if ( lParam == (LPARAM) hButton )
   {
      if ( HIWORD(wParam) == BN_CLICKED )
      {
         SendMessage( TrackBar, TBM_SETRANGE, true , MAKELONG ( 200, 255)  );
         WindowTransparency( hWnd, SendMessage( TrackBar, TBM_GETPOS, 0, 0) );
      }
   }
   return 0;
}

Doch ich will nicht erst einen Button klicken, um die Transparenz meines Fensters zu verändern...

Gibt es vielleicht ein Argument, das herausfindet, wenn der "TrackBar-Thumb" verschoben wurde ?

Gruß Hallasas
 
Zurück