コールバック関数内でタイプされた文字を読み取るには

[戻る]
F 2003/09/13(土) 18:25:56
まだまだ初心者のFです。

さっそくですが
Windows SDKをつかってプログラムをしているのですが壁にぶつかりました!
あるコールバック関数内で、タイプされた文字を読み取りその文字によって
コールバック終了させるようなプログラムを作りたいのですが、
きちんと処理が終わらない限りずっとコールバックしているので
ウィンドウプロシージャが文字を受け取ることができません。

getch()やgetchar()などはSDKでは使えないのでしょうか?
また使えない場合ウィンドウプロシージャなしで文字を読み込むいい方法はないか
教えてください!

よろしくお願いします!

joan 2003/09/14(日) 00:27:58
> あるコールバック関数内で、タイプされた文字を読み取りその文字によって
> コールバック終了させるようなプログラムを作りたいのですが、

プロシージャの中でユーザーのキーボードの入力を受け取るまで待って
はいけません。(禁止ではないですが、お勧めしません。入力を待ってしまうと
次のウィンドウメッセージが処理できなくなり、キーボードの入力中に
マウスでウィンドウをクリックしてもウィンドウがフリーズしたかのように
固まってしまうためユーザーインターフェースの設計上好ましくありません)

どうしてもコールバック関数で入力を待ちたいのなら、新しいスレッドを作り、
そのスレッドでこの関数を呼ぶ方法があります。

あとキーボードの入力を受けるだけなら WM_CHAR や WM_KEYDOWN などの
メッセージを受け取ることで代用できます。あとはエディットボックスを
使うなど方法はあるかなと

> getch()やgetchar()などはSDKでは使えないのでしょうか?
ちょっと自身がないのですが、これらの関数はコンソールからの入力を受け
取る関数であり、コンソールが表示されてないGUIの環境で入力をする方が無理では?
と思うのですが。憶測なので誰か間違っていたらご指摘お願いします<(_ _)>

daisuke 2003/09/14(日) 19:32:40
joanさんの書かれた通りなのですが、たぶん一般的には、WM_KEYDOWNや
WM_CHARをプロシージャに追加して、そこでいろいろな処理をします。
これをやることで、
> getch()やgetchar()などはSDKでは使えないのでしょうか?
の代わりになるので、getch()やgetchar()などが使えるかどうかは知りませんが、
使う必要がなくなります。

F 2003/09/16(火) 15:12:55
ご返事ありがとうございます!
みなさますごい方ばかりでおどろきです!
とりあえずスレッドの勉強から始めます^^;

またわからないところがあったら質問させてください!

F 2003/09/16(火) 19:20:22
[[解決]]
やりました!
スレッド使ってできるようになりました
joanさんdaisukeさんありがとうございました!

古いスレッドには追加発言できません。