CreateWindow in externem Programm -> blockiert (Messages?)



  • Ein von mir erstelltes Programm muss in einem fremden Win32-Programm ein Textfeld erstellen können mit einem Text drinn.

    hwndText = CreateWindow (
    		"EDIT",
    		"text.....",
    		WS_VISIBLE | WS_CHILD | WS_BORDER | ES_READONLY | ES_MULTILINE | ES_AUTOHSCROLL	| ES_AUTOVSCROLL,
    		600,
    		0,
    		300,
    		36,
    		hwnd,                   // <= Handle des Hauptfensters des fremden Programmes
    		NULL,
    		Application->Handle,    // <= Eigenes Programm
    		&param);
    

    Das Fenster (EDIT-Box) wird im "fremden Programm" ordnungsgemäss erstellt und angezeigt;
    wie ersichtlich ist, ist die Klasse "EDIT" und READONLY gesetzt, so dass kein Text hineingeschrieben werden kann. Markieren mit Maus und Ctrl+C funktioniert aber.

    Das Problem ist nun folgendes: Normalerweise funktioniert alles einwandfrei; ich kann in dem Textfeld Text markieren, am Rand wird gescrollt... aber plötzlich ist das GUI blockiert, es tut sich nichts mehr. Auch das eigene Programm scheint blockiert zu sein. Was genau der Auslöser ist, kann ich nicht sagen. Es kann sein, dass ich zwei Minuten lang Text einfach mit der Maus markiere und alles ist gut... ohne dass ich etwas anderes mache, blockiert plötzlich aber alles. Z.B. lassen sich andere Knöpfe nicht mehr drücken. Auch wird der Mauszeiger nicht mehr geändert, wenn über andere Elemente gefahren wird. (es bleibt z.B. einfach der Textbox-Curor als Mauszeiger).
    Beende ich zwangshaft mein Programm (welches das EDIT-Feld erzeugt hat), so läuft das fremde Programm ordnungsgemäss weiter (und das von mir erzeugte Fenster wird natürlich entfernt).

    An was kann das liegen? Ist das etwa ein Problem von Messages, die nicht sauber verarbeitet werden? - Ich habe mal mit "Winspector Spy" alle Messages des erzeugten Fensters aufzeichnen lassen. Habe nie spezielle Messages gesehen. Selbst wenn das Programm pötzlich "hängt", ist nicht eine spezielle Message am Schluss in der Queue, sondern WM_GETTEXT und WM_GETTEXTLENGTH ercheinen munter weiterhin und werden auch beantwortet.

    Es ist natürlich klar, in meinem Programm kann ich keine Messages dieses Fensters handeln, da ja der Fenster-Parant das fremde Programm ist, auf dessen Code ich keinen Einfluss nehmen kann.

    Vielleicht kennt jemand dieses Verhalten und kann mir Helfen!
    Besten Dank.

    [Nachtrag]
    Erstelle ich das Fenster mit dem zusätzlichen Style WS_DISABLED, so tritt das geschilderte Problem nie auf. Ich möchte das EDIT-Feld aber mit der Maus scrollen können, da nicht der ganze Text reinpasst.


Anmelden zum Antworten