2009-04-09 2 views
0

トグルメカニズムを使用してsetfocusとsetcaptureを呼び出すことができます。また、OnLButtonDownでは、メッセージが渡されないようにしますが、クリックした瞬間に失敗するようです。キャプチャとフォーカスのあるウィンドウがそれを放棄しないようにする方法はありますか?フォーカスとキャプチャを特定のウィンドウにロックする

+0

あなたはちょうどそうすべきではありません.... –

+0

この特定のケースでは、それはカラーサンプラー用です。 –

答えて

2

カラーピッカーの場合、画面のどこからでも色を取得するにはthis articleをお試しください。

This oneは、より完全なユーティリティです。あなたが望むことをやりましょう。違いは、キーの組み合わせ[Alt + Ctrl + P]の停止をキャプチャして、クリックを止めることです。 2番目のリンクで

、次の関数呼び出しは、あなたのために有用であろう:

SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); 
RegisterHotKey(m_hWnd, 0x1FEB, MOD_CONTROL | MOD_ALT, 0x50); 

最初のものは、アクティブなウィンドウを保持し、第2のレジスタは、Alt + Ctrlキー+ P(そして、それが押されたときWM_HOTKEYイベントがウィンドウに表示されます。ここで、色のキャプチャを停止できます)。残念ながら、RegisterHotKeyをマウスボタンで使用することはできません。調べる必要がありますSetWindowsHookEx

SetWindowsHookExを使用すると、アプリケーションはフォーカスがなくてもイベントを受け取ることができます。フック "WH_MOUSE"を持つSetWindowsHookExをMouse Procedureと一緒に呼び出します。

この手順では、マウスメッセージが表示され、マウスが移動する場所のキャプチャを停止し(色を固定する)、SetWindowPosを使用してウィンドウを上に移動します。フックの登録をUnhookWindowsHookExで登録解除します。

これはあなたが習得する必要があるかもしれないかなりのものですが、リンクしてきたすべてのMSDNページには、あなたに役立つたくさんの情報があります。キーの代わりに2番目のリンクはあなたにとって完璧です。

希望に役立ちます。

関連する問題