[Ttssh2-commit] [4642] ダイアログ系マクロコマンドのテキスト幅・高さの取得を調整

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 9月 19日 (月) 14:03:55 JST


Revision: 4642
          http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4642
Author:   maya
Date:     2011-09-19 14:03:55 +0900 (Mon, 19 Sep 2011)

Log Message:
-----------
ダイアログ系マクロコマンドのテキスト幅・高さの取得を調整
  GetDC の対象をスタティックテキストのハンドルに変更(あまり関係ないかも)
  取得したデバイスコンテキストにフォントをセットしないとフォントに合わせたサイズを取得できなかった

Modified Paths:
--------------
    trunk/teraterm/ttpmacro/inpdlg.cpp
    trunk/teraterm/ttpmacro/msgdlg.cpp
    trunk/teraterm/ttpmacro/statdlg.cpp


-------------- next part --------------
Modified: trunk/teraterm/ttpmacro/inpdlg.cpp
===================================================================
--- trunk/teraterm/ttpmacro/inpdlg.cpp	2011-09-16 16:18:09 UTC (rev 4641)
+++ trunk/teraterm/ttpmacro/inpdlg.cpp	2011-09-19 05:03:55 UTC (rev 4642)
@@ -34,6 +34,7 @@
 	PaswdFlag = Paswd;
 	PosX = x;
 	PosY = y;
+	DlgFont = NULL;
 }
 
 BEGIN_MESSAGE_MAP(CInpDlg, CDialog)
@@ -52,7 +53,7 @@
 	HWND HEdit, HOk;
 	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
 	LOGFONT logfont;
-	HFONT font;
+	HFONT font, tmpfont;
 
 	CDialog::OnInitDialog();
 	font = (HFONT)SendMessage(WM_GETFONT, 0, 0);
@@ -71,9 +72,15 @@
 	SetDlgItemText(IDC_INPTEXT,TextStr);
 	SetDlgItemText(IDC_INPEDIT,DefaultStr);
 
-	TmpDC = ::GetDC(GetSafeHwnd());
+	TmpDC = ::GetDC(GetDlgItem(IDC_INPTEXT)->GetSafeHwnd());
+	if (DlgFont) {
+		tmpfont = (HFONT)SelectObject(TmpDC, DlgFont);
+	}
 	CalcTextExtent(TmpDC,TextStr,&s);
-	::ReleaseDC(GetSafeHwnd(),TmpDC);
+	if (DlgFont && tmpfont != NULL) {
+		SelectObject(TmpDC, tmpfont);
+	}
+	::ReleaseDC(GetDlgItem(IDC_INPTEXT)->GetSafeHwnd(),TmpDC);
 	TW = s.cx + s.cx/10;
 	TH = s.cy;
 

Modified: trunk/teraterm/ttpmacro/msgdlg.cpp
===================================================================
--- trunk/teraterm/ttpmacro/msgdlg.cpp	2011-09-16 16:18:09 UTC (rev 4641)
+++ trunk/teraterm/ttpmacro/msgdlg.cpp	2011-09-19 05:03:55 UTC (rev 4642)
@@ -30,6 +30,7 @@
 	YesNoFlag = YesNo;
 	PosX = x;
 	PosY = y;
+	DlgFont = NULL;
 }
 
 BEGIN_MESSAGE_MAP(CMsgDlg, CDialog)
@@ -47,7 +48,7 @@
 	HWND HOk, HNo;
 	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
 	LOGFONT logfont;
-	HFONT font;
+	HFONT font, tmpfont;
 
 	CDialog::OnInitDialog();
 	font = (HFONT)SendMessage(WM_GETFONT, 0, 0);
@@ -65,9 +66,15 @@
 	SetWindowText(TitleStr);
 	SetDlgItemText(IDC_MSGTEXT,TextStr);
 
-	TmpDC = ::GetDC(GetSafeHwnd());
+	TmpDC = ::GetDC(GetDlgItem(IDC_MSGTEXT)->GetSafeHwnd());
+	if (DlgFont) {
+		tmpfont = (HFONT)SelectObject(TmpDC, DlgFont);
+	}
 	CalcTextExtent(TmpDC,TextStr,&s);
-	::ReleaseDC(GetSafeHwnd(),TmpDC);
+	if (DlgFont && tmpfont != NULL) {
+		SelectObject(TmpDC, tmpfont);
+	}
+	::ReleaseDC(GetDlgItem(IDC_MSGTEXT)->GetSafeHwnd(),TmpDC);
 	TW = s.cx + s.cx/10;
 	TH = s.cy;
 

Modified: trunk/teraterm/ttpmacro/statdlg.cpp
===================================================================
--- trunk/teraterm/ttpmacro/statdlg.cpp	2011-09-16 16:18:09 UTC (rev 4641)
+++ trunk/teraterm/ttpmacro/statdlg.cpp	2011-09-19 05:03:55 UTC (rev 4642)
@@ -34,6 +34,7 @@
 	TitleStr = Title;
 	PosX = x;
 	PosY = y;
+	DlgFont = NULL;
 	return CDialog::Create(CStatDlg::IDD, GetDesktopWindow());
 }
 
@@ -41,6 +42,7 @@
 {
 	RECT R;
 	HDC TmpDC;
+	HFONT tmpfont;
 
 	if (Title!=NULL) {
 		SetWindowText(Title);
@@ -54,9 +56,15 @@
 	WH = R.bottom-R.top;
 
 	if (Text!=NULL) {
-		TmpDC = ::GetDC(GetSafeHwnd());
+		TmpDC = ::GetDC(GetDlgItem(IDC_STATTEXT)->GetSafeHwnd());
+		if (DlgFont) {
+			tmpfont = (HFONT)SelectObject(TmpDC, DlgFont);
+		}
 		CalcTextExtent(TmpDC,Text,&s);
-		::ReleaseDC(GetSafeHwnd(),TmpDC);
+		if (DlgFont && tmpfont != NULL) {
+			SelectObject(TmpDC, tmpfont);
+		}
+		::ReleaseDC(GetDlgItem(IDC_STATTEXT)->GetSafeHwnd(),TmpDC);
 		TW = s.cx + s.cx/10;
 		TH = s.cy;
 



Ttssh2-commit メーリングリストの案内
Back to archive index