以下是 QueryContinueDrag 方法的声明:
virtual SCODE QueryContinueDrag(BOOL bEscapePressed, DWORD dwKeyState);
- bEscapePressed 参数表示用户是否按下了 Escape 键。
- dwKeyState 参数表示当前的键盘和鼠标状态。
QueryContinueDrag 方法应该返回 DRAGDROP_S_DROP、DRAGDROP_S_CANCEL 或 DRAGDROP_S_USEDEFAULTCURSORS 之一,用于指示拖放操作的下一步动作。
以下是一个简单的示例:
class YourDropSource : public COleDropSource
{
public:
virtual SCODE QueryContinueDrag(BOOL bEscapePressed, DWORD dwKeyState);
};
SCODE YourDropSource::QueryContinueDrag(BOOL bEscapePressed, DWORD dwKeyState)
{
if (bEscapePressed)
{
// 用户按下了 Escape 键,取消拖放操作
return DRAGDROP_S_CANCEL;
}
// 在这里添加其他逻辑,例如根据 dwKeyState 来判断是否应该继续拖放
// 返回 DRAGDROP_S_DROP 表示继续拖放,返回 DRAGDROP_S_CANCEL 表示取消拖放
return DRAGDROP_S_DROP;
}
在这个例子中,YourDropSource 是一个继承自 COleDropSource 的自定义拖放源类,重写了 QueryContinueDrag 方法。你可以根据需要,根据 bEscapePressed 和 dwKeyState 的值来进行相应的逻辑处理。
转载请注明出处:http://www.zyzy.cn/article/detail/21385/MFC/COleDropSource