WinAPI aus Qt aufrufen

Alles rund um die Programmierung mit Qt
Antworten
AlGaN
Beiträge: 25
Registriert: 25. März 2006 12:45

WinAPI aus Qt aufrufen

Beitrag von AlGaN »

Hallo,

zunächst mal: Ich habe bisher immer getrennte Projekte (Qt/WinAPI) gemacht.

Nun aber muss ich aus Qt heraus an die WinAPI Messages herankommen (externe Message aus einer DLL eines Hardware-Herstellers, der sendet WM_TAG messages). Es ist ein Beispielprogramm f. MFC dabei, leider programmiere ich mit der Express-Version von VC, deshalb kann ich MFC nicht verwenden...

Deshalb meine Frage: Wie greift man auf die Windows Messages in der WndProc zu? Muss ich dafür eine gekapselte DLL in Qt erstellen, die ihrerseits ein QWidget/etc. beinhaltet, das die Event-Schleife kapselt?

Unter Qt gibt es ja nur ein QApplication-Objekt, muss ich da einhaken?

Bin für jeden Tipp dankbar

Gruß,
Felix
mabralume
Beiträge: 39
Registriert: 26. April 2007 11:54
Wohnort: Siegen
Kontaktdaten:

Beitrag von mabralume »

Hmmm, ein Ansatz wäre eine Schnittstelle in Form einer eigenen dll, ne ganz normale Win32-Dll ohne MFC. Dort überwachst Du in einem thread die Windowsmessage-Queue (weiß grad nicht die API-Funktion). Wenn Du dann da was feststellst, teilst Du dies einfach über eine Callbackfunktion Deinem Qt-Programm mit .

In Deinem Qt-Programm implementierst Du eine globale static Class (z.B. einSingleton) die Du in der Callbackfunktion aufrufst, von da kannst Du dann das Signal weiterleiten wie Du willst.

Das wär der Umweg direkt über die WinApi. Ob es in der neuesten Qt-Version eine direkt Überwachung gibt kann ich nit sagen .

mfg
MB
Ein Programmierer ist ein Tool, was Coffein in Code umwandelt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
mabralume
Beiträge: 39
Registriert: 26. April 2007 11:54
Wohnort: Siegen
Kontaktdaten:

Beitrag von mabralume »

Oder so :D

mfg
MB
Ein Programmierer ist ein Tool, was Coffein in Code umwandelt.
myme
Beiträge: 24
Registriert: 31. März 2008 14:25

Beitrag von myme »

...oder QWidget::winEvent falls die Events an ein bestimmtes Fenster gesendet werden.
AlGaN
Beiträge: 25
Registriert: 25. März 2006 12:45

Beitrag von AlGaN »

Hi,

danke für die Antworten. So wie ich es verstehe, habe ich also die Auswahl, das Event entweder von meinem QApplication-Objekt oder einem untergeordneten QWidget filtern/verarbeiten zu lassen.

Das Problem ist nur, dass es sich eigentlich um eine Nicht-GUI-Message des Readers handelt, weshalb ich die Message am liebsten in einer eigenen Klasse (die in einer eigenen DLL als Modul liegt) kapseln würde.
In meinem Projekt befinden sich 10 DLL-Module (natürlich nur ein GUI-Modul, das das Widget der Anwendung erstellt).

Sorry, wenn das etwas unwissend klingt, hab bisher mich nicht wirklich mit der MFC beschäftigt, aber die Messages einer DLL werden laut meinem MFC-Buch immer an die "Host-Anwendung" gesendet. Was ist aber, wenn die DLL von einer anderen DLL aus aufgerufen wird?

Ich werd mich wohl mal in die MFC Grundlagen einlesen müssen, trotzdem danke für alle Hinweise.

Felix
Antworten