- ベストアンサー
アップダウンコントロールについて
現在私はWINAPI32を用いてプログラミングの学習をしています。 そこで私の作成した簡単なプログラムに、アップダウンコントロールを追加したいと思い、 http://www.kumei.ne.jp/c_lang/sdk3/sdk_204.htm のページを参照して作成してみました。 ところが私の作成したアップダウンコントロールはウインドウにちゃんと表示はされているものの、矢印の上下ボタン(?)を押しても値が1から一向に変化しません><; このHPに書いてあるプログラムをそっくりそのままコピペしてみると、しっかりと動きます。 私のプログラムのどこかが悪いのですが、このHPのソースと比較してもどうしてもエラー箇所が見つけられません!泣 このHPのように親ウインドウにアップダウンコントロールを作成した時、私のようなエラーが発生したときの考えられる原因がありましたら、教えていただけないでしょうか!? よろしくお願い致します!!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
★『アップダウン・コントロール』の注意点。 ・このコントロールは面白く、↑矢印でダウンして、↓矢印でアップします。 ・このため 1 以上の値にはなりません。つまり、範囲が 1~100 で 1 以下にも なりませんから 0 にも変化がおきません。 ・それではどうやって↑矢印でアップ、↓矢印でダウンにするのでしょうか? ・ここがポイントですね。 ・『猫でもわかるプログラミング』を知っているので次の第205章を参照して下さい。 http://www.kumei.ne.jp/c_lang/sdk3/sdk_205.htm→『第205章 ダイアログボックス上のアップダウンコントロール』 ・ここに UDM_SETRANGE というメッセージについて書かれているので、これを使って 範囲設定をします。 ・このメッセージで範囲設定すると『↑矢印でアップ、↓矢印でダウン』という 逆転の動作になります。面白いでしょう。動作が。 設定サンプル: SendMessage( hUpdown, UDM_SETRANGE, 0, MAKELPARAM(10,1) ); SendMessage( hUpdown, UDM_SETRANGE32, (WPARAM)1, (LPARAM)10 ); 最後に: ・上記の2行はメッセージの違いによる指定を表しています。 ・よって、どちらか一方を記述します。お好きな方を選択して記述して下さい。 ・私は、簡単に設定できる UDM_SETRANGE32 のメッセージを使っています。 ・また、1 が最小値、10 が最大値を表しています。 ・以上。おわり。
その他の回答 (1)
- stiffels
- ベストアンサー率34% (25/72)
UpDownのWindowメッセージはちゃんとWndProc関数に来ていますか? デバッグで確認して、もしメッセージが来ていないのであれば ID_UPDOWN(hMenu)の定義やWM_NOTIFYメッセージでの受け取り方がおかしい かもしれません。 WinAPIでWindowsアプリを勉強するのであれば Windowメッセージを理解することが肝心ですよ。
お礼
お返事ありがとうございます! まだまだ学習が足りない自分が恥ずかしいです。 アドバイスありがとうございました!!
お礼
アドバイスありがとうございます! プログラムはとても奥が深いので、毎日たいへんです>< これからも頑張って行きたいと思います! ありがとうございました!!