掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
PreTranslateMessageでWM_MOUSEMOVEが検出できない (ID:69739)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 子ウィンドウ側でWM_MOUSEMOVE等の検出処理が必要なようですね いや。PreTranslateMessage は”PreTranslateMessage を実行したウィンドウの子ウィンドウに 対して投げられたメッセージ”も検出できる。 けど、如何なる条件下であっても検出できるわけじゃない。例えば↓ケース等では×。 a、子ウィンドウが別スレッドに所属している ※ この場合、トップレベル(AfxGetMainWnd()で取れる)ウィンドウでのみ検出可 b、子ウィンドウが所属しているスレッドが MFC 機構(CWinThread)で構築されていない > pWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS); DirectShow を利用して動画再生とかしてない? この処理って IVideoWindow::put_WindowStyle() だと思われる。 以降は”DirectShowを使用している”という仮定を前提にして書く。仮定が偽ならスルーして。 DirectShow を極一般的な形で利用して動画再生を行った場合、以下の様な処理が行われる。 1、DirectShow 関連処理を行うため用の独自スレッド(!MFC)を(DirectShow 自身が)構築 2、再生した動画を表示するため用のウィンドウ(独自スレッドに所属)を構築 3、動画再生 > Picture Control 上に子ウィンドウが表示 この子ウィンドウは ↑の[2] 処理で作成されたウィンドウではないかと推測される。 仮にそうだった場合、 → このウィンドウが所属するスレッドは ↑[1] のスレッド → [1] のスレッド は ↑[b] ケースに該当する。 → PreTranslateMessage でメッセージを拾えない。 となる。 > 何か良い手 IVideoWindow::put_MessageDrain() で対応可能と思われ。 http://msdn.microsoft.com/ja-jp/library/cc369762.aspx
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.