ウィンドウのフレームに水平スクロールバーが重なる現象 – プログラミング – Home

ウィンドウのフレームに水平スクロールバ...
 
通知
すべてクリア

[解決済] ウィンドウのフレームに水平スクロールバーが重なる現象


まさはる
 まさはる
(@まさはる)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

開発環境:Win XP Pro SP2
開発言語:Visual C++ 6.0 Pro、Visual C++ 2005 Std

SDKで作ったビットマップを表示する簡易ビューアです。
ビットマップの画像がクライアント領域よりも大きい場合は、ウィンドウ標準のスクロ
ールバーを表示して
スクロールバーの各種設定を行い表示している画像をスクロールできるようにしてま
す。
ウィンドウのサイズが変わるとスクロールの範囲やページを再設定しています。

問題はウィンドウのサイズを小さくしていって水平スクロールバーが
クライアント領域を完全に覆うと水平スクロールバーが消えます。そうするとクライア
ント領域が
再び表示されます。再び表示されたクライアント領域は高さは水平スクロールバーの高
さくらいあります。
この時垂直スクロールバーはかなり小さく表示されています。
ところが消えた水平スクロールバーがウィンドウの下側のフレームに重なって表示され
ます。
フレームの幅で表示されているので薄い高さで表示されています。
この状態は見栄えが悪いと思い質問しました。

自分で調べたのですが、この現象はXPの画面のプロパティのデザインで
ウィンドウとボタンのところの「Windows XP スタイル」で起こります。
このスタイルはXPのデフォルトの設定だと思います。

自分の作った簡易ビットマップビューアを他の環境でも実行してみました。
ますはXPの画面のプロパティのデザインでウィンドウとボタンのところの
「Windows クラシック スタイル」に変えてアプリを実行したら上記の現象は起こりませ
ん。
Virtual PCのWin98SEと普通にインストールしたWin2000でも上記の現象は起こりませ
ん。

この現象の解決方法がないかと思いまして質問しました。
よろしくお願いします。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

というか、そこまでウインドウを小さく出来る必要があるのかなとも
思いますけれど、仕様的に出来ないとまずいケースがあるんでしょうか?
いっその事、スクロールバーがきちんと表示できるサイズまでしか
リサイズできないようにしてしまっても良いのではとも思いますが。

まあ、そういう現象が起きる原因と言うのを確認したいとも思いますけれど。


返信引用
オレンジフィッシュ
 オレンジフィッシュ
(@オレンジフィッシュ)
ゲスト
結合: 18年前
投稿: 58
 

私もPATIOさんの意見に賛成です。
ウインドウの大きさを水平スクロールバーの高さよりも小さくできないように制御
すれば良いと思います。高さは GetSystemMetrics() 関数に SM_CYHSCROLL 定数で
取得して WM_GETMINMAXINFO メッセージでサイズ変更を制御すれば良い。

http://wisdom.sakura.ne.jp/system/winapi/win32/win38.html
http://www.arcpit.co.jp/winapi/api_02/ap020206.htm
上記の2つを参考にすれば制御できると思います。
それでは。


返信引用
まさはる
 まさはる
(@まさはる)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

PATIOさん、
オレンジフィッシュさん、
アドバイスありがとうございます。

WM_GETMINMAXINFOを使ってサイズ変更範囲を設定するのも良いですね。
スクロールバーの重なる現象が解決できなかったら使わせてもらいます。

自宅で色々試行錯誤した末になんとかウィンドウのフレームの下側で水平スクロールが
重なってしまう現象を多少不安定ながら表示させないようにしてみました。
WM_SIZEでクライアント領域のサイズによって色々とスクロールの表示の設定を
変えたりしました。
普通にウィンドウのサイズを変える分にはほとんど重ならないようになりました。
この辺りの処理はまだ色々と考えてみようと思います。

なぜウィンドウサイズを最も小さくする動作をさせたかというと、ウィンドウズの
フォルダを開いて表示されたウィンドウが特に不具合も無くウィンドウサイズを
最も小さくできるためです。フォルダのウィンドウはOSの方で用意したウィンドウ
だろうと思うので不具合の無いのは当然かもしれません。
ウィンドウのサイズを自分の作ったアプリでも不具合無く動作するのだと思ったのです

以上の現象が起きました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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