在 MFC 对话框中拖放
Drag and drop in MFC Dialog
我正在尝试向 属性 页面上的控件添加拖放功能,该页面在运行时以编程方式 "wrapped" 在 MFC 对话框内。此 "wrapping" 涉及将 属性 页面实例化为对话框的成员,然后调整其大小并将其定位到 .rc 文件中对话框上的图片控件的尺寸。我不确定为什么要这样做,除了可能标准化应用程序中 属性 页面的外观,但无论如何我最终都会得到 windows 这个复杂的层次结构,一个控件在 属性 页面内 在对话框内的图片控件内。
我想接受拖拽文件的控件调用了 DragAcceptFiles
,但我认为控件的 WM_DROPFILES
消息在到达控件之前就被丢弃了,因为其中一个parent windows 不接受拖动的文件。我考虑过在所有 parent 上调用 DragAcceptFiles
,并将 WM_DROPFILES
传递到 windows 的链下,但我不想这样做,因为他们不会接受文件的处理程序,并会显示图标,指示无论如何都可以将文件放在上面。
任何有关如何将 WM_DROPFILES
消息发送到我的控件的帮助都将不胜感激。
在父级别,实现虚拟 CDialog::PreTranslateMessage(MSG* pMsg)
的覆盖
这让您有机会看到 WM_DROPFILES
消息并将它们重定向到 属性 页面中的处理程序。
我最终通过在我想将文件拖到其中的控件以及控件所在的对话框上调用 CWnd::BringWindowToTop() 来解决这个问题。
我正在尝试向 属性 页面上的控件添加拖放功能,该页面在运行时以编程方式 "wrapped" 在 MFC 对话框内。此 "wrapping" 涉及将 属性 页面实例化为对话框的成员,然后调整其大小并将其定位到 .rc 文件中对话框上的图片控件的尺寸。我不确定为什么要这样做,除了可能标准化应用程序中 属性 页面的外观,但无论如何我最终都会得到 windows 这个复杂的层次结构,一个控件在 属性 页面内 在对话框内的图片控件内。
我想接受拖拽文件的控件调用了 DragAcceptFiles
,但我认为控件的 WM_DROPFILES
消息在到达控件之前就被丢弃了,因为其中一个parent windows 不接受拖动的文件。我考虑过在所有 parent 上调用 DragAcceptFiles
,并将 WM_DROPFILES
传递到 windows 的链下,但我不想这样做,因为他们不会接受文件的处理程序,并会显示图标,指示无论如何都可以将文件放在上面。
任何有关如何将 WM_DROPFILES
消息发送到我的控件的帮助都将不胜感激。
在父级别,实现虚拟 CDialog::PreTranslateMessage(MSG* pMsg)
这让您有机会看到 WM_DROPFILES
消息并将它们重定向到 属性 页面中的处理程序。
我最终通过在我想将文件拖到其中的控件以及控件所在的对话框上调用 CWnd::BringWindowToTop() 来解决这个问题。