DLL soll automatisch Tastaturfokus bekommen?

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

DLL soll automatisch Tastaturfokus bekommen?

Beitrag von UliTs »

Hallo,

ich habe ein Xbase++-Programm und eine selbst geschriebene Delphi-DLL. Innerhalb der Delphi-Routine wird ein Dialogfenster geöffnet.
Im ersten Versuch öffnete sich zwar das Fenster, wurde jedoch durch das xBase-Hauptfenster überdeckt. Dies habe ich mittels

Code: Alles auswählen

    SetWindowPos(Handle, // handle to window
                 HWND_TOPMOST, // placement-order handle {*}
                 Left,  // horizontal position
                 Top,   // vertical position
                 Width,
                 Height,
                 // window-positioning options
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
lösen können. Allerdings hat das Fenster nicht den Tastaturfokus (dieser bleibt beim xBase-Hauptfenster. Wie kann ich den Tastaturfokus automatisch aktivieren?

Uli
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

in Xbase++ SetAppFocus(oXbp) ;-)

in deinem Fall ist es aber kein Xbp. API kann ich nicht, also denke ich wäre das einfachste dem Delphi Fenster beizubringen wenn es angezeigt wird sofort dem Control den eingabefocus zuzuweisen. Wie das geht weiß ich in Delphi natürlich nicht, aber die Befehle müssten ähnlich vorhanden sein.

Was macht eigentlich SWP_NOACTIVATE lass das mal weg.
Gruß
Hubert
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Beitrag von UliTs »

Hallo Hubert,

danke für die Nachricht.
Das Weglassen brachte es aber leider nicht.
Wenn ich die DLL von einem Delphiprogramm aus aufrufe, funktioniert es jedoch! Ich glaube, die Ursache liegt bei xBase.

Uli
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

hast du in dem DLL Fenster eine Messageloop ?

Die von Xbase++ geht bestimmt nicht. Die von deinem aufrufenden Delphiprogramm hingegen kann bestimmt die Delphi-DLL richtig mit Nachrichten versorgen. Das offene Fenster müsste wohl eine eigene haben, ähnlich wie ein MODALES Fenster sich alles krallt was an events kommt, muss sich dein Fenster um die Nachrichten kümmern.

Vielleicht liegt es daran.

Wenn nicht gab es schon API Funktionen hier die Fenster anhand vom Titel herausgesucht und geschlossen haben. Vielleicht ginge das auch mit setinputfocus ?
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Uli.

Hilft Dir das hier möglicherweise weiter?

http://www.xbaseforum.de/viewtopic.php?t=925
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Beitrag von UliTs »

Hallo Tom,

der link funktioniert bei mir nicht. Hast Du Dich vertan?

Uli
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Uli.

Eigentlich nicht. Er sollte - das macht er bei mir auch - auf das Thema "(API) Dialog/Applikation "on top" darstellen" in der Wissensbasis verlinken.
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Beitrag von UliTs »

Hallo Tom,

das "www." fehlte.
Also ich bin schwer beeindruckt! Nach Einbau in die Delphi-Library funktioniert es!
Allerdings wenn ich danach den XbpFile()-Dialog aufrufe, bekommt dieser
auf einmal nicht mehr den Focus (klappte vorher). Dann werde ich halt
da die beiden Aufrufe auch einbauen!

Vielen Dank. :D :!:

Uli
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Beitrag von UliTs »

XbpFileDialog() hat leider keine GetWnd()-Methode.
So kann ich Ihr auch nicht den Focus geben.

Es ist komisch: das Fenster öffnet sich nach Aufruf der Methode SaveAs(), ist auch modal im Vordergrund aber hat keinen Focus!
Wie kann ich dem Fenster den Focus geben?

Bis Montag.

Uli
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Uli,
UliTs hat geschrieben:das "www." fehlte.
super - danke für den Hinweis! Bei mir ging es nämlich auch nicht - ich habe das fehlende www. in Toms Posting davorgesetzt und jetzt geht es!
@Tom: Bitte ändere doch das gleiche auch bei Deinem DevCon-Logo oben rechts auf der Seite - dort linkst Du auch ohne www. in das Forum und man kann zwar darüber in den betreffenden Thread kommen, aber nicht antworten -> man landet dann wieder auf der Index-Seite (Du erinnerst Dich vielleicht noch vage daran, dass ich Dir davon beim Franzosen erzählt hatte...)

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Erledicht. :D
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Danke Tom,
jetzt klappt es auch da wieder vernünftig...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten