在MFC对话框中拖放

问题描述 投票:0回答:1

我正试图在运行时以编程方式 "包装 "在 MFC 对话框内的属性页上的控件中添加拖放功能。这种 "包装 "包括将属性页实例化为对话框的一个成员,然后调整其大小,并将其定位到对话框中.rc文件中的图片控件的尺寸。我不知道为什么要这样做,除了为了规范应用程序中属性页的外观之外,但无论如何,我最终会得到这样一个复杂的窗口层次结构,一个控件在属性页中,一个图片控件在对话框中。

我想接受拖动文件的控件有以下功能 DragAcceptFiles 但我认为 WM_DROPFILES 控件的消息在到达控件之前就被丢弃了,因为其中一个父窗口不接受拖动的文件。我考虑过调用 DragAcceptFiles 在所有的父母身上,并通过 WM_DROPFILES 但我不想这样做,因为它们没有接受文件的处理程序,而且会显示图标,表明文件可以丢在它们上面。

有什么办法可以帮助我解决这个问题吗?WM_DROPFILES 消息到我的控件将非常感激。

c++ winapi mfc
1个回答
2
投票

在父级中,实现对虚拟的 CDialog::PreTranslateMessage(MSG* pMsg)

这让你有机会看到 WM_DROPFILES 消息,并将它们重定向到属性页中的处理程序。


0
投票

最后,我通过调用 CWnd::BringWindowToTop()来解决这个问题,在我想要拖动文件的控件上和控件所在的对话框上都调用了 CWnd::BringWindowToTop()。

© www.soinside.com 2019 - 2024. All rights reserved.