Processcmdkey не вызывается в окне winforms, вызываемом из приложения C++
У нас есть библиотека DLL C#, которая вызывается из приложения C++. Окно c# Winform находится поверх главного окна C++. Заметил, что мы не можем захватить метод ProcessCmdKey. Есть идеи, почему мы не можем вызвать это?
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
Что я уже пробовал:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
Richard MacCutchan
Вам нужно предоставить больше информации. Где находится этот метод и как он соотносится с другими окнами?
Guru16
Метод находится в Winform (Form1.cs). Приложение C++ вызывает метод в c# Application. cs, который, в свою очередь, показывает нашу Winform.
0x01AA
Может быть, проблема с KeyPreview?
Форма.KeyPreview-Eigenschaft (Системы.Окна.Формы)[^]
Guru16
Он установлен на true.
0x01AA
Вы написали: "окно c# Winform находится поверх главного окна C++", что именно это означает? Установлен ли родительский элемент окна c# в основное окно C++?
Guru16
У нас есть главное окно C++. Из C++ мы вызываем метод в классе C#. затем мы показываем форму C#, которая на самом деле находится поверх этого окна C++ в виде модального диалога.
Dave Kreskowiak
Как именно создается экземпляр окна C# и показывается пользователю?
Я подозреваю, что это потому, что окно C# не подключено к насосу сообщений в Родительском коде C++.
Guru16
Компонент C++ вызывает метод в классе C#..затем в c# мы делаем форму.Показать и показать наше окно C#.
Dave Kreskowiak
Ладно, я больше искал код на стороне C++. Это приложение MFC, CLI,???
Доступна ли библиотека C# через COM?
Guru16
приложение MFC. И да, библиотека C# является COM-экспонированной.
Dave Kreskowiak
Ладно, обычно ты не показываешь форму. Обычно вы создаете UserControl или что-то подобное (все еще экспонируемое через COM) и добавляете этот элемент управления в диалоговое окно MFC. Маршрутизация сообщений проходит через обычный код C++ вместо того, чтобы полагаться на то, что вы сами подключите его к форме C#, что-то вроде этот[^].
Вместо формы.Шоу, вы, возможно, захотите, чтобы попробовать приложение.Вместо того, чтобы работать. Я никогда не видел, как используется форма, но видел, как используются элементы управления.