4

我需要拦截发送到我的 CHtmlView 对象的粘贴消息。根据 Spy++,它作为 WM_COMMAND 消息发送 - 但根据 Spy++,消息不是发送到 CHtmlView 对象,而是发送到它包装的 Internet Explorer_Server(或 IWebBrowser2)对象。在任何其他父对象中都看不到有问题的 WM_COMMAND 消息(我通过观察和 Spy++ 发现了这一点)。

我如何拦截这个(甚至,比如说,一个全选)消息?我已经查看了 AfxCallWndProc 以获得正确的 WM_COMMAND 消息,但它没有出现在那里。

4

1 回答 1

1

要拦截消息(例如:WM_COMMAND),您需要通过调用以下方法对窗口(在您的情况下为 Internet Explorer_Server)进行子类化:

BOOL SetWindowSubclass(
  _In_  HWND hWnd,
  _In_  SUBCLASSPROC pfnSubclass,
  _In_  UINT_PTR uIdSubclass,
  _In_  DWORD_PTR dwRefData
);

http://msdn.microsoft.com/en-us/library/windows/desktop/bb773183(v=vs.85).aspx#set_windowsubclass

之后,您自己的 Windows 程序首先进行控制,然后您可以决定如何处理该消息。

于 2012-10-09T23:28:43.520 回答