Mfc 拖动复制操作期间清除MK_控制标志

Mfc 拖动复制操作期间清除MK_控制标志,mfc,drag-and-drop,ole,stingray,Mfc,Drag And Drop,Ole,Stingray,我在MFC上使用Stingray客观视图作为画布编辑应用程序。我最近开始遇到一个奇怪的问题,在拖动复制操作中清除了控制键设置,也就是说,如果画布上有一个对象,并且在移动时按住CTRL键,则应该创建一个副本,而不是移动原始对象 奇怪的是,我发现如果我在COleDropTarget::XDropTarget::DragOver的开头放置一个断点,那么我可以看到MK_控制标志总是为dwKeyState参数设置的,并且拖动副本工作正常。但如果没有断点,则通常不会设置MK_控制标志,即使我按住CTRL键

我在MFC上使用Stingray客观视图作为画布编辑应用程序。我最近开始遇到一个奇怪的问题,在拖动复制操作中清除了控制键设置,也就是说,如果画布上有一个对象,并且在移动时按住CTRL键,则应该创建一个副本,而不是移动原始对象

奇怪的是,我发现如果我在COleDropTarget::XDropTarget::DragOver的开头放置一个断点,那么我可以看到MK_控制标志总是为dwKeyState参数设置的,并且拖动副本工作正常。但如果没有断点,则通常不会设置MK_控制标志,即使我按住CTRL键

有人知道问题的原因吗

谢谢,
凯文

我没有使用黄貂鱼软件,但

问题是: 它以前有用吗? 你怎么知道国旗没有设置? 如果设置了断点,则应在同一内存位置中不设置断点

如果确定已清除,则必须在断点后清除。 如果它以前工作过,并且停止提供您正在运行相同版本的代码,那么罪魁祸首很可能不是您的应用程序

如果它在充电后停止工作,很可能是代码的变化导致了这个问题;它可能是你的代码或黄貂鱼部分的某种缺陷。
您已经提到使用ColedopTarget。如果您有stingray的源代码,请查看它是否包含任何拖放自定义项。

>问题:它以前工作过吗。。。是的,当我最初编写代码时,我花了几周的时间来编写它,从来没有遇到过这个问题。>你怎么知道标志没有设置。。。当我删除断点并将其称为断点A时,我可以在代码中的不同位置设置另一个断点并将其称为断点B,只有在未设置标志时才会命中该断点。>如果设置了断点,则应在同一内存位置设置该断点而不设置断点。。。这是我所期望的,但事实并非如此。可能是某种多线程问题?>如果您确定它已清除,则必须在断点后清除它。。。当我点击断点B时,如上所述,我可以将调用堆栈追溯到断点A曾经所在的位置,我可以看到它已经被该点清除。>如果它之前工作并停止。。。我对代码进行了更改,Stingray还具有拖放自定义功能,因此可能是这两种情况之一导致了问题。但是,我已经浏览了所有这些代码好几次,都没有发现问题。考虑到我描述的症状,我想我正在寻找任何可能帮助我从不同角度解决问题的技巧。