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 に答える