000
19.12.2014, 12:20 Uhr
~elmut19
Gast
|
Hallo liebes Forum,
Ich habe ein grosses Problem (nach langer Zeit) mit einem Programm, das ich erweitern muss. Ich arbeite mit Visual Studio 2005. Das Programm wurde ursprünglich auf 6.0 entwickelt.
Mein Vorgänger hat das Hauptfenster mit Daten beschrieben, die in so was wie einem GridView dargestellt werden. Er verwendet allerdings kein solches, sondern baut das irgendwie selbst als Tabelle auf. Das steht dann einfach so in diesem SDI-Fenster. Es ist Zeilen orientiert aufgebaut, und man kann Zeilen markieren und darauf auch weitere Funktionen aufrufen, also ganz normal, ohne Edit-Funktion im Grid.
Am rechten Rand ist eine ScrollBar installiert, die bisher auch immer funktioniert hat. Beim Scrollen werden die Zeilen gezählt.
Nun hat sich bei mir die Datenmenge erhöht. Das heisst, ich bekomme teils über 100000 Zeilen. Dies verkraftet die ScrollBar nicht mehr und fängt nach 65xxx Zeilen wieder von vorne an zu zählen.
Alles was ich rausbekommen konnte, ist dass meine Scroll Position aus der wincore.cpp kommt. Hier mal der Code-Ausschnitt dieser wincore.cpp: (ab ZEile 2106)
case AfxSig_SCROLL: case AfxSig_SCROLL_REFLECT: { // special case for WM_VSCROLL and WM_HSCROLL ASSERT(message == WM_VSCROLL || message == WM_HSCROLL || message == WM_VSCROLL+WM_REFLECT_BASE || message == WM_HSCROLL+WM_REFLECT_BASE); int nScrollCode = (short)LOWORD(wParam); int nPos = (short)HIWORD(wParam); if (lpEntry->nSig == AfxSig_SCROLL) ---> (this->*mmf.pfn_v_u_u_W)(nScrollCode, nPos, CWnd::FromHandle(reinterpret_cast<HWND>(lParam))); else (this->*mmf.pfn_v_u_u)(nScrollCode, nPos); } break;
Die Zeile, die ich mit "--->" markiert habe, wird aufgerufen. also für die Berechnung der "nPos" wird nur das HIWORD verwendet.
Was kann ich machen, um meinen Zeilenumfang zu erhöhen? Kann mir bitte jemand helfen!
Ich weiss, meine Infos sind recht spärlich, aber mehr relevanten Code bekomme ich aus dem Call Stack nicht raus.
Grüsse Helmut |