Forums Neueste Beiträge
 

Message-Problem

13/07/2009 - 08:37 von Markus Baechler | Report spam
Hi NG,

Wir haben eine von CView- Abgeleitete Klasse. In der erzeugen wir einen in
einer C#- Lib eingebetteten Dialog mit

UnsereLib::UnserDialog ^dlg=gcnew UnsereLib::UnserDialog();
dlg->Show(gcnew UnsereLib::WindowWrapper(System::IntPtr(m_hWnd)));

WindowWrapper ist eine Klasse die von System.Windows.Forms.IWin32Window
abgeleitet ist und das HWND für den C#- Dialog aus dem IntPtr umwandelt.

In dem Dialog funktionieren die Eingaben in Textboxen (wenn ich die mit der
Maus aktiviere). Auch lassen sich die Buttons mit der Maus anklicken. Nur
wenn ich die Tabulatortaste drücke, kommt ein Windows- Message- Ping. Selbst
dann, wenn ich vorher mit der Maus eine Textbox aktiviert habe.

Hat jemand eine Idee, warum dies so ist???


Vielen Dank.

Gruß,
Markus
 

Lesen sie die antworten

#1 Jochen Kalmbach [MVP]
13/07/2009 - 09:45 | Warnen spam
Hallo Markus!


dlg->Show(gcnew UnsereLib::WindowWrapper(System::IntPtr(m_hWnd)));

In dem Dialog funktionieren die Eingaben in Textboxen (wenn ich die mit der
Maus aktiviere). Auch lassen sich die Buttons mit der Maus anklicken. Nur
wenn ich die Tabulatortaste drücke, kommt ein Windows- Message- Ping. Selbst
dann, wenn ich vorher mit der Maus eine Textbox aktiviert habe.



Wenn Du das Fenster nur "anzeigst" (also nicht als Dialog), dann musst
Du selber für das Dialog-Handling sorgen (das ist nicht C# spezifisch).

Also baue in Deiner "normalen" Message-Loop ein
"IsDialogMessage":

while(GetMessage(&msg, NULL, 0, 0))
{
if(!IsDialogMessage(hWndDlg, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

Siehe auch:
http://msdn.microsoft.com/en-us/lib...deless_box

Greetings
Jochen

Ähnliche fragen