0
据this article,允许降只有在目标,我们必须MFC编辑控件 - WM_DROPFILES消息寄存器拖放
使用SubclassDlgItem()重新路由一个消息对话框对象这样所有的处理都可以在那里完成。
DanRollins先生(文章作者)还提供了一个示例
class CEditDropNotif : public CEdit
{
virtual BOOL PreTranslateMessage(MSG* pMsg) {
if (pMsg->message == WM_DROPFILES) {
GetParent()->SendMessage(WM_DROPFILES, pMsg->wParam, pMsg->lParam);
return TRUE; // eat it
}
return FALSE; // allow default processing
}
};
BOOL CMyDlg::OnInitDialog()
{
...
static CEditDropNotif cEd; // must persist (usually a dlg member)
cEd.SubclassDlgItem(IDC_EDIT1, this);
::DragAcceptFiles(cEd.m_hWnd, true); // the editbox, not the dialog
...
但我不明白为什么编辑控件(CEdit的)具有接受文件在属性窗口( Visual Studio Resource视图),但无法为自己注册WM_DROPFILES消息,而无需创建继承类(或者它可以但我还不知道)。
我看到,我们可以通过下面的代码
BEGIN_MESSAGE_MAP(CSimpleDlg, CDialogEx)
...
ON_BN_CLICKED(IDC_BTN_01, &CSimpleDlg::OnBnClickedBtn01)
END_MESSAGE_MAP()
为的按钮点击消息有没有办法,我可以做拖放事件类似,像
ON_DRAW_DROP(IDC_TXT_01, &CSimpleDlg::OnDragDrop01)//Is exist?