![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
スクロールバーの動作で困っております。
下記に抜粋のコーディングを示しましたが、横のサイズnMaxを例えば80000(※1)としスクロールボックスを移動させると、ある地点を過ぎると変数wpの上位2バイトがオーバーフローし、スクロールボックスを後部に移動させることが出来ません。
この様な場合どう設定すればスクロールボックスを画面の隅まで移動させられるのでしょうか。どなたかよい解決策をご存知でしたらご教示いただきたく、宜しくお願いします。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){
:
case WM_CREATE:
FlatSB_SetScrollProp(hWnd, WSB_PROP_HSTYLE, FSB_FLAT_MODE, TRUE);
break;
:
case WM_SIZE:
sih.cbSize= sizeof(SCROLLINFO);
sih.fMask= SIF_ALL;
sih.nMin= 0;
sih.nMax= 80000; // ※1
sih.nPage= LOWORD(lp) / 8; // 8 = 文字幅
sih.nPos= posh; // corrent sih.nPos
FlatSB_SetScrollInfo(hWnd, SB_HORZ, &sih, TRUE);
break;
:
case WM_HSCROLL:
switch (LOWORD(wp)) {
case SB_THUMBTRACK:
dx = HIWORD(wp) - sih.nPos; // ※2 wpの上位ワードがオーバーフローしてしまう
break;
}
No.2ベストアンサー
- 回答日時:
当方は MFCダイアログベース、Win32APIベースでの検証をしておりますが
つまみを動かしている最中でも変化するようです ・・・
MFCダイアログベースは 普通のスクロールバーコントロールとダイアログのスクロールバー
Win32APIは ウィンドウのスクロールバー
にて検証しました
コモンコントロールのフラットスクロールバーだとコントロールに対するScrollイベントを記述しないといけないようですよ
回答ありがとうございます。
先に教えて頂いた方法で、関数をFlatSB_GetScrollInfoに変えたらすんなりうまくいきました。
ご教示感謝いたします。有難うございました。
No.1
- 回答日時:
SCROLLINFOのnTrackPosからデータを取得してはいかがでしょう
トラッキングデータ取得用のSCROLLINFO型変数を用意しておきます
SCROLLINFO siVal;
メッセージハンドラ部で
case SB_THUMBTRACK:
ZeroMemory( &siVal, sizeof( SCROLLINFO ) );
siVal.cbSize = sizeof( SCROLLINFO );
siVal.fMask = SIF_ALL;
::GetScrollInfo( hWnd, SB_HORZ, &siVal );
dx = siVal.nTrackPos - sih.nPos;
といった具合ですが ・・・
回答ありがとうございます。
GetScrollInfoを使ってnTrackPosの情報をみましたが、スクロールバーが停止している場合のポジションは採取できるのですが、動かしている場合の情報はどうも取れないようです。
でも、これを手がかりにもう少し探って見ます。もし、この結果で何か分かれば情報を頂きたく宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- 電気・ガス・水道 ガスコンロのsiセンサー 1 2022/04/28 09:49
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
- 日本語 用言の活用組織はいかにして生成したか:或る試論 1 2022/06/30 05:41
- その他(悩み相談・人生相談) このギターの動画はレギュラーチューニングですか? https://youtube.com/watch 1 2023/02/25 12:09
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像のようにとあるサイトの横...
-
Excelでワードアートや図を常に...
-
Webサイト内でスクロールする小...
-
エクセルで行を固定しその下か...
-
ページ読み込み時に自動でスク...
-
スクロールバーの動作で困って...
-
javascriptでの独自スクロール...
-
html js 横軸の長いチャート
-
エクセルVBAでフォームのListbo...
-
ExcelVBAで他のアプリをスクロ...
-
PDFを(htmlのように)無限に縦...
-
JQueryで画面中央にDIVを配置し...
-
マウスホイールでスクロールで...
-
デジタル時計の時刻合わせの方...
-
マイページはどこを開くの
-
Youtubeが勝手に右下に勝手に小...
-
スクリプトって、何ですか?ど...
-
gimp2.8 script-fu について
-
エクセルのシート上に別のシー...
-
ウインドウを毎回同じ位置、大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでワードアートや図を常に...
-
エクセルVBAでフォームのListbo...
-
PDFを(htmlのように)無限に縦...
-
リストビューをスクロールさせ...
-
Excelで一部分だけを常に表示さ...
-
Excelで1.2行目だけ固定して...
-
Visual Basicから Spreadのスク...
-
大きい表へのスクロールバーの...
-
VBE画面の縦のスクロールバ...
-
vb,netでtextboxの文字を右から...
-
リストビューのスクロールバー...
-
リストビューの表示開始行変更
-
ページ訪問時にiframe内を自動...
-
IFRAMEでscrolling="yes|no"の...
-
文章の自動スクロール
-
ポストバック時のスクロール位...
-
C#:ListViewでのスクロールイベ...
-
常に画像の大きさを横幅100%で...
-
マウスオーバー→ホイール回転で...
-
webページで横方向にアンカーを...
おすすめ情報