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


L  2008-04-28 20:04:36  No: 68217

環境
Visual Studio 2005
C++

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


そだ  2008-04-28 20:33:23  No: 68218

Win32APIの話でいいのかな

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


シャノン  2008-04-30 00:33:08  No: 68219

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


ん?  2008-04-30 23:27:27  No: 68220

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


そだ  2008-05-01 13:13:05  No: 68221

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


ん?  2008-05-01 17:15:49  No: 68222

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


そだ  2008-05-01 18:33:57  No: 68223

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

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


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加