Drei Scrollbars in Dialogfenster auslesen (?)
-
Hi!
Ich muss vorweg sagen, dass ich bezüglich der WinAPI Programmierung nicht wirklich Ahnung habe. Ich soll jetzt aber bis Mittwoch ein Programm schreiben, bei dem man unter anderem in einer Dialogbox über drei Scrollbars einen Farbwert einstellen können soll. Dieser soll dann im Hauptfenster die Farbe eine Grafik ändern. Hört sich ziemlich simpel an, ist es ja vieleicht auch, nur ich bekomme das nicht hin. Als "Hilfe" habe ich dieses Dokument bekommen: (www.erlenkoetter.de/cfw/cfw-05.htm). Leider ist das Beispiel noch aus Win3.11 Zeiten und basiert auf einer uralten Borland C++ Version. Es hat mich ja schon einige Zeit gekostet diese ganzen "LONG FAR PASCAL" Sachen in etwas umzuwandeln was mein Dev-C++/gcc vesteht.
Also mein Problem ist jetzt, wie lese ich die drei Scrollbars aus?
Also ich habe eine "dialoge.rc" Datei in der ich die Scrollbars definiert habe:
IDD_DIALOG_COLORS DIALOG DISCARDABLE 0, 0, 430, 110 [...] SCROLLBAR ID_SCROLLBAR_R1, 15, 30, 100, 10 SCROLLBAR ID_SCROLLBAR_G1, 15, 45, 100, 10 SCROLLBAR ID_SCROLLBAR_B1, 15, 60, 100, 10Und im Hauptprogramm habe ich für diese Dialogbox stehen:
BOOL CALLBACK ColorsDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { [...] switch(message) { case WM_INITDIALOG: // Hier stelle ich die Scrollbars ein SetScrollRange(GetDlgItem(hWnd,ID_SCROLLBAR_R1)...... SetScrollPos(GetDlgItem(hWnd,ID_SCROLLBAR_R1), SB_CTL, R1, TRUE);Jetzt dachte ich, ich könnte mit
switch(message) { case WM_HSCROLL: switch(LOWORD(wParam)) { case SB_LINEUP; position=position+1; break; case SB_LINEDOWN; position=position-1; break; } } }die Werte auslesen. Aber wie sag ich um welche Scrollbar es sich handelt?
Oder mache ich mir das alles zu kompliziert?Ich bin über jeden noch so kleinen Tip dankbar!
Vielen Dank!!!!
Gruß
Thorsten
-
Im lParam sitzt normalerweise der Handle zur Scrollbar
-
Danke!
Habe das jetzt so gelöst:
if ( GetDlgCtrlID((HWND) lParam) == ID_SCROLLBAR_R1) r1=HIWORD(wParam); if ( GetDlgCtrlID((HWND) lParam) == ID_SCROLLBAR_G1) g1=HIWORD(wParam); if ( GetDlgCtrlID((HWND) lParam) == ID_SCROLLBAR_B1) b1=HIWORD(wParam);Geht bestimmt auch anders, aber so funktioniert es zumindest.
Gruß
Thorsten