#COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" %IDC_TEXTBOX1 = 1001 CALLBACK FUNCTION DlgProc() LOCAL txt AS STRING LOCAL txt1 AS STRING LOCAL Count AS LONG LOCAL Count1 AS LONG LOCAL Count2 AS LONG SELECT CASE AS LONG CBMSG CASE %WM_INITDIALOG txt$=REPEAT$(91,"Das sind die 3000 Zeichen vorher ")+ _ "******* HIER ETWA IST DIE MITTE *******"+ _ REPEAT$(91,"Das sind die 3000 Zeichen danach ") CONTROL SET TEXT CBHNDL, %IDC_TEXTBOX1, txt$ 'Anzahl der insgesamt vorhandenen Zeilen im Fenster CONTROL SEND CBHNDL, %IDC_TEXTBOX1,%EM_GETLINECOUNT,0,0 TO Count1 'welche Zeile ist aktuell ganz oben angezeigt ? '(wäre in diesem Fall zwar bekannt, jedoch in anderen Fällen notwendig) CONTROL SEND CBHNDL, %IDC_TEXTBOX1,%EM_GETFIRSTVISIBLELINE,0,0 TO Count2 'Wieviel Zeilen muss gescrollt werden Count=Count1/2 - Count2 - 11 '11 Zeilen entspricht hier der halben H”he 'Anzahl Zeilen im Feld scrollen CONTROL SEND CBHNDL, %IDC_TEXTBOX1,%EM_LINESCROLL, 0, Count CONTROL SET FOCUS CBHNDL, %IDC_TEXTBOX1 'Ach ja, gesuchten Text könnten wir noch markieren txt1$="HIER ETWA IST DIE MITTE" Count1=INSTR(txt$,txt1$)-1 Count2=LEN(txt1$) CONTROL SEND CBHNDL, %IDC_TEXTBOX1, %EM_SETSEL, Count1, Count1+Count2 END SELECT END FUNCTION FUNCTION PBMAIN() AS LONG LOCAL hDlg AS DWORD DIALOG NEW 0, "Textmitte anzeigen", , , 300, 220, %WS_SYSMENU ,, TO hDlg CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX1, "", 10, 10, 280, 170, _ %ES_MULTILINE OR %WS_VSCROLL DIALOG SHOW MODAL hDlg CALL DlgProc END FUNCTION