Visual Studio 2005(C++)でWin32のプログラムを実装しています。以下の2つの実装方法を教えてください。
1.アプリケーションのタイトルバーの縦幅を取得する方法。
2.タイトルバーの右側に何個のアイコンがあるかを知る方法。(通常は、最小化・最大化・削除の3つ)
サンプルコードが解説されているサイト、もしくはサンプルコードそのものを教えていただければと思います。
両方セットでの回答と、C++のサンプルであることを条件とさせていただきます。
以上宜しくお願い致します。
1.アプリケーションのタイトルバーの縦幅を取得する方法。
http://www.geocities.co.jp/SiliconValley-Bay/4543/Osero/Window/W...
タイトルバー(キャプション)の高さを求めるには、GetSystemMetrics関数にint SM_CYCAPTION を与えればいいです。
2.タイトルバーの右側に何個のアイコンがあるかを知る方法。(通常は、最小化・最大化・削除の3つ)
こちらはちょっとややこしいですが、まず
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...
::GetWindowLong関数でGWL_STYLEを引数に与えて返ってくるlongの値のビット単位の&を取ればいいです。
http://yokohama.cool.ne.jp/chokuto/urawaza/prm/window_style.html
http://www.functionx.com/visualc/applications/WakeMeUp.htm
あたりを見てください。
ざっと書くと
LONG styles = GetWindowLong(this->m_hWnd, GWL_STYLE);
int buttons = 1; // 最低でも1。
if (styles & WS_MINIMIZEBOX) buttons++; // 最小化があるか
if (styles & WS_MAXIMIZEBOX) buttons++; // 最大化があるか
クローズボックス(削除:右隅のX)を消すことは普通のウィンドウスタイルではできないので答えは1,2,3のどれかになります。
(押しても無効、というのはできますが…)
回答ありがとうございます。今日、動作確認をしたので返事が遅くなって申し訳ありません。
2番のアイコンの数を確認する方法は上手く動きました。
1番のタイトルバーの縦幅を取得する方法ですが、HWNDから取得する方法はないのでしょうか?
【追記】
とりあえずクローズします。ありがとうございました。また何か分かりましたら御願いします。