• ベストアンサー

スピンボタンの制御

VCにて、ダイアログにエディットボックスとスピンボタンのセットを複数配置したプログラムを作成しているのですが、スピンボタンの単位を-1.0~1.0と0.1刻みとしたいので、設定範囲を-10~10としOnVScroll()にて1/10して対応するエディットボックスに表示しようと試行錯誤中ですが、どのスピンボタンが押下されたか判断する知識ありません。コントロール識別子(nID)が判れば編集して、対応するエディットボックスにSetDlgItemTextで設定できるのですが、OnVScroll()の引数からnIDの取得方法を教えていただけないでしょうか。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

CWnd::GetDlgCtrlID()でどうぞ。

nama_beer
質問者

お礼

OnVScroll()の引数で受け取ったCWnd* xxxを使いxxx->GetDlgCtrlID()と書いたらバッチリ取得できました。有難うございました。

関連するQ&A

  • VC++ MFC スピンボタンについて

    VC++ .NET2005でプログラムを作成中です。 スピンボタンで「1~100」までを指定するものがあり、 ※スピンボタン(IDC_SPIN1)、エディットボックス(IDC_SPNED1) スピンボタンで指定されたものを別のエディットボックス(IDC_EDIT1)内に「0」を指定分CStringで表示したいです。 例: スピンボタンで5を指定 ↓ 00000 スピンボタンで15を指定 ↓ 000000000000000 どのようなプログラムにしたらよいのでしょうか? よろしくお願いします。

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

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

  • MFCのスピンボタンで自動関連しないで設定

    MFCのスピンボタンで自動関連指定しないでエディットボックスと関連させる 方法を教えてください。 目的 初期値はエディットボックスに表示してある。 スピンボタンを押す度にエディットボックスの値が変化する。

  • エクセルVBA「スピンボタンで小数を扱う」

    エクセルVBA「スピンボタンで小数を扱う」 エクセルVBAの初心者です。 スピンボタンとテキストボックスを組み合わせて使う際、「0.1、0.2・・・1.0、1.1・・・」というような数の増加を表示したいのですが、どのようなコーディングが必要でしょうか。 試行錯誤しておりましたがどうしても出来ませんのでご質問させて頂きます。

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

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

  • エディットボックスの処理で画面がちらつきます。

    VC++ 6.0 Win32APIにてダイアログベースのプログラムを作成しております。 ダイアログに18個のエディットボックスを配置しておりますが、そのエディットボックスのテキストを SetDlgItemText()を使って全て空欄にすると(第3引数に””を指定)画面がちらつきます。 同ダイアログ内のリストコントロールがダブルクリックされた際のイベントを拾ってエディットボックスクリアの処理を実行しているのですが、ちらつきを抑える手法はありますでしょうか?

  • VC++

    今.NETでVC++をやっているのですが、 Aのエディットボックスでキーボードから文字を入力、 決定ボタンを押下後、Bのエディットボックスに出力させるプログラムを教えていただけませんか? Cは経験あるのですが、VC++となると少し…

  • スピンボタンの使い方

    <プログラム環境> Windows XP VC++6.0 MFC AppWizard(exe) ダイアログベース <症状> ダイアログエディタでスピンボタンを配置し、ClassWizardでCSpinButtonCtrl型のメンバ変数を追加しました。 その後コンパイルするとエラー出ないのですが、実行出来ませんでした。 デバッグをすると、「ハンドルされていない例外は、試作.exeに あります:0xC0000005: Access Violation。」 が表示されて、それ以上先には進めません。 メンバ変数を削除すると、症状は無くなります。 <質問> メンバ変数を追加するだけで何故このような症状が出るのでしょうか? スピンボタンでは 初期値40 レンジ:0~80 増加幅:10 減少幅:-10 で設定したいのですが、どのようにしたら良いのでしょか? 宜しければご指摘お願い致します。

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

    下記コードを記入し、スピンボタンの増加をクリックすると 最初の一回目に触った時のみ値がマイナスされる現象がでます。 なぜでしょうか? 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

  • ボタンの表示の色、フォントを変更したい

    VC++でプログラミングしています。 MFCのダイアログベースのEXEを造っています。 ダイアログにはボタンとエディットボックスを貼り付けています。 私がやりたいのは以下のことです。 ・ボタンの色を設定したい ・ボタン、エディットボックスに表示する文字の色を設定したい ・ボタン、エディットボックスに表示する文字のフォント(サイズ)を設定したい プロパティでサイズ変更すると全体に反映されてしまうので、個々の コントロールについて制御したいと思っています。 ヘルプで調べて、それらしい関数を見つけるのですが使い方がわかりません。 VCを始めたばかりで、クラスの理解がまだ浅いです。。。 関数の説明は理解できても、「じゃあ、コードはどう書くの?」という状態です。 「○○ は ×× のメンバではありません」と、よく怒られてます。。。 識者の方、ご教授願います。 コードがどうなるのか知りたいので、簡単なサンプルコードがあると助かります。 また、質問ではないのですが、「この関数は○○をする」というのではなく、 「○○をするにはこの関数を使う」という様に調べられる、お勧めの書籍、 Webなどがありましたら教えてください。 今後の勉強に役立てたいと思っています。

専門家に質問してみよう