Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

определить от какого контрола пришло сообщение C#

5.7K
22 февраля 2009 года
N-John
52 / / 05.07.2006
Здравствуйте!
Пришлось использовать WinAPI в C#. Как можно определить от какого контрола пришло сообщение?
Код:
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);
        }


В этом коде блок if выполняется при нажатии на любой контрол, а нужно только от picturebox
5
23 февраля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: N-John
В этом коде блок if выполняется при нажатии на любой контрол, а нужно только от picturebox


 
Код:
if(m.HWnd == picturebox.Handle) {
...
}

А чем не устраивает стандартное событие MouseDown и нужен такой изврат?
5.7K
23 февраля 2009 года
N-John
52 / / 05.07.2006
Проблема в том, что на какой бы контрол я не нажал, m.Msg не изменяется и никогда не совпадает хендлом нужного контрола. А понадобилось это извращение потому что в picturebox выводится изображение с веб-камеры и окно которое создает фильтр перекрывает окно picturebox. Потому приходится использовать DrainMessage для передачи сообщений в picturebox, но формат их несколько отличается от дотнетовских.
5.7K
23 февраля 2009 года
N-John
52 / / 05.07.2006
Все, спасибо! Проблему решил :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог