まだまだ初心者のFです。
さっそくですが
Windows SDKをつかってプログラムをしているのですが壁にぶつかりました!
あるコールバック関数内で、タイプされた文字を読み取りその文字によって
コールバック終了させるようなプログラムを作りたいのですが、
きちんと処理が終わらない限りずっとコールバックしているので
ウィンドウプロシージャが文字を受け取ることができません。
getch()やgetchar()などはSDKでは使えないのでしょうか?
また使えない場合ウィンドウプロシージャなしで文字を読み込むいい方法はないか
教えてください!
よろしくお願いします!
> あるコールバック関数内で、タイプされた文字を読み取りその文字によって
> コールバック終了させるようなプログラムを作りたいのですが、
プロシージャの中でユーザーのキーボードの入力を受け取るまで待って
はいけません。(禁止ではないですが、お勧めしません。入力を待ってしまうと
次のウィンドウメッセージが処理できなくなり、キーボードの入力中に
マウスでウィンドウをクリックしてもウィンドウがフリーズしたかのように
固まってしまうためユーザーインターフェースの設計上好ましくありません)
どうしてもコールバック関数で入力を待ちたいのなら、新しいスレッドを作り、
そのスレッドでこの関数を呼ぶ方法があります。
あとキーボードの入力を受けるだけなら WM_CHAR や WM_KEYDOWN などの
メッセージを受け取ることで代用できます。あとはエディットボックスを
使うなど方法はあるかなと
> getch()やgetchar()などはSDKでは使えないのでしょうか?
ちょっと自身がないのですが、これらの関数はコンソールからの入力を受け
取る関数であり、コンソールが表示されてないGUIの環境で入力をする方が無理では?
と思うのですが。憶測なので誰か間違っていたらご指摘お願いします<(_ _)>
joanさんの書かれた通りなのですが、たぶん一般的には、WM_KEYDOWNや
WM_CHARをプロシージャに追加して、そこでいろいろな処理をします。
これをやることで、
> getch()やgetchar()などはSDKでは使えないのでしょうか?
の代わりになるので、getch()やgetchar()などが使えるかどうかは知りませんが、
使う必要がなくなります。
ご返事ありがとうございます!
みなさますごい方ばかりでおどろきです!
とりあえずスレッドの勉強から始めます^^;
またわからないところがあったら質問させてください!
やりました!
スレッド使ってできるようになりました
joanさんdaisukeさんありがとうございました!