コールバック関数内でタイプされた文字を読み取るには – プログラミング – Home

コールバック関数内でタイプされた文字を...
 
通知
すべてクリア

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


F
 F
(@F)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

まだまだ初心者のFです。

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

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

よろしくお願いします!


引用未解決
トピックタグ
joan
 joan
(@joan)
ゲスト
結合: 23年前
投稿: 42
 

> あるコールバック関数内で、タイプされた文字を読み取りその文字によって
> コールバック終了させるようなプログラムを作りたいのですが、

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

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

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

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


返信引用
daisuke
 daisuke
(@daisuke)
ゲスト
結合: 22年前
投稿: 11
 

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


返信引用
F
 F
(@F)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

ご返事ありがとうございます!
みなさますごい方ばかりでおどろきです!
とりあえずスレッドの勉強から始めます^^;

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


返信引用
F
 F
(@F)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

やりました!
スレッド使ってできるようになりました
joanさんdaisukeさんありがとうございました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました