スクロールバーが表示されなくなる – プログラミング – Home

スクロールバーが表示されなくなる
 
通知
すべてクリア

[解決済] スクロールバーが表示されなくなる


Q
 Q
(@Q)
ゲスト
結合: 24年前
投稿: 45
Topic starter  

いつもお世話になってますm(_ _)m

WTLでスクロールウィンドウ内に別のウィンドウを表示するアプリケーションを作成して
いるのですが、
スクロールバーが表示されなくなる問題に頭を悩ませております。

スクロールウィンドウは、CScrollWindowImpl<T>を継承しています。
SetScrollSize()で表示する子ウィンドウのウィンドウサイズを指定し、
SetScrollPage()でスクロールウィンドウのクライアント領域を指定して、スクロールバ
ーの表示制御を行っています。

表示している子ウィンドウが入れ替わる場合、いったんスクロールバー表示を消す必要
(※)から、SetScrollSize(1,1)としてスクロールバーを消した後、新しくSetSrollSize
()で表示するウィンドウのサイズを指定しているのですが、
明らかに垂直・水平スクロールバーが表示されるべき場合でも「垂直スクロールバー」だ
けが表示されません。
また、この状態になったとき水平スクロールバーの「→」が反応しなくなります。
(どうやらスクロールバーは存在しているのに描画されていないだけ?のようです)

試しにこのときウィンドウスタイルを確認してみると、
垂直スクロールバーは「表示状態」になっていました。

一応、ウィンドウをリサイズすることで正常な表示になるのですが、
なんとか上記のような状態を回避する方法はありませんでしょうか?

開発環境は、
・Windows XP
・Visual Studio 6.0 (VC++ 6.0)
・ATL & WTL 3.1(古っ!!)
です。

何か良い方法をご存知の方おられましたら、
よろしく御教授お願い致しますm(_ _)m

[※ スクロールウィンドウのリサイズに合わせて子ウィンドウもリサイズする場合、ス
クロールバーが表示されたままだと、ウィンドウのサイズの縮小にあわせてスクロール
バーが激しく表示/非表示を繰り返してしまうため、強制的に非表示状態にしていま
す。]


引用未解決
トピックタグ
Q
 Q
(@Q)
ゲスト
結合: 24年前
投稿: 45
Topic starter  

自己レスですが、一応解決の報告です。

WTLのスクロールバーの消去と再描画の処理に問題がありました。

とりあえず、関連するバグとして、2点不具合がありました。
AtlScrl.h内、
CScrollImpl<T>クラスで、
1.OnSize()のそれぞれのSetScrollInfo関数の再描画フラグ
誤:pT->SetScrollInfo(SB_VERT, &si, FALSE);
正:pT->SetScrollInfo(SB_VERT, &si, TRUE);
2.SetScrolSize()
pT->ShowScrollBar(SB_BOTH, FALSE);
が抜けている。

WTLのヘッダをコピーして、
自プロジェクト内で修正済したヘッダを利用してみると、
無事解決しました。

※ WTLの最新版だとなおってるのかな。。?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました