Editの最大桁数を設定する方法を教えて下さい。
MFCの設定見かけられるのですけど
APIで実現するにはどうやったら宜しいでしょうか?
自分なりにコーディングしたのですけど、
うまくいきません。
BOOL CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
TCHAR result[256];
TCHAR temp[256];
int idx;
switch(uMsg)
{
case WM_INITDIALOG:
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_ED_CODE:
lstrcpy(result, "");
lstrcpy(temp, "");
GetDlgItemText(hDlg, IDC_ED_CODE, result, sizeof(result));
idx = 0;
while (idx < 3) {
if (result[idx] == '\0') break;
temp[idx] = result[idx];
idx++;
}
temp[idx] = '\0';
SetDlgItemText(hDlg, IDC_ED_CODE, temp);
return(TRUE);
case IDCANCEL:
case IDOK:
EndDialog(hDlg, FALSE);
return(TRUE);
default:
break;
}
}
break;
default:
break;
}
return(FALSE);
}
開発環境 VC++ 6,0 Windows2000
SetDlgItemText(hDlg, IDC_ED_CODE, temp);
上記の場所でオーバーフローで落ちます。
他のEditの名前にするとうまくいくのですが…
やりたい事は、3桁まで入力できるようにしたいです。
Delphiならプロパティ→MaxLengthで簡単できるですが、
この場合はどうしたら良いでしょうか?
なにか解決策はありませんか?
EM_SETLIMITTEXT とか。
…オーバーフローで落ちるってのも妙な話ですね。
エディットボックスにテキストを設定してもオーバーフローは起きないはずですが。
それと、エディットボックスが WM_COMMAND を飛ばしてくることもないハズ。
何がしたいのか、簡単に説明してみてください。
うわぁ できました!
シャノンさんどうもありがとうございました。
もう、3〜4時間探し歩いてましたよ…
検索の仕方がヘタッピーなんですね 私。。。
本当にどうもありがとうございました。
SendDlgItemMessage(hDlg,IDC_ED_CODE,EM_SETLIMITTEXT,3,0);
オーバーフローしちゃうんですよ…
なぜだか…。。。
解決できたのでヨシします!
ご親切にどうもでした。
> 上記の場所でオーバーフローで落ちます。
オーバーフロー?
数値計算しているわけではないですし,オーバーフローは起きないと思いますが……。
エラーメッセージをちゃんと書いてみると,誰かが原因を発見してくれるかもしれません。
> それと、エディットボックスが WM_COMMAND を飛ばしてくることもないハズ。
EN_CHANGEとか飛んできますよ。
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/en_change.asp
>> それと、エディットボックスが WM_COMMAND を飛ばしてくることもないハズ。
> EN_CHANGEとか飛んできますよ。
うわ、失礼しました。
前言撤回です。ごめんなさい。
ツイート | ![]() |