Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Wie bekomme ich ein HWND Objekt zum übergeben als Parameter?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.04.2004, 11:00 Uhr
ScheidR



Hallo!

Ich möchte von einer DLL eine Funktion nützen. Diese Funktion verlangt genau einen Parameter der heißt:.....(HWND hWnd);
Jetzt hab ich schon in der MSDN in zwei Büchern und im Forum nachgelesen, bis jetzt weiß ich nur das ich ein neues Fenster Registrieren muss.
Aber alle versuche ein gültiges hWnd Objekt zu erstellen schlugen fehl!

Im prinzip handelt es sich dabei ja um die Parameter für ein Fenster in dem dann die Funktion aus der DLL etwas macht oder? (wenn nicht hab ich da etwas grundlegend falsch verstanden)

Wie kann ich ein ganz einfaches hWnd erstellen um die Funktion (aus der DLL) zu Testen? Oder stelle ich mir das vielleicht viel zu einfach vor?

Ich weiß viele viele Fragen aber ich würde mich sehr über weiterhelfende Ratschläge freuen!

Danke!
LG, Ronny
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.04.2004, 11:21 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ein HWND ist einfach ein HANDLE auf ein Fenster und ein HANDLE ist einfach eine interne Nummer von Windows mit dem es verschiedene Dinge identifiziert.

In der MFC (die du ja anscheinend benutzt) kommt man normalerweise aber nicht mit einem HANDLE in berührung, da das alles durch die verschiedenen Klassen gekapselt wird. Du hast aber bei der CWND Klasse eine Funktion die dir das HANDLE des entsprechenden Fensters liefert. Ich glaube aber das du, aus dem oben genannten Grund trotzdem Probleme haben wirst.

Am Besten wäre es wenn du uns sagst was für ein Programm du hast, was das für eine DLL ist und was die besagte Funktion machen soll.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.04.2004, 11:35 Uhr
ScheidR



Hallo!

Erstmal Danke für die schnelle Antwort!

Ja ich verwende das Visual Studio mit MFC!

Die DLL ist von einer Firma mit deren hilfe man auf den Framegrabber für eine Kamera zugreifen kann! In fast jeder Funktion die man von dieser DLL nützen kann benötigt man dieses HWND hWnd!
Z.B. gibt es da eben diese Funktion die nur HWND hWnd als Parameter benötigt. (ich dachte mit der geht es dann am leichtesten zum Testen)
Die Funktion soll das Clipboard öffnen und das Fenster hWnd zum Clipboard Owner machen. (So steht es in der Beschreibung der Funktion.)

Oder eine ander Funktion:
....(HWND hBmpWnd)
Die Funktion gibt den Bildspeicher zurück, der dem Bitmap-Fenster zugeordnet ist. Falls dem Bitmap-Fenster kein Single-Plane Bildspeicher zugeordnet wurde, wird NULL zurückgegeben.

Ich hoffe das ist genügend Information!
Danke!
LG, Ronny
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.04.2004, 11:53 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Dann versuch doch einfach mal das Handle von dem Fenster welches du als Owner haben willst an die Funktion zu übergeben. Die Funktion die ich eben meinte heißt übrigens CWND::GetSafeHwnd().
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.04.2004, 12:36 Uhr
ScheidR



Benötige ich für CWND ein zusätzliches #include? Der Compiler kennt es nämlich nicht...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.04.2004, 13:04 Uhr
ScheidR



Sorry! War ein schwachsinn von mir!
Hab jetzt wie von dir empfohlen mit:

HWND hWnd = CWnd::GetSafeHwnd();

hWnd einen gültigen Wert zugewiesen (glaube ich jedenfalls)

doch ich bekomme folgende Fehlermeldung bei der Funktion :

error C2440: 'initializing' : 'struct HWND__ *' kann nicht in 'WINM_rc_t' konvertiert werden

Woran kann das liegen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.04.2004, 13:10 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Zeig mal bitte die Deklaration der Funktion aus der DLL und deinen Versuch sie aufzurufen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.04.2004, 13:24 Uhr
ScheidR



So ist die Funktion in der Dokumentation beschrieben:
----------------------------------------------------------
IpStartReadClipboard
Clipboard öffnen

Funktionskopf:
#include "impacwin.h"
WINM_rc_t IpStartReadClipboard(HWND hWnd)

Beschreibung: Die Funktion öffnet das Clipboard und macht das Fenster hWnd zum Clipboard-Owner.

Parameter: hWnd Fenster, wird Clipboard-Owner

Fehlercodes:WINM_OPEN_CLIPBOARD
-----------------------------------------------------------

In meinem Programm Rufe ich sie so auf:
-----------------------------------------------------------
HWND hWnd = CWnd::GetSafeHwnd();

WINM_rc_t IpStartReadClipboard(hWnd);
-----------------------------------------------------------
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.04.2004, 17:37 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Erm... du musst GetSafeHwnd() schon von deinem Fensterobject aufrufen, also von dem das der Owner sein soll
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.04.2004, 17:48 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
WINM_rc_t IpStartReadClipboard(hWnd);



das ist auch kein gültiger Funktionsaufruf.

Mach das ganze z.b mal so:


C++:
WINM_rc_t VariableMitRueckgabewertDerFunktion = IpStartReadClipboard(this->m_hWnd);


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: