PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RichTextBox Scrollen


gencha
21.07.2003, 21:46
also ich hab ne richtextbox und möchte in ne bestimte zeile springen.

bisher mach ich das indem ich immer eine zeile hoch bzw runter scrolle und immer die aktuelle mit der gewünschten vergleiche.

die msdn sagt wenn man in ne bestimmte zeile springen will soll man mit EM_LINESCROLL arbeiten.
nur leider bringt mich das kein meter weiter. angeblich kann man dann ne anzahl von zeilen angeben die man scrollen will.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/em_linescroll.asp

also hab ich mir gedacht, das mach ich so:


Call SendMessage(RichTextBox1.hWnd, EM_LINESCROLL, 0, 10)


was ja 10 zeilen scrollen sollte, allerdings is vollkommen egal welchen wert ich angebe, es wird immer in die letzte zeile gescrollt.

jegliche hilfe hierzu oder alternativ-lösungen sind sehr willkommen


Scavi
22.07.2003, 08:46
Caste mal die Parameter auf WPARAM bzw. LPARAM. Ist das RichTextBox1.hWnd das Handle auf dein zu der RichTextBox gehörendes Window ?

gencha
22.07.2003, 11:03
RichTextBox1.hWnd is das handle von der RichTextBox1.
also nich vom fenster.

ich hoff mit casten meintest du das hier:


Dim LinesToScroll As Long

LinesToScroll = 10

Call SendMessage(RichTextBox1.hWnd, EM_LINESCROLL, CLng(0), LinesToScroll)


führt allerdings immernoch zum gleichen ergebnis

Scavi
22.07.2003, 12:08
Nehm mal das Handle von dem dazugehörenden Fenster.

gencha
22.07.2003, 12:19
soll das n witz sein?
was bitte versprichst du dir davon?

mal abgesehn davon das die idee absolut sinnlos is, verweist jegliches dokument was ich bisher dazu in den fingern hatte auf die hwnd das (rich)edit controls.

was wär denn wenn ich zwei richedit controls in dem fenster hab, welche würde denn dann scrollen?

bitte nur ermst gemeint beiträge.
es hilft sicher auch sich die problematik mal praktisch vorzuhalten.

ich geb gern nen beispiel code

Scavi
22.07.2003, 12:55
Ich kenn mich jetzt nüch so in Basic aus, aber in C geht das so, ausserdem sollte ein Bezeichner angegeben werden.


Msdn (SendMessage):

hWnd
[in] Handle to the window!!!!! whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows

gencha
22.07.2003, 12:59
naja das wird zwar jetz langsam n bischen off-topic, aber zur info.
windows-technich ist jedes control ein window. jeder button, jede editbox, jedes bild und auch jedes fenster.

und ob c oder basic, die funktionsweise der api ändert sich nich.

weitere unterhaltungen zum thema funktionsweise der api und win-api im allgemeinen dann doch bidde per pm.

Scavi
22.07.2003, 13:04
Da fällt mir gerade ein, dass du Recht hast, denn ich hatte das mit SendDlgItemMessage(...) verwechselt. Weil ich das als letztes verwendet hatte ;)

Ich glaube das geht nüch, weil er deine Message nüch kennt.
Probiere mal das:

lResult = SendMessage( (HWND) hWndControl,
(UINT) EM_SETSCROLLPOS, (WPARAM) wParam, (LPARAM) lParam);

gencha
13.08.2003, 18:39
damit gehts auf jeden fall schonma wesentlich besser als mit allem andren was ich versucht hab.

dank dir