• ベストアンサー

トラックバーのつまみを動かせない

 トラックバーの範囲を設定するときに最大値を98304以上にするとトラックバーのつまみを動かせなくなるのですが、これはトラックバーの仕様なのでしょうか?  これ以上の値を設定しても正常に動かす方法があったら教えてください。 <最大値の設定部分> InitCommonControls(); SendMessage(hbar,TBM_SETRANGE,TRUE,MAKELPARAM(0,98304)); --- 実行環境 --- Microsoft Visual C++ 2010 Express WIN32 ユニコードビルド C言語

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

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

TBM_SETRANGEの説明(英文)が下記URLにあります。 https://msdn.microsoft.com/ja-jp/library/windows/desktop/bb760221(v=vs.85).aspx ここで、 > Because this message takes two 16-bit unsigned integer values, the maximum range that this message can specify is from 0 to 65,535. To specify larger range values, use the TBM_SETRANGEMIN and TBM_SETRANGEMAX messages. という解説がされています。範囲の指定が16ビット値2つになっているので、指定できる範囲が0~65535になる。この範囲を超える値を指定するには、TBM_SETRANGEMINとTBM_SETRANGEMAXを使って最大値・最小値を別々に指定するようです。

nazoda
質問者

お礼

回答ありがとうございました。教えていただいた方法で解決しました。

関連するQ&A

  • トラックバーをクリックした時のつまみの位置について

    トラックバーのつまみ以外の場所をクリックするとマウスカーソルの位置に関係なく、ページサイズで設定されている量だけつまみが移動するようですが、 クリックした位置につまみを移動するにはどうすればいいですか? (ダイアログベースのプログラムでダイアログに横向きのトラックバーを貼り付けている場合) --- 実行環境 --- Microsoft Visual C++ 2010 Express WIN32 ユニコードビルド C言語

  • トラックバーについて。

    質問させてください。プログラム初心者です>< 私は現在、WIN32APIでトラックバーをCreatWindowEX関数などを用いて作成しました。 そこで、そのスライダーの範囲を hTrack=CreateWindowEX(・・・・); SendMessage(hTrack1, TBM_SETRANGE, (WPARAM)TRUE, (LPARAMMAKELPARAM(11, 15)); としました。 しかしこの実際にできあがったトラックバーを、 左側が15で、右にスライドさせてくにつれて、最後は11の値になるようにしたいのですが、どうしたらよいのでしょうか? よろしくお願いいたします!

  • windowsアプリケーションで小数を扱うスライダ

    windowsアプリケーションで0.0から1.0までの間の値を100目盛り間隔で決定するスライダーを作成したいのですが、スライダーを動かすと細かい値が設定できずが0から1、また1から0へいきなり跳んでしまいます。 色々パラメータを変えて試したところ、どうも小数点以下の値をスライダーで決定することが出来ないようでした。 どうすれば小数点以下の値を決定できるスライダーを作成できるのでしょうか? 初期設定時のコードは以下のような形です。 HWND hSlider; hSlider = GetDlgItem( hDlg, IDC_SLIDER ); SendMessage( hSlider, TBM_SETRANGE, FALSE, MAKELPARAM( 0.0, 1.0 ) );//最小値 最大値 SendMessage( hSlider, TBM_SETPAGESIZE, 0, 0.1 );//クリック時移動量 SendMessage( hSlider, TBM_SETTICFREQ, 100, 0 );//目盛り間隔 SendMessage( hSlider, TBM_SETPOS, TRUE, 0.5 );//初期位置

  • 閉じてないファイルについて

    Visual C++ 2010 Expressで、開いたら閉じなければいけないファイルやハンドルを閉じないでプログラムを終了した場合に、閉じていないファイル名やハンドル名を確認するにはどうすればいいですか? --- 実行環境 --- Microsoft Visual C++ 2010 Express WIN32 ユニコードビルド C言語

  • Visual C++ 2010 Expressについて質問です

    Visual C++ 2010 Expressについて質問です Visual C++ 2010 Expressを用いてopenCVを使ったプログラムを作成したいと考えています そこで、インクルードファイルの設定やライブラリファイルの設定を以下のサイトの通りにしたのですが http://d.hatena.ne.jp/blono/20100501 うまくいきません Visual C++ 2008 Expressでは通っていたものをコピーしてビルドしたところ デバッガをVisual Studio 2005のものを使われようとしていました 上記のサイトではWin32プラットフォームアプリケーションにする場合とありましたが Win32コンソールアプリケーションで実行させたい場合にはどうしたらよいでしょうか? 言葉足らずだとは思いますがよろしくお願いします

  • VisualC++2010Expressでのエラー

    Visual C++ 2010 Expressでエラーもなく、正常にビルドされたプログラムを終了した時に出力ウィンドウに 「テストプログラム.exe の 0x6b6b4444 で初回の例外が発生しました: 0xC0000005: 場所 0x00256a40 を読み込み中にアクセス違反が発生しました。 プログラム '[6396] テストプログラム.exe: ネイティブ' はコード 0 (0x0) で終了しました。」 というメッセージが表示されるのですが1行目にあるメッセージの意味がよく分かりません。プログラムそのものは途中で止まることなく動いています。 すべてのプログラムでこのメッセージは表示されます(Visual C++ 2010 Expressが自動生成したコードだけのプログラムでも)。 原因はウィルスチェックソフトが起動していることだというところまではわかったのですがアクセス違反を起こしたのはVisual C++ 2010 Expressの方なのかウィルスチェックソフトの方なのかよく分かりません。 それを調べる方法はないのでしょうか? また、このメッセージを無視して実行し続けていたら何か問題が発生することはあるのでしょうか? --- 実行環境 --- Microsoft Visual C++ 2010 Express WIN32 ユニコードビルド C++

  • ダイアログボックスのサイズの違い

    ResEditを使いwidthを306に設定してダイアログボックスを作成したのですが、プログラム中にGetWindowRect関数を使い、そのダイアログボックスの横幅を調べてみると542という値が返されました。どうしてこのような違いが出るのでしょうか? また、両方の数値を一致させるにはどうすればいいですか? --- 実行環境 --- Microsoft Visual C++ 2010 Express WIN32 ユニコードビルド C言語

  • Visual C++ 2010 Expressについて。

    Visual C++ 2010 Expressについて。 Visual C++ 2010 Expressを使っているのですが、 プロジェクトを開いて1回目ビルドすると必ずエラーが出ます。 ビルドした後1回閉じて開き直してビルドすると正常にビルドできます。 エラー内容 C:\(省略)\ファイル名.vcxproj : error MSB4014: 内部エラーのため、ビルドは予期せず停止しました。 C:\(省略)\ファイル名.vcxproj : error MSB4014: Microsoft.Build.Exceptions.BuildAbortedException: ビルドが取り消されました。MSBuild.exe は、場所 "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" に見つからなかったため、子ノードとして起動できませんでした。必要に応じて、BuildParameters または MSBUILD_EXE_PATH 環境変数で正しい場所を指定してください。 と出ます。 原因を色々調べてみたのですが分かりませんでした。 かもしれないということでもいいので答えて頂けると助かります。 環境 XP SP3 Visual Studio 2005が入っています。 ちなみに、2005は正常に出来ます。

  • Runtime Error!で強制終了してしまう。

    Visual c++ Express Edition 2005のネットワーク版をインストールしてプロジェクトを作成しました。 その後、ネットワーク版をアンインストールしてVisual c++ Express Edition 2005のダウンロード版をインストールし、プロジェクトを開き、ビルドの実行を行いました。 するとRuntime Error!の ポップアップが表示されて強制終了してしまいます。 何が原因なのでしょうか。

  • スケルトンプログラムをビルドできません

    Windowsプログラミングの基礎、スケルトンプログラムを ビルドできなくて困っています。 以前Borland C++ compiler 5.5を使っていたときは ビルドできていたのですが、昨日Visual Studio 2005を購入し、 テストでビルドしようとしたところ 次のようなエラーが出てしまいました。 error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [13]' から           'LPCWSTR' に変換できません CreateWindow関数の第二引数を "Sample Program"というふうにしています。 UNICODEが関係しているらしいというところまでは 分かったのですが、具体的にどのように コーディングしてよいのか、まだ分かりません。 初歩的な質問で申し訳ないですが、よろしくお願いします。

専門家に質問してみよう