[Ttssh2-commit] [8235] [Tooltip] コンストラクタとCreate()の引数を変更した

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2019年 9月 28日 (土) 03:12:16 JST


Revision: 8235
          https://osdn.net/projects/ttssh2/scm/svn/commits/8235
Author:   yasuhide
Date:     2019-09-28 03:12:15 +0900 (Sat, 28 Sep 2019)
Log Message:
-----------
[Tooltip] コンストラクタとCreate()の引数を変更した

- TipWinのコンストラクタ引数にインスタンスを取るようにした
- Create()の引数に親ウィンドウハンドルを取るようにした
- ウィンドウクラス名のサフィックスをインスタンスの値に変更した
- RegisterClass()、UnregisterClass()、IsClassRegistered()をprivateにした
- WNDCLASSをローカル変数にした

Modified Paths:
--------------
    branches/tootip_classify/teraterm/common/tipwin.cpp
    branches/tootip_classify/teraterm/common/tipwin.h
    branches/tootip_classify/teraterm/teraterm/addsetting.cpp
    branches/tootip_classify/teraterm/teraterm/vtwin.cpp
    branches/tootip_classify/teraterm/ttpdlg/ttdlg.c

-------------- next part --------------
Modified: branches/tootip_classify/teraterm/common/tipwin.cpp
===================================================================
--- branches/tootip_classify/teraterm/common/tipwin.cpp	2019-09-27 11:18:53 UTC (rev 8234)
+++ branches/tootip_classify/teraterm/common/tipwin.cpp	2019-09-27 18:12:15 UTC (rev 8235)
@@ -79,7 +79,7 @@
 	RECT rect;
 	int px;
 	int py;
-	TCHAR *class_name;
+	TCHAR class_name[32];
 } TipWin;
 
 VOID CTipWin::CalcStrRect(VOID)
@@ -192,10 +192,11 @@
 	return DefWindowProc(hWnd, nMsg, wParam, lParam);
 }
 
-CTipWin::CTipWin(HWND pHwnd) : pHwnd(pHwnd)
+CTipWin::CTipWin(HINSTANCE hInstance): hInstance(hInstance)
 {
 	tWin = (TipWin *)malloc(sizeof(TipWin));
 	memset(tWin, 0, sizeof(TipWin));
+	*class_name = NULL;
 }
 
 CTipWin::~CTipWin()
@@ -206,64 +207,56 @@
 	if(tWin != NULL) {
 		free((void*)tWin->str);
 		tWin->str = NULL;
-		free((void*)tWin->class_name);
-		tWin->class_name = NULL;
 		free(tWin);
 		tWin = NULL;
+		*class_name = NULL;
 	}
 }
 
-BOOL CTipWin::IsClassRegistered(HINSTANCE hInstance)
+BOOL CTipWin::IsClassRegistered()
 {
-	if (tWin->class_name == NULL) {
-		TCHAR filename[MAX_PATH];
-		TCHAR *base_ptr;
-		size_t base_len;
-		size_t class_name_len;
-		GetModuleFileName(hInstance, filename, _countof(filename));
-		base_ptr = _tcsrchr(filename, _T('\\'));
-		base_len = _tcslen(base_ptr);
-		class_name_len = sizeof(TipWinClassName) + base_len;
-		tWin->class_name = (TCHAR *)malloc(class_name_len);
-		_tcscpy(tWin->class_name, TipWinClassName);
-		_tcscat(tWin->class_name, base_ptr);
+	if (*class_name == NULL) {
+		_snprintf_s(class_name, sizeof(class_name), _TRUNCATE, _T("%s_%x"), TipWinClassName, hInstance);
 	}
 	WNDCLASS twc = { 0 };
-	return (GetClassInfo(hInstance, (LPCSTR)tWin->class_name, &twc) > 0);
+	return (GetClassInfo(hInstance, (LPCSTR)class_name, &twc) > 0);
 }
 
-ATOM CTipWin::RegisterClass(HINSTANCE hInstance)
+ATOM CTipWin::RegisterClass()
 {
-	if (! IsClassRegistered(hInstance)) {
-		memset(&wc, 0, sizeof(WNDCLASS));
-		wc.style = CS_HREDRAW | CS_VREDRAW;
-		wc.lpfnWndProc = WndProc;
-		wc.cbClsExtra = 0;
-		wc.cbWndExtra = 0;
-		wc.hInstance = hInstance;
-		wc.hIcon = NULL;
-		wc.hCursor = NULL;
-		wc.hbrBackground = NULL;
-		wc.lpszMenuName = NULL;
-		wc.lpszClassName = (LPCSTR)tWin->class_name;
-	}
+	WNDCLASS wc;
+	wc.style = CS_HREDRAW | CS_VREDRAW;
+	wc.lpfnWndProc = WndProc;
+	wc.cbClsExtra = 0;
+	wc.cbWndExtra = 0;
+	wc.hInstance = hInstance;
+	wc.hIcon = NULL;
+	wc.hCursor = NULL;
+	wc.hbrBackground = NULL;
+	wc.lpszMenuName = NULL;
+	wc.lpszClassName = (LPCSTR)class_name;
 	return ::RegisterClass(&wc);
 }
 
 BOOL CTipWin::UnregisterClass()
 {
-	return ::UnregisterClass((LPCSTR)tWin->class_name, wc.hInstance);
+	return ::UnregisterClass((LPCSTR)class_name, hInstance);
 }
 
-VOID CTipWin::Create(HINSTANCE hInstance)
+VOID CTipWin::Create(HWND pHwnd)
 {
 	LOGFONTA logfont;
 	const UINT uDpi = GetMonitorDpiFromWindow(pHwnd);
 
-	if (! IsClassRegistered(hInstance))
-		RegisterClass(hInstance);
-	if (tWin == NULL)
+	if(hInstance == NULL) {
+		hInstance = (HINSTANCE)GetWindowLongPtr(pHwnd, GWLP_HINSTANCE);
+	}
+	if (! IsClassRegistered()) {
+		RegisterClass();
+	}
+	if (tWin == NULL) {
 		return;
+	}
 	tWin->str_len = 0;
 	tWin->str = (TCHAR*)malloc(sizeof(TCHAR));
 	memset((void*)tWin->str, 0, sizeof(TCHAR));
@@ -285,7 +278,7 @@
 	 */
 	tWin->tip_wnd =
 		CreateWindowEx(WS_EX_TOOLWINDOW | WS_EX_TOPMOST,
-					   (LPCSTR)tWin->class_name,
+					   (LPCSTR)class_name,
 					   NULL, WS_POPUP,
 					   0, 0,
 					   0, 0,
@@ -293,12 +286,6 @@
 	timerid = 0;
 }
 
-VOID CTipWin::Create()
-{
-	const HINSTANCE hInstance = (HINSTANCE)GetWindowLongPtr(pHwnd, GWLP_HINSTANCE);
-	Create(hInstance);
-}
-
 VOID CTipWin::Destroy()
 {
 	if(IsExists()) {
@@ -377,12 +364,8 @@
 
 TipWin *TipWinCreate(HINSTANCE hInstance, HWND src, int cx, int cy, const TCHAR *str)
 {
-	CTipWin* tipwin = new CTipWin(src);
-	if (hInstance == NULL) {
-		tipwin->Create();
-	} else {
-		tipwin->Create(hInstance);
-	}
+	CTipWin* tipwin = new CTipWin(hInstance);
+	tipwin->Create(src);
 	tipwin->SetText((TCHAR*)str);
 	tipwin->SetPos(cx, cy);
 	tipwin->SetVisible(TRUE);

Modified: branches/tootip_classify/teraterm/common/tipwin.h
===================================================================
--- branches/tootip_classify/teraterm/common/tipwin.h	2019-09-27 11:18:53 UTC (rev 8234)
+++ branches/tootip_classify/teraterm/common/tipwin.h	2019-09-27 18:12:15 UTC (rev 8235)
@@ -60,16 +60,11 @@
 class CTipWin
 {
 public:
-	CTipWin(HWND pHwnd);
+	CTipWin(HINSTANCE hInstance);
 	~CTipWin();
-	ATOM RegisterClass(HINSTANCE hInstance);
-	BOOL UnregisterClass();
-	BOOL IsClassRegistered(HINSTANCE hInstance);
-	VOID Create(HINSTANCE hinstance);
-	VOID Create();
+	VOID Create(HWND pHwnd);
 	VOID Destroy();
 	VOID SetText(TCHAR *str);
-	VOID GetTextWidthHeight(HWND src, const TCHAR *str, int *width, int *height);
 	POINT GetPos();
 	VOID SetPos(int x, int y);
 	VOID SetHideTimer(int ms);
@@ -80,10 +75,13 @@
 	POINT pts;
 	UINT_PTR timerid;
 	TipWin* tWin;
-	WNDCLASS wc;
-	HWND pHwnd;
+	HINSTANCE hInstance;
+	TCHAR class_name[32];
 	static LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam);
 	VOID CalcStrRect(VOID);
+	ATOM RegisterClass();
+	BOOL UnregisterClass();
+	BOOL IsClassRegistered();
 };
 #endif
-#endif
\ No newline at end of file
+#endif

Modified: branches/tootip_classify/teraterm/teraterm/addsetting.cpp
===================================================================
--- branches/tootip_classify/teraterm/teraterm/addsetting.cpp	2019-09-27 11:18:53 UTC (rev 8234)
+++ branches/tootip_classify/teraterm/teraterm/addsetting.cpp	2019-09-27 18:12:15 UTC (rev 8235)
@@ -635,8 +635,7 @@
 	             _T("Visual"), ts.UILanguageFile);
 	m_psp.pszTitle = _tcsdup(UIMsg);
 	m_psp.dwFlags |= (PSP_USETITLE | PSP_HASHELP);
-	TipWin = new CTipWin(HVTWin);
-	TipWin->Create();
+	TipWin = new CTipWin(inst);
 }
 
 CVisualPropPageDlg::~CVisualPropPageDlg()
@@ -818,6 +817,9 @@
 
 	// \x83_\x83C\x83A\x83\x8D\x83O\x82Ƀt\x83H\x81[\x83J\x83X\x82𓖂Ă\xE9
 	::SetFocus(GetDlgItem(IDC_ALPHA_BLEND_ACTIVE));
+
+	// \x83c\x81[\x83\x8B\x83`\x83b\x83v\x8D쐬
+	TipWin->Create(m_hWnd);
 }
 
 void CVisualPropPageDlg::OnHScroll(UINT nSBCode, UINT nPos, HWND pScrollBar)

Modified: branches/tootip_classify/teraterm/teraterm/vtwin.cpp
===================================================================
--- branches/tootip_classify/teraterm/teraterm/vtwin.cpp	2019-09-27 11:18:53 UTC (rev 8234)
+++ branches/tootip_classify/teraterm/teraterm/vtwin.cpp	2019-09-27 18:12:15 UTC (rev 8235)
@@ -805,10 +805,8 @@
 	DropListCount = 0;
 
 	// TipWin
-	TipWin = new CTipWin(HVTWin);
-	// TipWin\x82\xCCWindow\x83N\x83\x89\x83X\x82̓o\x98^\x82\xCDTera Term\x91S\x91̂\xC51\x93x\x82\xBE\x82\xAF\x8Ds\x82\xA4
-	TipWin->RegisterClass(hInstance);
-	TipWin->Create();
+	TipWin = new CTipWin(hInstance);
+	TipWin->Create(HVTWin);
 }
 
 /////////////////////////////////////////////////////////////////////////////
@@ -817,7 +815,6 @@
 CVTWindow::~CVTWindow()
 {
 	TipWin->Destroy();
-	TipWin->UnregisterClass();
 	delete TipWin;
 	TipWin = NULL;
 }

Modified: branches/tootip_classify/teraterm/ttpdlg/ttdlg.c
===================================================================
--- branches/tootip_classify/teraterm/ttpdlg/ttdlg.c	2019-09-27 11:18:53 UTC (rev 8234)
+++ branches/tootip_classify/teraterm/ttpdlg/ttdlg.c	2019-09-27 18:12:15 UTC (rev 8235)
@@ -1266,7 +1266,7 @@
 
 			// \x83c\x81[\x83\x8B\x83`\x83b\x83v\x82\xF0\x95\\x8E\xA6\x82\xB7\x82\xE9
 			if (g_SerialDlgSpeedTip == NULL) {
-				g_SerialDlgSpeedTip = TipWinCreate(NULL, hWnd, cx, cy, str);
+				g_SerialDlgSpeedTip = TipWinCreate(hInst, hWnd, cx, cy, str);
 				TipWinSetHideTimer(g_SerialDlgSpeedTip, tooltip_timeout);
 
 			} else {


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