2012-03-19 5 views
0

У меня есть управление, подклассическое от CDialogBar, оно имеет несколько кнопок (например, на панели инструментов). Когда я поймаю WM_LBUTTONDOWN в классе CDialogBar, это простой способ узнать, была ли нажата кнопка мыши на одной из кнопок, находящихся на элементе управления?Узнайте, где была нажата мышь на CDialogBar

ответ

1

CDialogBar класс обычно содержит обычные элементы управления в окне, поэтому при нажатии кнопки в это окно управления отправляется сообщение WM_LBUTTONDOWN, а не класс диалогового окна. Поэтому, если вы хотите перехватить эти сообщения (если это действительно так), вам нужно либо подклассировать окна, либо обработать их сообщения, либо установить крючок сообщения.

Вы также можете использовать инструмент Spy++, чтобы узнать, какие сообщения эффективно добираются до вашего CDialogBar интересующего вас объекта, чтобы увидеть, может ли обработка их быть решением вашей проблемы.

+0

Да, я подклассом из CDialogBar, им я поймаю WM_LBUTTONDOWN, но я хочу, чтобы другое поведение при нажатии на кнопку, находящуюся на элементе управления. – Hate

+0

Если вы подклассифицируете элементы управления (чтобы быть ясным - нет самой панели диалога), вы могут определенно переопределить их поведение, когда вы получаете сообщения в свой «WndProc», и он в ваших силах либо пересылать сообщения, либо обрабатывать их самостоятельно. Здесь даже не имеет большого значения, что кнопки размещаются в диалоговом окне - важно то, что путем подкласса вы перехватываете обработку сообщений. –

+0

Да, я знаю, что смогу, и я это сделаю. Вы не понимаете вопроса, это из-за моего плохого английского :(Я действительно поймаю событие WM_LBUTTONDOWN и обрабатываю его. Я переопределил PreTranslateMessage. Вопрос в том, как я могу, если пользователь нажал на одну из кнопок, находящихся в элементе управления , или просто на поверхности элемента управления. На самом деле я хочу переслать это сообщение в CDialogBar :: PreTranslateMessage, если пользователь нажал на кнопки и выполнил мой единственный мой код без стандартного, если он нажал не на кнопку, а только на элементе управления поверхность – Hate

Смежные вопросы