MFCでのスクロールバーの扱い

このQ&Aのポイント
  • ウインドウに垂直スクロールバーを表示させたのですが、ドラックしても、マウスを離すと一番上まで自動的に戻ってしまいます。どうすれば、マウスを離した位置でスクロールバーが停止するのでしょうか?
  • MFCのViewクラスでメンバ関数v_posを定義し、コンストラクタで初期化しました。また、OnVScroll関数では、ドラッグ操作の処理を記述しましたが、うまく動作しません。何が原因でしょうか?
  • 使用している環境はXPとVisualStudio.Net2003です。どなたかアドバイスをいただけると助かります。
回答を見る
  • ベストアンサー

MFCでのスクロールバーの扱い

ウインドウに垂直スクロールバーを表示させたのですが、ドラックしても、マウスを離すと一番上まで自動的に戻ってしまいます。 Viewクラスのメンバ関数にv_posを定義し、コンストラクタ内でゼロに初期化。cppファイルの中のOnVScroll関数に以下の記述をしているのですが、何が間違っているのか分かりません。。。 SCROLLINFO si; switch(nSBCode){ case SB_LINEDOWN: v_pos++; break; case SB_THUMBTRACK: v_pos = nPos; break; } si.nPos = v_pos; SetScrollInfo(SB_VERT, &si); 一応、画面上にv_posの値は表示させてみたのですが、ドラッグしている間はきちんと増えています。 どうすれば、マウスを離した位置でスクロールバーが泊るのでしょうか?? 環境はXP, VisualStudio.Net2003です。 よろしくおねがいします。

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

  • ベストアンサー
  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.1

SCROLLINFOでスクロールの位置を設定するには メンバのfMaskにSIF_POSをセットする必要があります。 あとcbSizeにSCROLLINFOのサイズもセットします。 si.cbSize = sizeof (si); si.SIF_POS = SIF_POS; si.nPos = xxxx;

candlefire
質問者

お礼

出来ました!! ありがとうございました

関連するQ&A

  • スクロールバーの動作で困っております。

    スクロールバーの動作で困っております。 下記に抜粋のコーディングを示しましたが、横のサイズ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; }

  • マウスのホイールやスクロールバーによるスクロールができません…

    マウスのホイールやスクロールバーによるスクロールができません… どうしてなのか理由はわからないのですが、突然画面のスクロールができなくなってしまいました。 キーボードの矢印キーを押せばスクロールができるのですが、マウスのホイールを回しても、ウィンドウ右のスクロールバーをドラッグしても画面がスクロールしません。 スクロールバーの上下にある小さな三角マーク(▼と▲)のボタンも試してみたのですが、長押しによる複数行のスクロールはできないようです(何度もクリックをすれば複数行スクロールできます)。 マウスは「Microsoft Wireless Laser Mouse 6000 v2.0」を使用していますが、クリック(左右)やマウス横のボタン(2個)はちゃんと作用するようです。 このような場合、何に異常があると考えられますか。また、対処法があれば教えてください。 回答宜しくお願いします。 補足が必要ならすぐに書き添えます。

  • エクセル2007 スクロールバーがシートと連動しない

    エクセル2007 スクロールバーがシートと連動しない エクセル2007のスクロールバーでバーをドラッグしながら画面を上下にスクロールさせようとしてるのですが、クリックすると行番号が左側に表示されてドラッグした状態でマウスを上下しても画面はスクロールせずドロップした瞬間に横に出ていた行番号へと移動します。 ブラウザのようにマウスを上下すれば一緒に画面も動いて欲しいのですがその設定がどこにあるのかがわかりません。 ウィンドウの固定やスクロールロックとかも調べましたが関係無かったようです。 また、同じOSで同じエクセルバージョンでもそれが出来るのと出来ないのがあります。 一体どのように設定すれば良いのか教えていただけないでしょうか? わかりにくい文章で誠に申し訳ありませんが宜しくお願い致します。

  • UIScrollBarを利用したスクロールバーが見えない

    Flash8を使ってAS2.0で書いています。 ダイナミックテキストフィールドに、スクロールバーを表示させたいため、 www.helpexamples.com/flash/lorem.txt の下半分を参考にして、ActionScrioptでスクロールバーを作成しようとしています。 しかし、このページに載っているサンプルコードをそのままコピー&ペーストしても、 スクロール動作自体には問題ないものの、 スクロールバー本体が表示されません。 これでは、一見して文章の続きがあるかがわかりにくいので、 コンポーネントパネルからドラッグして作成した場合のように、 スクロールバーを表示させたいのですが、方法がわかりません。 this.createClassObject(mx.controls.UIScrollBar, "my_sb", 20); の最後の20という数字をいろいろ変えてみたり、 my_sb.move(my_txt._x + my_txt._width, my_txt._y); の中の数値を色々変えてみたりしたのですが、表示されませんでした。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • OKWAVE マイページだけスクロールバーがない

    この1週間ぐらいかな、OK-WAVE マイページに右端にあるべきスクロールバーがないんです。 マウスのセンタークリック+ドラッグで下の方へスクロールは出来るんだけど、回転ホイールも使えません。 他のページでは問題ないです。 何でこんな事になってしまったのでしょうか。 ブラウザはGoogle Chromeです。

  • スクロールバーのドラッグ

    ある特定のアプリケーションに限って、 マウスのホイールを使ったあと、 スクロールバーのドラッグができなくなる現象が発生しています。 その状態でもホイールでのスクロールには支障がありません。 また、ホイールを使う前だと、問題はありません。 WindowsXPで使用していますが、 他のOSで使用した場合、このような現象は発生していません。 ちなみに、この現象が発生するのを確認できているのは、 今のところ「サクラエディタ」と「GIMP」です。 ソフトとOSの相性かとも思うのですが・・・ なんとか正常に戻す方法はないでしょうか? よろしくお願いいたします。

  • ホイールでスムーズにスクロールさせたい

    光学式マウスをノートパソコンで利用しています。 ホイールボタンで画面スクロールさせますが、スムーズでないことが気になっています。 マウスの設定で、3行にしたり、1行にしたり、試していますが、上に3行かと思うと下に行っていたり、10行ぐらい戻しているつもりが、10行進んでいたり。ホイールの反応が当てになりません。 購入時から同じ症状です。ホイールボタンのスクロールは、この程度の性能なのでしょうか。もっとスムーズにスクロールするマウスがあるでしょうか? 縦スクロールバーを左クリックでドラックしているぐらいのスムーズな画面スクロールが理想です。 ホイールを一度クリックしてから、マウスをドラックするスクロール方式は、なじめません。 OSXPです。 よろしくお願いいたします。

  • MACで見た時にページスクロールバーが動作しない。

    原因がわからず非常に困っております。 解決策をご存じの方、ご教授をいただければ幸いです。 問題点: MACで対象ページを閲覧した際に、 マウスホイールでページスクロールができません。 サイト: http://bjjaoyama.net/ 上記サイトを、 Windowsで閲覧した際は、 マウスホイールで問題なくページスクロールバーが動作致します。 「Chrome」「Firefox」「Safari」で確認済です。 MAC(OS:10.6.8)にて閲覧した際に、 「Chrome」「Safari」の場合、 ページスクロールバーの位置にカーソルがあればマウスホイールにてスクロール可能ですが、それ以外の場所でマウスホイールでのスクロールが効きません。 「Firefox」の場合、 マウスホイールでの操作がどれも効きませんでした。 ※スクロールバーをクリックし掴んだ状態でのドラック移動は可能です。 マウスを交換しても動作が変わらず、もう1台のMACで確認しても同じ状態です。 どなたか、解決策をご存じの方がいらっしゃれば、ご教授いただければ幸いです。

    • ベストアンサー
    • CSS
  • サイト画面等で、一瞬に一番下までスクロールする方法はありませんか?

    使用PC ダイナブックV5/410CME マウスでスクロール又は、画面の右側にあるバーを下にドラッグしていますが、 もっと早く簡単にそのページの一番下を表示する方法はないでしょうか。 途中はどうでも良いのです。 一番下を1秒でも早く表示させたいのですが・・・ PCの便利な操作が全然わかりませんのでよろしくご指導下さい。

  • エクセルのスクロール中に内容を表示させたいんですが・・・

    すごく初心者な質問でごめんなさい。 前から疑問だったんですが、エクセルのスクロールバーをドラッグしてスクロールすると、内容(セル)がついてきません。 スクロール中に内容を表示させる設定があれば教えてもらえませんか? マウスにホイールがついてないもので。。。(^^;) 環境:Win98se エクセル2000 (ポイント発行&〆切はキチンとします。よろしくお願いします。)

専門家に質問してみよう