Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ChrisJ

Alter Hase

  • »ChrisJ« ist der Autor dieses Themas

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

1

24.07.2007, 21:56

Scrollbars im Dialog

hi.
ich habe ein problem mit scrollbars in einem dialog. ich sitze schon den den ganzen tag dran und finde den fehler einfach nicht :/

ich erstelle im resourceneditor eine horizontale bildlaufleiste, zum regeln von verschiedenen eigentschaften, doch wenn ich den "thumb" der scrollbar bewege, hat dies keinen effekt und er springt immer wieder zur ausgangsposition zurück :(

am anfang, wenn der dialog erstellt wird, setze ich erstmal die reichweite meiner scrollbar.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
bool __stdcall DlgProc(::HWND hDlg, [...])
{
    switch(uiMsg)
    {
    case WM_INITDIALOG:
             ::HWND hScrollbar = ::GetDlgItem(hDlg, ScrollBarID);
             ::SetScrollRange(hScrollbar, SB_CTL, min, max, false);
             return true;
    };
    [...]
}


wenn nun die scrollbar bewegt wird, reagiere ich entsprechend darauf und setze den "thumb"

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
// in DlgProc

[...]
switch(uiMsg)
{
case WM_VSCROLL:
          switch(LOWORD(wParam))
          {
          case SB_LINELEFT/RIGHT etc:
                     speichere_neue_position(iPos);
          };
          ::SetScrollPos(hScrollbar, SB_CTL, iPos, true);
          return true;
};


wo ist der fehler?
"Don't trust your eyes: They are a hell of a lot smarter than you are"

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

24.07.2007, 22:24

C-/C++-Quelltext

1
speichere_neue_position(iPos);

Sofern iPos nicht per Referenz übergeben wird (kann man dem geposteten Code nicht entnehmen), hat die Funktion keine Wirkung auf diese Variable. Call by Value != Call by Reference ...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

24.07.2007, 22:25

Du solltest es vllt mit WM_HSCROLL probieren.
@D13_Dreinig

ChrisJ

Alter Hase

  • »ChrisJ« ist der Autor dieses Themas

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

4

24.07.2007, 22:31

@david

im code habe ich schon eine richtige zuweisung gemacht. die funktion war nur ein platzhalter. war wohl ein bisschen verwirrend, sry

@david_pb

thx, jetzt funktioniert es :)
je länger man sich mit einem problem rumschlägt, desto größer wird das brett vorm kopf :)
"Don't trust your eyes: They are a hell of a lot smarter than you are"

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

25.07.2007, 07:59

Jo, kann passiern! ;)
Du solltest übrigens statt SetScrollRange() (veraltet) lieber SetScrollInfo() verwenden.
@D13_Dreinig

Werbeanzeige