如何将某些内容拖放到静态控件中?

时间:2008-10-16 17:31:51

标签: mfc

如何将某些内容拖放到静态控件中?看起来我需要创建一个COleDropTarget的子类,并将其作为自定义CStatic中的成员变量包含在内。但这似乎并没有起作用。当我尝试将某些东西拖到静态控件上时,我得到了拒绝光标。

2 个答案:

答案 0 :(得分:2)

当您调用m_hWnd时,静态控件的COleDropTarget::Register必须有效,这就是为什么它在CMyStatic构造函数中不起作用的原因。您可以做的是覆盖CWnd::PreSubclassWindow班级中的CMyStatic

class CMyStatic : public CStatic {
    ...
    virtual void PreSubclassWindow();
};

void CMyStatic::PreSubclassWindow()
{
    CStatic::PreSubclassWindow();

    m_MyDropTarget.Register(this);
}

CodeProject上有一篇非常好的文章here,您可能会觉得有用。

答案 1 :(得分:1)

除了PreSubClassWindow()之外,还必须将CStatic控件设置为在其资源参数中设置Notify标志。否则控件将不会让应用程序知道鼠标移动,因此不会触发OnDragEnter()方法。