エディットコントロールでリターン押した時に鳴るビープ音について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
taketoshi

エディットコントロールでリターン押した時に鳴るビープ音について

#1

投稿記事 by taketoshi » 15年前

こんにちは。

現在エディットコントロールから数値を入力して
リストビューコントロールに反映させるプログラムをWINAPI32を使って書いています。

エディットコントロールをサブクラス化してVK_RETURNを捕まえて
データ格納用の構造体に数値を格納して、リストビューに随時反映させているのですが
数値入力の度にビープ音が鳴ってしまいます、これを何とかしたいです。

ググった所、ES_AUTOVSCROLLをCreateWindowの時に指定すれば問題ないとあったのですが
指定してもビープ音が鳴ってしまいます。


解決方法と、そもそもこのビープ音はなんの為に鳴っているのか。
どなたかご解説お願いいたします。

シエル

Re:エディットコントロールでリターン押した時に鳴るビープ音について

#2

投稿記事 by シエル » 15年前

コードを貼っていただけると助かります。

taketoshi

Re:エディットコントロールでリターン押した時に鳴るビープ音について

#3

投稿記事 by taketoshi » 15年前

int listinput() //リストビューへの登録
{
static char szBuff[64],szItem[64];
static int i = 0, no_item = 0,count = 1;
int no_sub = 0;
float nConversion;
hMem = GlobalAlloc(GHND,sizeof(DATA) * i+1);
data = (DATA *)GlobalLock(hMem);

GetWindowText(hEdit,szBuff,64);
data.count = count;
nConversion = atof(szBuff);
data.tubo = nConversion*10.764;

SetWindowText(hEdit,"");

item.mask = LVIF_TEXT;
wsprintf(szBuff,"%d",data.count);
item.pszText = szBuff;
item.iItem = no_item;
item.iSubItem = no_sub;
ListView_InsertItem(hList,&item);

no_sub++;

sprintf(szItem,"%f",data.tubo);
item.pszText = szItem;
item.iItem = no_item;
item.iSubItem = no_sub;
ListView_SetItem(hList,&item);
i++;
count++;
no_item++;

return 0;
}

LRESULT CALLBACK EditProc(HWND hEdit,UINT msg,WPARAM wParam,LPARAM lParam) //エディットコントロールサブクラス化
{
switch(msg)
{
case WM_CHAR:
{
if(wParam == VK_RETURN)
{
listinput();
}
break;
}
}
return CallWindowProc(OldEditProc,hEdit,msg,wParam,lParam);
}

汚くてアレなんですが・・・
リストビューへの登録とサブクラス化のコードです。
エディットコントロールのCreateとサブクラス化はWM_CREATEの時に実行しています。

シエル

Re:エディットコントロールでリターン押した時に鳴るビープ音について

#4

投稿記事 by シエル » 15年前

msdnの説明によると、ES_MULTILINEスタイルの指定のところで、
下記の説明が記載されています。


ES_MULTILINE 複数行エディット コントロールを指定します。
既定では単一行のエディット コントロールが指定されます。
ES_AUTOVSCROLL スタイルが指定されていると、エディット コントロールは、
できるだけ多くの行を表示し、ユーザーが Enter キーを押したときに垂直方向にスクロールします。ES_AUTOVSCROLL が指定されていない場合、
エディット コントロールは、できるだけ多くの行を表示しますが、
それ以上行を表示できなくなったときにユーザーが Enter キーを押すと、ビープ音を鳴らします。

参考になりますでしょうか?

taketoshi

Re:エディットコントロールでリターン押した時に鳴るビープ音について

#5

投稿記事 by taketoshi » 15年前

シエルさんありがとうございます。
ES_MULTILINEとES_AUTOVSCROLLを同時に指定したところビープ音が消えました。

ビープ音はこれ以上入力できませんの合図だったんですね。
非常に勉強になりました。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る