Baron Sengir
Mitglied
Hallo Ihr Lieben,
ich programmiere gerade eine dialogfeldbasierende MFC-Anwendeung in VC++ 2005 und benötige das HWND auf's Anwendungsfenster.
Kommen wir zu den Details: Ich habe eine eigene Klasse programmiert, die an das Hauptfenster eine Message schicken soll, dafür brauche ich aber oben erwähntes HWND.
Nach (ehrlich!) tagelangen Herumprobieren, Suchen und MSDN-Durchstöbern, habe ich jetzt eine Krücke hingekriegt:
Aus einer Stringtable (damit ich beim späteren Umbenenen keine Sorgen habe) lade ich die gewünschte Bezeichnung für das Hauptfenster ein und setzte diesen String bei OnInitDialog als Fenstertitel fest. Das mache ich so:
In meiner Klasse dann, lade ich aus der Stringtable den Fenstertitel in die Variable m_ParentName, suche das Fenster und sende dann die Message. Das geschieht so:
Ich glaube, das Ganze geht doch sicherlich viel einfacher und besser, oder? Nur leider weiss ich überhaupt nicht wie. Versuch mit GetParent() gingen allesamt schief. Vielleicht kann mir ja von Euch einer weiterhelfen.
Danke
Markus
ich programmiere gerade eine dialogfeldbasierende MFC-Anwendeung in VC++ 2005 und benötige das HWND auf's Anwendungsfenster.
Kommen wir zu den Details: Ich habe eine eigene Klasse programmiert, die an das Hauptfenster eine Message schicken soll, dafür brauche ich aber oben erwähntes HWND.
Nach (ehrlich!) tagelangen Herumprobieren, Suchen und MSDN-Durchstöbern, habe ich jetzt eine Krücke hingekriegt:
Aus einer Stringtable (damit ich beim späteren Umbenenen keine Sorgen habe) lade ich die gewünschte Bezeichnung für das Hauptfenster ein und setzte diesen String bei OnInitDialog als Fenstertitel fest. Das mache ich so:
Code:
TCHAR sz[160];
LPCTSTR temp;
LoadString(GetModuleHandle(NULL), IDS_TITLE, sz, sizeof(sz)/sizeof(TCHAR));
temp = (LPCTSTR) sz;
SetWindowTextA( temp );
In meiner Klasse dann, lade ich aus der Stringtable den Fenstertitel in die Variable m_ParentName, suche das Fenster und sende dann die Message. Das geschieht so:
Code:
HWND hWnd = ::FindWindow(NULL, _T(m_ParentName));
if (hWnd) PostMessage( hWnd, WM_PLAYER_CALLBACK, wParam , lParam);
Ich glaube, das Ganze geht doch sicherlich viel einfacher und besser, oder? Nur leider weiss ich überhaupt nicht wie. Versuch mit GetParent() gingen allesamt schief. Vielleicht kann mir ja von Euch einer weiterhelfen.
Danke
Markus