• ベストアンサー

CEdit の内容が変わった時にメッセージを表示させたい

C++6.0MFCで開発しております。 現在,CEditにスピンボタン(CSpinButtonCtrl)をSetBodyをして、関連付けております。 スピンボタンを使用して、複数のEditの中の合計値が50以上の値が入ったらメッセージを出したいのですが、 スピンボタンのONLbuttonDownのタイミングでEditの中身をチェックしたら、スピンボタンを押す前の値しか取得できませんでした。 そこで、ONLbuttonUpのタイミングでEditの中身をチェックするとスピンボタンを押した後の値が取得できたのでよしとしていたのです。 しかし、スピンボタンをずっと押し続けると、チェックをするタイミングがなく、合計50以上に数字が進んでしまいます。(スピンをはなすとメッセージがでます。) そこで、CEdit側、スピン側のどちらでも結構ですので、50以上になった瞬間メッセージがでるようにしたいのですが、どのようにすればよいでしょうか? もし、Notify等で、メッセージを取得する場合は、そのメッセージ名も教えて頂きたく思います。 お手数ですが、何卒よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんばんは。  CEdit側のOnEnChande()ハンドラで引っかけて見て下さい。 void CTestDlg::OnEnChangeEdit1() { // TODO: これが RICHEDIT コントロールの場合、このコントロールが // この通知を送信するには、CDialog::OnInitDialog() 関数をオーバーライドし、 // CRichEditCtrl().SetEventMask() を // OR 状態の ENM_CHANGE フラグをマスクに入れて呼び出す必要があります。 // TODO: ここにコントロール通知ハンドラ コードを追加してください。 const int val = this->GetDlgItemInt(IDC_EDIT1); if(val >= 50) { ::MessageBox(NULL, NULL, NULL, IDOK); } }

kgyqk433
質問者

お礼

ありがとうございます。 このEditなんですが、このEditがある時にCreateして作っているのですが、その場合は、::OnEnChangeをどのようにしたらよいのでしょうか? 大変お手数ですがよろしくお願いします。

kgyqk433
質問者

補足

Createしてる時にIDがありました!!!!!!!!!! ありがとうございます!!!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

質問の趣旨とは違うんですが スピンボタンの設定範囲設定した方がいいのではないですか? ちなみにSetRangeで設定できます (但しこの関数使うと上下ボタンでの数値変化が逆になったかと思います)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MFCのエディットボックスの値をスピンボタン

    エディットボックスの値をスピンボタンの初期値にしたく、 下記コーディングにしたのですが CString Item; m_Spin->SetPos(((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(Item)); SetPos' : 1 番目の引数を 'void' から 'int' に変換できません。 とのエラーになります。 どのように変更したらよいかお教えください。

  • 初回のスピンボタンの挙動

    下記コードを記入し、スピンボタンの増加をクリックすると 最初の一回目に触った時のみ値がマイナスされる現象がでます。 なぜでしょうか? 1)INIファイルから値を読み込みエデットボックスに表示する。 2)スピンボタンの増加をクリックすると、最初の一回目に触った時のみ値がマイナスされる (エデットボックスの値が50だとすると49になる) 3)再度INIファイルから値を読み込みエデットボックスに表示する。 4)二回目からマイナスされない。 (エデットボックスの値が50だとすると51になる) スピンボタンのOnDeltapos UDACCEL stUD; stUD.nSec = 1; stUD.nInc = 1; // ここで変化量設定 CSpinButtonCtrl* m_Spin=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1); m_Spin->SetRange32(0,300); //レンジ CString str; ((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(str);//エディットから文字列を int a=atoi(str);//文字列を数字に変換 m_Spin->SetPos(a); //初期値 m_Spin->SetAccel(1,&stUD);//変化量 m_Spin->SetBuddy((CSpinButtonCtrl*)GetDlgItem(IDC_EDIT1));//エディットに関連付け 環境 Windwos XP,Microsoft Visual C++ 6.0

  • ASP.NET2で入力チェックと確認メッセージ

    ASP.NET2.0を勉強中なのですが、下記の処理ができずに困っています。どうすればいいのでしょうか? 根本的に考え方が間違っているのでしょうか? <行いたい処理> (1)ボタン押下時に入力チェック (2)(1)がOKなら確認メッセージの表示 (3)「はい」の場合は処理を行う <前提> ページには必須チェックを行う検証コントロールを配置し検証を行っています。 ボタンのOnClickに【return confirm('登録しますか?');】と明記すればメッセージは表示されるのですが、検証コントロールのチェックがされません。 また、サーバー側のボタンのクリックイベントで 【ClientScript.RegisterClientScriptBlock】を使用すると、検証コントロールのチェック、メッセージは表示できるのですが、メッセージの戻り値が取得できません。。。

  • 使用者名/組織名のエディットボックスへの表示方法

    Win XP PRO SP2、VC++6.0にてレジストリから使用者名/組織名を取得して、フォーム上の「表示」ボタンをクリックするとエディットボックスに表示するソフトを作成しています。 コンパイルもリンクも正常に出来ますが、フォームが表示されて「表示」ボタンをクリックすると、「問題が発生したため、registry_change.exe を終了します。 ご不便をおかけして申し訳ありません。」というウィンドウが表示されます。 どなたか教えて下さい。 よろしくお願いします。 下記が「表示」ボタンのコードです。 void CRegistory_changeView::OnButton1() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください CString ss; HKEY hRootKey; char EntryName1[256],EntryName2[256],KeyName[256],szBuff[256]; DWORD cbBuff; CEdit* myED1=(CEdit*)GetDlgItem(IDC_EDIT1); CEdit* myED2=(CEdit*)GetDlgItem(IDC_EDIT2); /* レジストリキーを開きます */ strcpy(KeyName, "Software\\Microsoft\\Windows NT\\CurrentVersion"); strcpy(EntryName1, "RegisteredOwner"); // 使用者名 strcpy(EntryName2, "RegisteredOrganization"); // 組織名 RegOpenKeyEx(HKEY_LOCAL_MACHINE, KeyName, 0, KEY_READ, &hRootKey); /* 実際にアクセスし文字列を取得します */ cbBuff = sizeof(szBuff); //(標準) RegQueryValueEx(hRootKey, EntryName1, NULL, NULL, (LPBYTE)szBuff, &cbBuff); myED1->SetWindowText((class CString &)cbBuff); RegQueryValueEx(hRootKey, EntryName2, NULL, NULL, (LPBYTE)szBuff, &cbBuff); myED2->SetWindowText((class CString &)cbBuff); RegCloseKey(hRootKey); }

  • スピンボタンとエディットボックスの連携

    VC++でスピンボタンを押すと値が1増えて、それが計算式に反映され、エディットボックスの値を変えるとそれも計算式に反映される。 というスピンボタンとエディットボックスを連携したプログラムの作成が上手くいきません。 エディットボックスのメッセージは何を用いればいいのでしょうか。具体的にはエディットボックスに値を入力し、エンターキーをクリックした時にすぐに計算式を実行できるようにしたいのですができません。そのやり方がわかりません。 できたとしてもスピンボタンとの連携が上手くいきません。何かよい方法はないか教えてください。

  • JSPからJAVASCRIPTの値取得

    HTML上でチェックボックス・ラジオボタンで選択した値、どれがチェックされたかを取り出すjavascriptを作成しました。 これをJSPのJAVA側に受け渡ししたいのですが、getparameter以外の方法はありますでしょうか? JAVA側からJAVASCRIPTの関数を呼出し値を取得できれば一番早いのですが。 よろしくお願いします。

  • asp.net メッセージボックスについて

    WEB開発を始めたばかりの初心者です。 メッセージボックスをダイアログで表示したいのですが理解に苦しんでいます。 javascriptで出来そうな感じなんですが・・・ 以下の2点のことをやりたいです。 できればコーディング例を教えていただければうれしいです。 javascriptと呼び出し側みたいな感じで。 どなたかご教授お願いします。 1.WEBコントロールに設定した削除ボタンのクリック時にメッセージを表示する。   「削除してもよろしいですか?」YES/NO 2.WEBコントロールに設定した更新ボタンクリック時に、VB側で項目の必須チェックを行い   未入力であればメッセージを表示する。   「○○は必須項目です。」OK

  • logic:iterate でのcheckboxの値取得

    struts1.3にてDBから2レコード値を取得するとします。 取得の方法はActionクラスでsetAttributeして jsp側ではlogic:iterateで取得しています そこにcheakboxを置きたいと考えています □ 1 名前 年齢 性別 □ 2 名前 年齢 性別 「詳細ボタン」 まず、チェックボックスにチェックされた事をどう判定するのか? 次に、チェックを付けて「詳細ボタン」を押下した後、チェックボックスとDBから取得した値の詳細をどう関連付けるかが分かりません。 教えて下さい。。。

    • ベストアンサー
    • Java
  • SSLで保護ページ表示時にメッセージ

    こちらのカテゴリでいいかわかりませんが、質問させてください。 共用タイプのサーバーをレンタルしてネットショップを運営しています。ショッピングカートを作成し、先日SSLサーバー証明書を取得しました。(日本ジオトラストです) 申し込みをして証明書が発行され、レンタルサーバーの会社側でも手続きをしてもらいました。 あとは自分のサイトURLを「https://」にしてアクセスするだけでOKだと思うのですが、そのときに毎回必ず下記のメッセージが出ます。 『このページはセキュリティで保護されている項目と保護されていない項目が含まれています。保護されていない項目を表示しますか?』 「いいえ」を選択すると、ページ内の「カートに入れる」ボタンなどがすべて表示されなくなっています。このCGIのプログラムに問題あるのでしょうか?

  • Outlook ExpressがHotmailの新着メッセージのチェックを失敗します

    以前はこのような現象はありませんでした。 Outlook Expressを起動すると、自動的にHotmailアカウントに接続し、新着メッセージをチェックして受信していたのですが、最近はエラーを起こし、Hotmailの新着メッセージの取得に失敗するようになりました。しかし、そのエラー表示を消して、もう一度『送受信』ボタンをクリックすると無事にHotmailの新着メッセージを取得できます。 なにが原因なのかわかりません。以前のように、Outlook Expressを起動するだけで、Hotmailの新着メッセージの取得できるようにしたいです。どうぞよろしくお願いいたします。

このQ&Aのポイント
  • DCP-J988Nを立ち上げると、駆動音が発生し停止してしまう問題について相談します。
  • 起動すると「スキャンできませんAF」と表示され停止してしまうDCP-J988Nのトラブルについて詳しく説明します。
  • DCP-J988Nを起動すると、動作が受け付けられずにしばらくして電源が切れる現象について相談します。
回答を見る