家の中でのこだわりスペースはどこですか?

VC++(MFC)でプログラムしています。

画面キャプチャソフトをつくっています。

今現在、PreTranslateMessage(MSG* msg)関数で、WM_SYSKEYDOWNメッセージとWM_KEYDOWNメッセージを拾って、処理するようにしています。これだと、ウィンドウがアクティブな状態だとうまく処理できるのですが、ウィンドウを非アクティブにするとメッセージを拾ってくれません。

理想としてはタスクバーにプログラムを格納しただけの状態でメッセージを拾って処理をしたいのですが、どうやればいいのか方法がわかりません・・

どなたかご教授お願いします。

市販ソフトの紙copiはタスクバーに常駐するだけであとはCtrl+Shift+Gを押せばファイルを保存してくれます。そのようなことがしたいんですが・・

A 回答 (1件)

こんにちは。



ウィンドウがディスアクティブの場合は、通常のWM_系メッセージを受け取れません。
キーコンビネーションによるイベントを受け取りたい場合は
1.Hotkeyに登録する
2.GetAsyncKeyState()を繰り返し呼び出すことで、キーを取得する
という手段が考えられます。
プログラムを設計する上でスマートなのは1でしょうか。
Hotkeyを使うなら、RegisterHotKey()というAPIがWindowsに用意されていますよ。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

Windowが非アクティブなとき、通常のWM_系メッセージはうけとれないんですね。勉強になりました。

その際は、Hotkeyに登録するといいんですね。色々ググッて検索していて、Hotkeyというのもでてきたんですが、関係ないだろうと無視してました・・

2のGetAsyncKeyState()というのも、せっかく教えていただいたので、色々ググッて調べてみようと思います。

早速教えてくださり、とてもうれしいです。私はMFCはまだほんのかじり始めですが、実践しようとサンプルをどんどんつくっています。おかげさまで問題が解決できそうです。このたびはどうもありがとうござました。良いご回答をいただけまして、大変うれしいです。どうもありがとうございました。

お礼日時:2009/05/16 17:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報