2008-10-16 14 views
1

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

回答

2

,当你调用COleDropTarget::Register,这就是为什么它不会从您的CMyStatic构造内工作的静态控件的m_hWnd必须是有效的。你可以做的是超越CWnd::PreSubclassWindowCMyStatic类中:

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

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

    m_MyDropTarget.Register(this); 
} 

有CodeProject上一个真正的好文章here,你可能会发现有用的。

1

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