トップ回答者
スレッドによるキーの監視

質問
-
Visual Studio 2005
MFC教えて頂きたいのですが
スレッドでキーの監視は可能なのでしょうか。
例えばAのキーが押された場合、メッセージボックスを出力するといった
処理をスレッド内で行なうことは可能なのでしょうか。
例)
void CTestDlg::OnBnClickedButton1()
{
hThread = CreateThread( 0, 0, testhread, 0, 0, 0);
}unsigned long __cdecl testhread(LPVOID pParam)
申し訳ございませんが、よろしくお願い致します。
{
if(keydown == 'A')
{
MessageBox(NULL,_T("Aのキーが押下されました。"),_T(""),MB_OK);
}
return 0;
}
回答
-
なぜ? スレッドでやりたいんでしょう?
普通にメインスレッドで判定する方が簡単だと思うのですが。
前提条件がきちんと書かれていませんが、そのアプリケーションのウインドウにフォーカスがある場合で
良いのですよね。もしそうならウインドウを持っているメインスレッドにウインドウメッセージが来ると思うので
そこで処理してしまった方が良いと思うのです。
ワーカースレッド(ですよね)はウインドウを持っていないのでメッセージは飛んできませんので
ワーカースレッドにわざわざ入力されたキー情報を通知して表示しなくてはならなくなると思います。
これだとわざわざワーカースレッドにする意味がいないように思うのでスレッドでやりたいと言う理由を
書いてもらった方が良いと思います。
もしかしたら他のアプローチが見つかるかもしれません。
すべての返信
-
なぜ? スレッドでやりたいんでしょう?
普通にメインスレッドで判定する方が簡単だと思うのですが。
前提条件がきちんと書かれていませんが、そのアプリケーションのウインドウにフォーカスがある場合で
良いのですよね。もしそうならウインドウを持っているメインスレッドにウインドウメッセージが来ると思うので
そこで処理してしまった方が良いと思うのです。
ワーカースレッド(ですよね)はウインドウを持っていないのでメッセージは飛んできませんので
ワーカースレッドにわざわざ入力されたキー情報を通知して表示しなくてはならなくなると思います。
これだとわざわざワーカースレッドにする意味がいないように思うのでスレッドでやりたいと言う理由を
書いてもらった方が良いと思います。
もしかしたら他のアプローチが見つかるかもしれません。