Windows-Fenster in einer C++ Form anzeigen
-
Hallo ich möchte ein Fenster (zB. Skype) in meinem Programm anzeigen (zB. in einem Panel) anzeigenlassen und auch auf die Funktionen zugreifen können.
Habe nun schon über die Funktion FindWindow das Handle des Fensters
HWND Window; Window = FindWindow("tSkMainForm.UnicodeClass", "Skype™ - xxx");und ich kann nun auch schon zB. ein Memofeld von einem Panel in ein anderes Panel über die Funktion Parent verschieben.
Memo2->Parent = Panel2;Dieses müsste doch eigendlich auch mit Skype gehen, indem ich dem Parent das Handle von Skype übergebe oder nicht ?
Würde mich freuen wenn mir Jemand hefen könnte oder dieses Problem vielleicht auch mal hatte .
Danke
-
Falsches Forum, WinAPI wäre korrekt.
Simon
-
theta schrieb:
Falsches Forum, WinAPI wäre korrekt.
Stimmt.
Zumindest beim Firefox klappt es.HWND hwndApp = FindWindow("MozillaUIWindowClass",0); if(hwndApp) { LONG_PTR Style = GetWindowLongPtr(hwndApp,GWL_STYLE); Style &= ~WS_OVERLAPPEDWINDOW; Style |= (WS_POPUP | WS_CHILD); // neuen Stil, kein Rahmen und Child-Fenster SetWindowLongPtr(hwndApp,GWL_STYLE,Style); SetParent(hwndApp,myWnd); SetWindowPos(hwndApp,HWND_TOP,0,0,0,0,SWP_NOSIZE|SWP_FRAMECHANGED); // nach links oben verschieben InvalidateRect(hwndApp,0,1); ::SetMenu(myWnd,GetMenu(hwndApp)); // das Menü setzen, falls es gemacht wird, müssen aber die WM_COMMAND-Nachrichten weitergeleitet werden ::SetMenu(hwndApp,0); }myWnd ist logischerweise das Handle auf das eigene Top-Level-Fenster.
Das Neuzeichnen macht bei Größenänderungen auch Probleme. Ich weiß nicht, ob jeweils ein UpdateWnd Abhilfe schafft.
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danke für die schnelle Hilfe hat alles super geklappt.

-
Gibt es die möglichkeit , das die größe des Fensters automatisch angepasst wird ?
Mein Panel ist 800x600 und das Fenster ist größer , soll aber nach möglichkeit komplett dort hinein .
Danke
-
Ich habe doch die WinApi-Fkt SetWindowPos aufgerufen. Informier' dich doch über deren Parameter (http://msdn.microsoft.com/en-us/library/ms633545%28VS.85%29.aspx)
-
Ja habe mir die Hilfe durchgelesen aber tut mir leid vllt bin ich zublöd aber welchen Para brauche ich da denn ?
-
Bei dem Link sind es cx und cy (Breite und Höhe des Fensters).
Bei den Flags, also dem letzten Parameter, darfst du dann natürlich nicht mehr SWP_NOSIZE schreiben.SetWindowPos(hwndApp,HWND_TOP,0,0,800,600,SWP_FRAMECHANGED); // nach links oben verschieben, Breite 800, Höhe 600
-
Ja das weiß ich ja aber ich möchte das das firefox ohne skrollbar dann in einem 800x600er feld angezeigt wird . die größe von firefox soll automatisch angepasst werden.