Как перетащить правую кнопку с Win32 API? - PullRequest
1 голос
/ 27 мая 2011

Я реализовал интерфейс IDropTarget, и перетаскивание (файл из проводника) работает хорошо.

Когда я перетаскиваю файл правой кнопкой мыши, контекстное меню не появляется.

Так что я думаю, что я обязан показать контекстное меню,

Но в методе IDropTarget :: Drop (grfKeyState & MK_RBUTTON) всегда равно 0.

Как узнать, была ли кнопка перетаскивания мыши правильной?

И есть ли специальный способ показать меню и получить выбор после удаления?

(я предпочитаю Win32 API, я не использую MFC.)

1 Ответ

3 голосов
/ 27 мая 2011

Полагаю, (grfKeyState & MK_RBUTTON) всегда равно 0, потому что когда вызывается метод Drop(), кнопка мыши уже отпущена (вы только что сделали сброс) - поэтому, естественно, флаги состояния клавиатуры / мыши будут указывать, что оно действительно выпущено.

Что вы можете (и должен , в соответствии с документацией) сделать, это заранее определить порядок действий, которые вы выполняете над Drop () при работе с DropEnter(). Я сам не пробовал, но уверен, что там должен быть установлен флаг MK_RBUTTON . Вы можете проверить этот флаг при вызове метода DropEnter() вашей целевой цели, сохранить его и затем открыть контекстное меню самостоятельно, когда вызывается Drop(). Это не самое чистое решение, но я не знаю, есть ли способ заставить Windows показывать вам контекстное меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...