我有一个对话框程序,想让它实现拖放。但无论用OnDrag或OnDrop等等,所有的的消息都发送给CView类而不是CDialog类,为什么?
你应该使用COleDropTarget类,试一下这些:
class CMyOleDropTarget: public COleDropTarget
{
protected:
virtual DROPEFFECT OnDragEnter( CWnd* pWnd, COleDataObject*
pDataObject, DWORD dwKeyState, CPoint point )
{
TRACE( "DRAG Enter\n" );
return DROPEFFECT_MOVE;
};
virtual DROPEFFECT OnDragOver( CWnd* pWnd, COleDataObject*
pDataObject, DWORD dwKeyState, CPoint point )
{
TRACE( "DRAG Over\n" );
return DROPEFFECT_MOVE;
};
};
CMyOleDropTarget DropTarget;
BOOL CDlgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
DropTarget.Register( this );
不要忘记调用AfxOleInit()
BOOL CDlgApp::InitInstance()
{
AfxEnableControlContainer();
AfxOleInit();
}
|