XPで画面のテーマを判定するには?


YOUYOU  2006-10-03 05:58:02  No: 96813

初めまして。よろしくお願いいたします。
XPで画面のテーマを判定したいのですが、どうすればよろしいでしょうか?
クラッシックでない場合は、タイトルバーが太くて画面が入りきらないので、テーマを取得してサイズを指定したいと思っています。
vb6.0です。

よろしくお願いいたします。


魔界の仮面弁士  2006-10-03 11:37:31  No: 96814

? 画面が入りきらないという事と、サイズを取得するという事の関連性が
今ひとつ不明ですが……。それはたとえば、各種のテーマごとに、画面の
レイアウトを何種類か用意しておき、テーマにあわせて、それらを動的に
切り替えるようなアプリケーションを作成しようとされているのでしょうか?

さておき、テーマを管理しているのは、uxtheme.dll です。
http://www.microsoft.com/japan/msdn/windows/windowsxp/winxpintro.aspx

ですから、このDLL名をキーワードにして検索すれば、幾つかの情報が
得られるかと思います。

とはいえ、タイトルバーの高さが違う事だけが問題なのであれば、
特にテーマを求めたりせずとも、ScaleHeight さえ分かれば、
コントロールの再配置ぐらいはできるのではないでしょうか。

Private Sub Command1_Click()
    Me.ScaleMode = vbTwips

    Debug.Print "タイトルバーおよび上下枠を含めた高さ=";
    Debug.Print Me.ScaleY(Me.Height, vbTwips, vbPixels)

    Debug.Print "タイトルバーを含めない内部領域の高さ=";
    Debug.Print Me.ScaleY(Me.ScaleHeight, vbTwips, vbPixels)
End Sub


あん  2006-10-03 22:27:28  No: 96815

XPのテーマでも
クラシックで強制的に表示とかはだめですか?


YOUYOU  2006-10-04 05:22:55  No: 96816

魔界の仮面弁士さん、あんさん
ご返信ありがとうございます。

WEBBROWSERコントロールを使用してソフトを作成しています。
ステータスバーも追加していますが、このステータスバーの
Heightをieとほぼ同じにしたいです。
ステータスバーのHeightをクラッシックにあわせて作成すると
xpスタイルの時に低くなりますし、逆をするとクラッシック
の時に高くなります。
魔界の仮面弁士さんに記載いただいたScaleHeightを使用して、
フォームのScaleHeightからWEBBROWSERのHeightを引いてWEBBROWSER
のHightを設定したりもしてみましたが、だめでした。
なかなかうまくいかないですね。
双方の中間の高さにして妥協しておくしかなさそうですね。。。


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

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






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