我们有一个使用 CHeaderCtrl 的 MFC 应用程序,并且一直使用 HDS_FILTERBAR 样式来过滤数据。效果很好。但是我们的用户希望能够将文本粘贴到过滤器单元格中。我还没有找到一种方法来获取指向任何 CEdit 类型的控件的指针,以便我可以调用 >Paste。我已经设法在应用程序的 ::PreTranslateMessage 的过滤器中检测到 Control-V。有一种方法可以通过调用 CHeaderCtrl->SetItem 将文本发送到过滤器,但这会立即启动过滤器。我只想能够粘贴文本。
所以...我尝试(我很绝望)使用 keybd_event 和 SendInput 来强制击键。这可行但有不良副作用,可能是由于 MFC 的消息处理,在我的情况下,用户已经按下了 Control + V。但在发送字母“A”并强制按下 SHIFT 键时,我意外发现 CHeaderCtrl 的过滤器确实支持粘贴,如果您:
控制 + SHIFT + V
问题是它很难做到,也很难告诉我的用户这样做。
我可以使用 keybd_event 模拟这个序列,但同样,它真的很古怪。
任何人都可以找到一种方法来访问 CEdit(如果有的话)到过滤的 CHeaderCtrl 或知道另一种解决方法吗?我尝试使用间谍实用程序,但不确定要查找什么。对不起,很长的帖子。