Editの最大桁数を設定するには


さえこ  2004-09-02 02:02:19  No: 54363

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


さえこ  2004-09-02 04:12:38  No: 54364

SetDlgItemText(hDlg, IDC_ED_CODE, temp);

上記の場所でオーバーフローで落ちます。
他のEditの名前にするとうまくいくのですが…
やりたい事は、3桁まで入力できるようにしたいです。
Delphiならプロパティ→MaxLengthで簡単できるですが、
この場合はどうしたら良いでしょうか?
なにか解決策はありませんか?


シャノン  2004-09-02 04:59:00  No: 54365

EM_SETLIMITTEXT とか。


シャノン  2004-09-02 05:02:17  No: 54366

…オーバーフローで落ちるってのも妙な話ですね。
エディットボックスにテキストを設定してもオーバーフローは起きないはずですが。

それと、エディットボックスが WM_COMMAND を飛ばしてくることもないハズ。
何がしたいのか、簡単に説明してみてください。


さえこ  2004-09-02 06:28:45  No: 54367

うわぁ  できました!
シャノンさんどうもありがとうございました。
もう、3〜4時間探し歩いてましたよ…
検索の仕方がヘタッピーなんですね  私。。。
本当にどうもありがとうございました。

SendDlgItemMessage(hDlg,IDC_ED_CODE,EM_SETLIMITTEXT,3,0);

オーバーフローしちゃうんですよ…
なぜだか…。。。
解決できたのでヨシします!
ご親切にどうもでした。


YuO  2004-09-02 06:59:57  No: 54368

> 上記の場所でオーバーフローで落ちます。

オーバーフロー?
数値計算しているわけではないですし,オーバーフローは起きないと思いますが……。
エラーメッセージをちゃんと書いてみると,誰かが原因を発見してくれるかもしれません。

> それと、エディットボックスが WM_COMMAND を飛ばしてくることもないハズ。

EN_CHANGEとか飛んできますよ。
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/en_change.asp


シャノン  2004-09-02 07:38:02  No: 54369

>> それと、エディットボックスが WM_COMMAND を飛ばしてくることもないハズ。
> EN_CHANGEとか飛んできますよ。

うわ、失礼しました。
前言撤回です。ごめんなさい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加