HWND ermitteln

AckiB

Mitglied
Hi,
jetzt habe ich ein weiteres Problem:
Wie bekomme ich den Handle des Windows-Fenster heraus ?

Ich habe jetzt zwar die Funktion für die Fensterposition, aber die braucht den Handle (hwnd)...

Public Declare Function GetWindowPlacement Lib "user32" Alias "GetWindowPlacement" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long

Ich habe bisher in VB programmiert und ein bisschen C/C++ für Konsole...
Leider habe ich nur wenig Ahnung, wie man Windows Programme mit C/C++ programmiert.
In VB hat jedes Fenster die Eigenschaft HWND, aber in C/C++ ?

danke, Acki
 
Dabei ist es schon wichtig mit was du programmierst?
- MFC?
- reine WinAPI?
- GTK?
- QT?
- zApp?
- wxWindows?
- usw...?
Denn Möglichkeiten gibt es viele.

Gruß Homer

P.S. warum muß man eigentlich immer wieder die gleichen Fragen stellen ?
 
Sorry, aber ich suche grundsätzlich vorher, ob meine Fragen schonmal gestellt wurde...
Wenn ich nichts finde frage ich halt... :rolleyes:
Und zu diesem Thema habe ich nichts gefunden... :(

Wie schon erwähnt bin ich in Cpp - Windows - Programmierung ein Newby... (!)

Zum Thema: da ich eine API-Funktion als Beispiel angegeben hatte, dachte ich das währe klar... ;)

Also, ich benutze Dev-C++ unter W2k, erstelle meine GUIs mit FLTK und verwende gerne die Windows-API !

Ich komme damit auch soweit super zurecht, nur habe ich bei solchen (scheinbar) sehr speziellen Sachen noch ein wenig Probleme!

So weiß ich z.B. auch noch nicht, wie man einem Fenster ein Icon zuweisen kann (das oben links in der Titelleiste angezeigt wird)...
Danach habe ich allerdings auch noch nicht im Forum gesucht...

Sollte jemand einen Thread kennen, in dem meine Fragen schon beantwortet wurde, währe ich sehr dankbar für einen Hinweis (Link) darauf ! :)

Vielleicht kann mir ja doch jemand helfen...

CU, Acki
 
Also, ich benutze Dev-C++ unter W2k, erstelle meine GUIs mit FLTK und verwende gerne die Windows-API !
Das ist doch der springende Punkt.
Du kannst allso meine Liste um den Punkt "FLTK" erweitern.
Du benutzt ein eigenes Framework und nicht direkte WinAPI.
In diesem Framework, ist irgendwo eine Methode CreateWindow() gekappselt, die wiederum ein HWND zurückliefert.
Da wirst du aber mit 100% Warscheinlichkeit nicht rankommen.
Ergo:
Muss dir dein Framework eine Methode zur Verfügung stellen, um an das zugehörige HWND deines Fensters ranzukommen. Ist dies nicht der Fall, ist das Framework nicht unbedingt das ware (kann ich nicht beurteilen).
Eleganter wäre es allerdings die Fensterpositionen über das Framework zu verarbeiten.
Wird das auch nicht unterstützt dann nimm MFC oder sowas.
Also kann ich dich nur auf die Dokumentation von FLTK verweisen.
Evtl. kenn das hier ja jemand (ich nicht)

Gruß Homer
 
Das hatte ich mir auch gedacht, similar zur VB-Formular-Eigenschaft HWND...
Leider habe ich in der FLTK-Doku nichts gefunden (die ist auch nicht besonders gut aufgebaut und leider nur auf Englisch)...

Ein Fenster-Objekt sheint leider bei FLTK keine HWND-Eigenschaft (oder Methode die HWND liefer) zu besitzen... :(

Zur Info:
FLTK steht für "Fast Lightning Tool Kit"
Dazu gibts einen GUI-Editor der sich Fluid nennt (ich glaube das steht für "Fast Lightning User Interface Designer")

Das ganze ist ziemlich gut und stellt viele Objekte zur Verfügung!


thx, Acki
 
Das ganze ist ziemlich gut und stellt viele Objekte zur Verfügung!
Sieht wohl nicht so aus :-)
Ich habe das auch mal kurz überflogen, aber nix gefunden wie man an ein HWND rankommt.
Optional wäre da noch eine API-Funktion FindWindow() was aber eigentlich doof ist, wenn man schon eine "Art" Fensterklasse "an der Hand" hat (über FLTK).
Also kann ich dir da auch nicht weiter helfen in Bezug auf FLTK, musst weitersuchen, evtl. gibt es da Newsgroups.
(die ist auch nicht besonders gut aufgebaut und leider nur auf Englisch)
Das Englische sollte für einen Programmierer keine Hürde sein.

Gruß Homer
 
In der Doku stand unter OS-specific issues die folgende Funktion:

HWND fl_xid(const Fl_Window *)

Damit sollte es eigentlich klappen.

Das ist generell das Problem mit plattformübergreifenden Libraries. Irgendwo gibt es doch Unterschiede und die sind in der Normal-Doku nicht drin, sondern meistens im Kleingedruckten.
 
Das ist generell das Problem mit plattformübergreifenden Libraries. Irgendwo gibt es doch Unterschiede und die sind in der Normal-Doku nicht drin, sondern meistens im Kleingedruckten.
Das stimmt wahrscheinlich.

Vielleicht ist das Problem, dass AckiB das Handle eigentlich nur für die WinAPI-Funktion GetWindowPlacement() benötigt. Vielleicht wäre es sinnvoller, in seiner Library entsprechende Funktionen zu suchen, mit denen er dasselbe (Fensterpositionen usw.) herausfinden kann und auf direkten Einsatz der WinAPI zu verzichten. Ich bin sicher, dass das geht, und es hätte den Vorteil, dass sein Code tatsächlich nicht Windows-spezifisch würde.
 
Zurück