Перетащите в MF C Диалог - PullRequest
       42

Перетащите в MF C Диалог

1 голос
/ 22 апреля 2020

Я пытаюсь добавить функцию перетаскивания в элемент управления на странице свойств, которая программно «оборачивается» в диалоге MF C во время выполнения. Эта «упаковка» включает создание экземпляра страницы свойств в качестве элемента диалога, а затем изменение ее размера и размещение в соответствии с размерами элемента управления изображением, который находится в диалоговом окне в файле .r c. Я не уверен, почему все было сделано таким образом, кроме как, возможно, для стандартизации внешнего вида страниц свойств в приложении, но в любом случае я в конечном итоге получаю эту сложную иерархию windows, элемент управления внутри страницы свойств внутри Picture Control внутри диалога.

Элемент управления, который я хочу принять перетаскиваемых файлов, вызвал DragAcceptFiles, но я думаю, что сообщение WM_DROPFILES для элемента управления отбрасывается до того, как оно достигает элемента управления, потому что один из родителей windows не принимает перетаскиваемые файлы. Я подумал о том, чтобы позвонить DragAcceptFiles всем родителям и передать WM_DROPFILES по цепочке windows, но я не хочу этого делать, потому что у них не будет обработчиков для приема файлов, и я покажу значок указывающие на то, что файлы могут быть сброшены на них независимо.

Любая помощь в выяснении того, как передать сообщение WM_DROPFILES на мой контроль, будет очень признательна.

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

На родительском уровне реализуйте переопределение для виртуального CDialog::PreTranslateMessage(MSG* pMsg)

. Это дает вам возможность увидеть сообщение WM_DROPFILES и перенаправить его в обработчик на странице свойств.

0 голосов
/ 29 апреля 2020

В конце концов я понял это, вызвав CWnd :: BringWindowToTop () как для элемента управления, на который я хотел перетащить файлы, так и для диалогового окна, в котором был включен элемент управления.

...