Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Message-Problem

0 views
Skip to first unread message

Markus Baechler

unread,
Jul 13, 2009, 2:37:37 AM7/13/09
to
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


Jochen Kalmbach [MVP]

unread,
Jul 13, 2009, 3:45:27 AM7/13/09
to
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/library/ms644996.aspx#modeless_box

Greetings
Jochen

0 new messages