- PR -

タイトルバーをWindowsサイズに合わせたい

1
投稿者投稿内容
butthead
大ベテラン
会議室デビュー日: 2004/01/14
投稿数: 162
投稿日時: 2004-11-09 19:42
すいません。orz
まだ、VC++6.0を使っているので、MFCのアンマネージド.NETということで質問させてください。

ウィンドウのサイズをタイトルバーの文字列に合わせたいとします。
つまりウィンドウを開いたときに文字列が長くても省略されず、文字列の分だけウィンドウが広がるようにしたいとします。
このときのやり方、Tipsコードの書き方についてご存知の方教えていただけませんでしょうか。
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-11-10 08:51
コード:

CMainWin::CMainWin()
{
wsprintf(m_Title, "This is a test for title bar.");

RECT r;
...
r.right = r.left + (long)strlen(m_Title) * m_LetterWidth + m_ControlBoxWidth;
...

Create(NULL, m_Title, WS_OVERLAPPEDWINDOW, r);
...


こんな感じでしょうか?

[ メッセージ編集済み 編集者: iStation 編集日時 2004-11-10 08:56 ]
p
会議室デビュー日: 2004/10/20
投稿数: 7
投稿日時: 2004-11-11 00:19
http://hp.vector.co.jp/authors/VA012320/memo.html#n04

文字列の幅を正確に得るにはこのあたりが参考になるのではないかと思います。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2004-11-11 01:27
ちなみにタイトルバー以外の細かな部品のサイズはGetSystemMeteicsで取得できます。
後は頑張って計算するしかないでね。
butthead
大ベテラン
会議室デビュー日: 2004/01/14
投稿数: 162
投稿日時: 2004-11-11 10:50
お世話になります。

今回の件は
GetSystemMetrics関数を使うことにより、タイトルバーに限らずアイコンやボタンの長さも含めてシステム情報を得ることで、解決しました。
ただ、文字列についてはピクセル数をとってくることができないので、文字列*10ピクセルとして画面見て、調節しました。実際に文字とピクセルの関係については自分で決めていいものなのかどうなのかわかりませんでしたが、一応そのやり方でやりました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)