frage zu scrollBar
-
hat jemand ein kleines beispiel wie ich eine scroll-bar verwende?
ich gebe in einem listCtrl immer 20 zeilen aus.
wenn ich in der scroll-bar nun nach unten oder oben drücke,
sollen die nächsten bzw. vorherigen 20 zeilen dargestellt werden.ich kann nicht alle zeilen gleichzeitig ins listctrl laden, da dies
zu viele werden würden.
wär dankbar für ein paar tipps, oder link zu einem tut, was die
scroll-bar am besten mit interaktion zu einem listctrl veranschaulicht.
-
Das ListCtrl ableiten z.B. MyListCtrl()
und dann darin die Nachrichten WM_VSCROLL abfangen.LRESULT CMyListCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { int nZDelta; switch(message) { case WM_VSCROLL: if((LOWORD(wParam) == SB_LINEUP || LOWORD(wParam) == SB_PAGEUP) /*&& HIWORD(wParam) == 0*/) { //Nach Oben Scrollen } else { //Scroll Range holen int nMinRange, nMaxRange; FlatSB_GetScrollRange(m_hWnd, SB_VERT, &nMinRange, &nMaxRange); int nCpPage = this->GetCountPerPage(); int nPos = FlatSB_GetScrollPos(m_hWnd,SB_VERT) + nCpPage; if((LOWORD(wParam) == SB_LINEDOWN || LOWORD(wParam)== SB_PAGEDOWN) /*&& nPos == nMaxRange+1*/) { //Hier nach unten scrollen } } return CListCtrl::WindowProc(message, wParam, lParam); break; default: return CListCtrl::WindowProc(message, wParam, lParam); break; } }
-
danke erstmal für den code.
doch vorerst habe ich wohl noch ein anderes problem zu beseitigen.
und zwar wird meine scrollbar bar anzeigen des dialogs nicht gezeichnet.
zumindest nicht offentsichtlich.wenn ich dann an die stelle klicke wo sie sein sollte, dann erscheint sie.
Beim Erstellen bin ich folgendermasse vorgegangen:
1. ich habe die scrollbar mit drag&drop in meinen dialog gezogen.
2. danach habe ich eine membervariable(vom typ CScrollBar mit dem classWizard erstellt).
3. im OnInitDialog meiner Klasse habe ich folgendes eingefügtm_myScrollbar.SetScrollRange(0, 100);
hab ich da was vergessen?!
-
Ich hab da einfach die Scrollbar genommen die man bei CListCtrl eh mitkriegt.
Dafür ist auch der Code.
Das Problem wird sein, das deine Scrollbar vom Dialog überzeichnet wird bzw im Hintergrund verschwindet, hatte dasselbe Problem, darum hab ich dann die Vertikale Laufleiste des Ctrls genommen und das ListCtrl abgeleitet um die Nachricht abfangen zu können.
Mehr kann ich dir da leider auch nicht zu sagen. Sorry
-
komischerweise passiert mir das nur in diesem dialog.
wenn ich in einem anderen dialog eine solche scrollbar erstelle,
dann verschwindet diese nicht.hat noch jemand eine andere idee?
-
dass die scrollbar nicht gezeichnet wurde,
hab ich mittlerweile mit einemRedrawWindow();
gelöst.
geht also soweit erstmal!