protected override void DefWndProc(ref Message m)
{
if (m.Msg == WM_MOUSEACTIVATE)
{
MessageBox.Show("HWnd: " + m.HWnd + " WParam: " + m.WParam + " MP: " + Control.MousePosition + " MB: " + Control.MouseButtons);
}
/*if (this.videoWindow != null)
{
this.videoWindow.NotifyOwnerMessage(m.HWnd, m.Msg, m.WParam.ToInt32(), m.LParam.ToInt32());
}*/
base.DefWndProc(ref m);
}
определить от какого контрола пришло сообщение C#
Пришлось использовать WinAPI в C#. Как можно определить от какого контрола пришло сообщение?
Код:
В этом коде блок if выполняется при нажатии на любой контрол, а нужно только от picturebox
Цитата: N-John
В этом коде блок if выполняется при нажатии на любой контрол, а нужно только от picturebox
Код:
if(m.HWnd == picturebox.Handle) {
...
}
...
}
А чем не устраивает стандартное событие MouseDown и нужен такой изврат?
Проблема в том, что на какой бы контрол я не нажал, m.Msg не изменяется и никогда не совпадает хендлом нужного контрола. А понадобилось это извращение потому что в picturebox выводится изображение с веб-камеры и окно которое создает фильтр перекрывает окно picturebox. Потому приходится использовать DrainMessage для передачи сообщений в picturebox, но формат их несколько отличается от дотнетовских.
Все, спасибо! Проблему решил :)