2012-10-09 32 views
4

我需要攔截髮送到我的CHtmlView對象的粘貼消息。根據Spy ++,它被作爲WM_COMMAND消息發送 - 但是根據Spy ++,消息不會被髮送到CHtmlView對象,而是發送到它所包裝的Internet Explorer_Server(或IWebBrowser2)對象。有問題的WM_COMMAND消息在任何其他父對象中都沒有看到(我通過觀察和Spy ++發現了這一點)。在Internet Explorer_Server(IWebBrowser2)上攔截WM_COMMAND(從加速器發送)

我該如何攔截這個(甚至是全選)消息?我已經觀看了AfxCallWndProc獲取正確的WM_COMMAND消息,並且它不會顯示在那裏。

回答

1

攔截消息(例如:WM_COMMAND),你需要繼承的窗口(在你的情況下上網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

你自己的窗口過程需要先控制後你可以決定如何處理這封郵件。

+0

我最終用'SetWindowLongPtr()'去了,但這讓我走上了正軌。謝謝。 – Joboodi

+0

我使用了'SetWindowLongPtr()'數十年。它工作正常,工作正常。 「SetWindowSubclass」有什麼問題?它在封面上也是一樣。 –