2008-10-16 32 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()方法。