水平/垂直スクロールバーの表示/非表示をチェックするには?


L  2008-04-28 20:04:36  No: 68217  IP: 192.*.*.*

環境
Visual Studio 2005
C++

ダイアログ上に自作したスクロールバーがあるのですが、
水平/垂直スクロールバーの表示/非表示をチェックするにはどうしたら良いでしょうか?
非表示の時も、GetScrollInfoで値がとれてしまいます。。

編集 削除
そだ  2008-04-28 20:33:23  No: 68218  IP: 192.*.*.*

Win32APIの話でいいのかな

GetWindowLongでウィンドウスタイル取得して
WS_VISIBLEのフラグが立っているか調べてみたら
どだろう。

編集 削除
シャノン  2008-04-30 00:33:08  No: 68219  IP: 192.*.*.*

「自作したスクロールバー」ということなので、スクロールバーコントロールを張り付けているんでしょうか?
表示する・しないを自分でコントロールできるなら、その状態を変数か何かに持っておくのがいいと思いますが。

編集 削除
ん?  2008-04-30 23:27:27  No: 68220  IP: 192.*.*.*

>WS_VISIBLEのフラグが立っているか
それは可視状態であるか否かであり、WS_VSCROLL/WS_HSCROLLが
指定されているか否かを調べるのでは?
#ただ、これらが指定されているスタイルであっても、
#実際にスクロールバーが有効(スクロール状態)であるかはしらん。

編集 削除
そだ  2008-05-01 13:13:05  No: 68221  IP: 192.*.*.*

>それは可視状態であるか否かであり、WS_VSCROLL/WS_HSCROLLが
>指定されているか否かを調べるのでは?
オーバーラップドウィンドウならそれでいいんだけどねぇ・・・

編集 削除
ん?  2008-05-01 17:15:49  No: 68222  IP: 192.*.*.*

>オーバーラップドウィンドウならそれでいいんだけどねぇ・・・
そうで無いウインドウ時には無理なのですか…知りませんでした。
#ひとつ賢くなりました

編集 削除
そだ  2008-05-01 18:33:57  No: 68223  IP: 192.*.*.*

>そうで無いウインドウ時には無理なのですか…知りませんでした。
>#ひとつ賢くなりました
無理というかダイアログの話だったので
ウィンドウの右端と下端に備わるようなスクロールバーではなく
リソースエディタでダイアログに追加するような
スクロールバーコントロールだと思っただけです。

そりゃダイアログにもWS_VSCROLLスタイルをつけようと思えばつきますよ。

編集 削除