はじめまして。わからないことがあって検索していたらここにたどり着きました。
早速質問ですが、C++言語を使ってwindow表示で入力した文字を表示するという簡単なプログラムを作っているのですが、ENTERを押すと「ポン」という音が鳴ってしまいます。動作には支障ないのですが、音を消す方法はありませんか?以下に簡略なソースを載せます。
LRESULT CALLBACK EditProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
int re;
if(iMsg == WM_KEYDOWN && wParam == VK_RETURN){
re = GetWindowText(hWndTextIn, buf, BUF_LENGTH);
SendMessage(hWndTextDisp, WM_SETTEXT, SAY_LENGTH, (LPARAM) buf);
InvalidateRect(cons.hWnd, NULL, TRUE);
}
if(iMsg == WM_KEYUP && wParam == VK_RETURN){
SendMessage(cons.hWndTextIn, WM_SETTEXT, BUF_LENGTH, (LPARAM) NULL);
}
return CallWindowProc(cons.fnoldedit, hwnd, iMsg, wParam, lParam);
}
キーボード入力について聞きたいのですが・・・
Re:キーボード入力について聞きたいのですが・・・
すみません。いきなりソースまちがえてました;
//hWndTextIn 入力ハンドル
//hWndTextDisp 出力ハンドル
//hWnd windowハンドル
LRESULT CALLBACK EditProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
int re;
if(iMsg == WM_KEYDOWN && wParam == VK_RETURN){
re = GetWindowText(hWndTextIn, buf, BUF_LENGTH);
SendMessage(hWndTextDisp, WM_SETTEXT, SAY_LENGTH, (LPARAM) buf);
InvalidateRect(hWnd, NULL, TRUE);
}
if(iMsg == WM_KEYUP && wParam == VK_RETURN){
SendMessage(hWndTextIn, WM_SETTEXT, BUF_LENGTH, (LPARAM) NULL);
}
return CallWindowProc(fnoldedit, hwnd, iMsg, wParam, lParam);
}
//hWndTextIn 入力ハンドル
//hWndTextDisp 出力ハンドル
//hWnd windowハンドル
LRESULT CALLBACK EditProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
int re;
if(iMsg == WM_KEYDOWN && wParam == VK_RETURN){
re = GetWindowText(hWndTextIn, buf, BUF_LENGTH);
SendMessage(hWndTextDisp, WM_SETTEXT, SAY_LENGTH, (LPARAM) buf);
InvalidateRect(hWnd, NULL, TRUE);
}
if(iMsg == WM_KEYUP && wParam == VK_RETURN){
SendMessage(hWndTextIn, WM_SETTEXT, BUF_LENGTH, (LPARAM) NULL);
}
return CallWindowProc(fnoldedit, hwnd, iMsg, wParam, lParam);
}
Re:キーボード入力について聞きたいのですが・・・
「ポン」と関係あるかは知りませんが、
SendMessage(hWndTextIn, WM_SETTEXT, BUF_LENGTH, (LPARAM) NULL);
は変です。第4引数で NULL を渡してます。
あと第3引数は利用できないはずですが、hWndTextIn のウィンドウを
サブクラス化して、WM_SETTEXT メッセージを処理しているという
ことでしょうか?
SendMessage(hWndTextIn, WM_SETTEXT, BUF_LENGTH, (LPARAM) NULL);
は変です。第4引数で NULL を渡してます。
あと第3引数は利用できないはずですが、hWndTextIn のウィンドウを
サブクラス化して、WM_SETTEXT メッセージを処理しているという
ことでしょうか?
Re:キーボード入力について聞きたいのですが・・・
返答ありがとうございます。
>SendMessage(hWndTextIn, WM_SETTEXT, BUF_LENGTH, (LPARAM) NULL);
>は変です。第4引数で NULL を渡してます。
のNULLは入力側のウィンドウの文字を消すためにこのようにしました。
>あと第3引数は利用できないはずですが、hWndTextIn のウィンドウを
>サブクラス化して、WM_SETTEXT メッセージを処理しているという
>ことでしょうか?
はい。そのとおりです。
どこがおかしいんだろう・・・
>SendMessage(hWndTextIn, WM_SETTEXT, BUF_LENGTH, (LPARAM) NULL);
>は変です。第4引数で NULL を渡してます。
のNULLは入力側のウィンドウの文字を消すためにこのようにしました。
>あと第3引数は利用できないはずですが、hWndTextIn のウィンドウを
>サブクラス化して、WM_SETTEXT メッセージを処理しているという
>ことでしょうか?
はい。そのとおりです。
どこがおかしいんだろう・・・
Re:キーボード入力について聞きたいのですが・・・
NULLを""に変えてみたのですが、やはり「ポン」と鳴ってしまいます。
他の部分がおかしいのかもしれないのでソースを添付します。
判る人がおられましたら意見お願いします。
失礼ながら、resource.h・xxx.rc・アイコン等は入れてないのでビルドは通りません。
他の部分がおかしいのかもしれないのでソースを添付します。
判る人がおられましたら意見お願いします。
失礼ながら、resource.h・xxx.rc・アイコン等は入れてないのでビルドは通りません。
Re:キーボード入力について聞きたいのですが・・・
その音はどんな音ですか?
そのアプリ用に用意した音なのでしょうか?
もし、そうでないのであればOSのイベントにサウンドが
割り当てられていたりしませんか?
そのアプリ用に用意した音なのでしょうか?
もし、そうでないのであればOSのイベントにサウンドが
割り当てられていたりしませんか?
Re:キーボード入力について聞きたいのですが・・・
>その音はどんな音ですか?
>そのアプリ用に用意した音なのでしょうか?
いいえ、音は用意していません。
>もし、そうでないのであればOSのイベントにサウンドが
>割り当てられていたりしませんか?
∑ そうだと思います。どうやってサウンド割り当てを解除できるのでしょうか?
>そのアプリ用に用意した音なのでしょうか?
いいえ、音は用意していません。
>もし、そうでないのであればOSのイベントにサウンドが
>割り当てられていたりしませんか?
∑ そうだと思います。どうやってサウンド割り当てを解除できるのでしょうか?
Re:キーボード入力について聞きたいのですが・・・
なるほど。
であれば、XPを使っているとして、コントロールパネルの「サウンドとオーディオデバイス」を
開いて、さらに「サウンド」タブの中で設定を変えることができます。
ざっくりと「サウンド設定」をサウンドなしにすれば全部のイベントが
解除されます。
Windows XP ステップ バイ ステップ ガイド : サウンド設定を選択する
http://www.microsoft.com/japan/enable/t ... cheme.mspx
各種のイベント音を消す:デジタルARENA
http://arena.nikkeibp.co.jp/article/tec ... 09/120840/
であれば、XPを使っているとして、コントロールパネルの「サウンドとオーディオデバイス」を
開いて、さらに「サウンド」タブの中で設定を変えることができます。
ざっくりと「サウンド設定」をサウンドなしにすれば全部のイベントが
解除されます。
Windows XP ステップ バイ ステップ ガイド : サウンド設定を選択する
http://www.microsoft.com/japan/enable/t ... cheme.mspx
各種のイベント音を消す:デジタルARENA
http://arena.nikkeibp.co.jp/article/tec ... 09/120840/
Re:キーボード入力について聞きたいのですが・・・
調べてみたところ
一般の警告音
Windows XP Ding.wav
が、鳴ってるみたいです。
これは異常ではないのですか?
一般の警告音
Windows XP Ding.wav
が、鳴ってるみたいです。
これは異常ではないのですか?
Re:キーボード入力について聞きたいのですが・・・
>これは異常ではないのですか?
そのイベントはちょっとした喚起を促す程度のことでも発生するものなので、
気にしなくてもいいと思います。
で、コンパネから設定しないのであれば、メッセージの処理(EditProc)で
WM_CHARのとき且つ押されたのが VK_RETURNなら何もしないようにすれば鳴らなくなります。
そのイベントはちょっとした喚起を促す程度のことでも発生するものなので、
気にしなくてもいいと思います。
で、コンパネから設定しないのであれば、メッセージの処理(EditProc)で
WM_CHARのとき且つ押されたのが VK_RETURNなら何もしないようにすれば鳴らなくなります。
Re:キーボード入力について聞きたいのですが・・・
ありがとうございました。
EditProcの最後に
if(wParam == VK_RETURN) return 0;
を書くと鳴らなくなりました。
しっぽさん、Justyさん本当にありがとうございました。
また問題にぶつかったときよろしくお願いします。
EditProcの最後に
if(wParam == VK_RETURN) return 0;
を書くと鳴らなくなりました。
しっぽさん、Justyさん本当にありがとうございました。
また問題にぶつかったときよろしくお願いします。