• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revision5752 (tree)
Time2015-01-02 16:48:24
Author(del#24082)

Log Message

チケット #34762
マクロウィンドウをリサイズ可能にした。

Change Summary

Incremental Difference

--- trunk/teraterm/ttpmacro/ttmbuff.c (revision 5751)
+++ trunk/teraterm/ttpmacro/ttmbuff.c (revision 5752)
@@ -20,7 +20,7 @@
2020
2121 #define MAXNESTLEVEL 10
2222
23-#define MAXFILENAME 32 // .ttlファイル名の最大サイズ
23+#define MAXFILENAME 128 // .ttlファイル名の最大サイズ
2424
2525 static int INest;
2626 static HANDLE BuffHandle[MAXNESTLEVEL];
--- trunk/teraterm/ttpmacro/ttmmain.h (revision 5751)
+++ trunk/teraterm/ttpmacro/ttmmain.h (revision 5752)
@@ -34,6 +34,10 @@
3434 HICON m_hIcon;
3535 HFONT DlgFont;
3636
37+ LONG m_init_width, m_init_height;
38+ LONG m_filename_ratio, m_lineno_ratio;
39+ HWND m_hStatus;
40+
3741 //{{AFX_MSG(CCtrlWindow)
3842 virtual BOOL OnInitDialog();
3943 afx_msg void OnClose();
@@ -40,6 +44,8 @@
4044 afx_msg void OnDestroy();
4145 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
4246 afx_msg void OnPaint();
47+ afx_msg void OnSize(UINT nType, int cx, int cy);
48+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
4349 afx_msg HCURSOR OnQueryDragIcon();
4450 afx_msg void OnSysColorChange();
4551 afx_msg void OnTimer(UINT nIDEvent);
--- trunk/teraterm/ttpmacro/ttmmain.cpp (revision 5751)
+++ trunk/teraterm/ttpmacro/ttmmain.cpp (revision 5752)
@@ -49,6 +49,7 @@
4949 char Temp[2];
5050
5151 if (TTLStatus==IdTTLEnd) {
52+ ::DestroyWindow(m_hStatus);
5253 DestroyWindow();
5354 return FALSE;
5455 }
@@ -193,6 +194,8 @@
193194 ON_WM_DESTROY()
194195 ON_WM_ERASEBKGND()
195196 ON_WM_PAINT()
197+ ON_WM_SIZE()
198+ ON_WM_GETMINMAXINFO()
196199 ON_WM_QUERYDRAGICON()
197200 ON_WM_SYSCOLORCHANGE()
198201 ON_WM_TIMER()
@@ -218,6 +221,8 @@
218221 LOGFONT logfont;
219222 HFONT font;
220223 int fuLoad = LR_DEFAULTCOLOR;
224+ RECT rc_dlg, rc_filename, rc_lineno;
225+ LONG dlg_len, len;
221226
222227 CDialog::OnInitDialog();
223228
@@ -286,6 +291,32 @@
286291 // send the initialization signal to TT
287292 SendCmnd(CmdInit,0);
288293
294+ // ダイアログの初期サイズを保存
295+ GetWindowRect(&rc_dlg);
296+ m_init_width = rc_dlg.right - rc_dlg.left;
297+ m_init_height = rc_dlg.bottom - rc_dlg.top;
298+
299+ /* マクロウィンドウをリサイズ可能にする。
300+ * (2015.1.2 yutaka)
301+ */
302+ // 現在サイズから必要な値を計算
303+ GetClientRect(&rc_dlg);
304+ ClientToScreen(&rc_dlg);
305+ dlg_len = rc_dlg.right - rc_dlg.left;
306+
307+ GetDlgItem(IDC_FILENAME)->GetWindowRect(&rc_filename);
308+ len = rc_filename.right - rc_filename.left;
309+ m_filename_ratio = len*100 / dlg_len;
310+
311+ GetDlgItem(IDC_LINENO)->GetWindowRect(&rc_lineno);
312+ len = rc_lineno.right - rc_lineno.left;
313+ m_lineno_ratio = len * 100 / dlg_len;
314+
315+ // リサイズアイコンを右下に表示させたいので、ステータスバーを付ける。
316+ m_hStatus = CreateStatusWindow(
317+ WS_CHILD | WS_VISIBLE |
318+ CCS_BOTTOM | SBARS_SIZEGRIP, NULL, GetSafeHwnd(), 1);
319+
289320 if (VOption) {
290321 return TRUE;
291322 }
@@ -296,11 +327,13 @@
296327 CmdShow = SW_SHOWDEFAULT;
297328 }
298329 ShowWindow(CmdShow);
330+
299331 return TRUE;
300332 }
301333
302334 void CCtrlWindow::OnCancel( )
303335 {
336+ ::DestroyWindow(m_hStatus);
304337 DestroyWindow();
305338 }
306339
@@ -379,6 +412,56 @@
379412 dc.SetMapMode(OldMapMode);
380413 }
381414
415+// マクロウィンドウをリサイズ可能とするために、OnSizeハンドラをoverrideする。
416+// (2015.1.1 yutaka)
417+void CCtrlWindow::OnSize(UINT nType, int cx, int cy)
418+{
419+ RECT rc_dlg, rc_filename, rc_lineno;
420+ LONG new_w, new_h, new_x, new_y;
421+ LONG len;
422+
423+ GetClientRect(&rc_dlg);
424+ ClientToScreen(&rc_dlg);
425+ len = rc_dlg.right - rc_dlg.left;
426+
427+ // TTLファイル名の再配置
428+ GetDlgItem(IDC_FILENAME)->GetWindowRect(&rc_filename);
429+ ScreenToClient(&rc_filename);
430+ new_w = (len * m_filename_ratio) / 100;
431+ new_h = rc_filename.bottom - rc_filename.top;
432+ GetDlgItem(IDC_FILENAME)->SetWindowPos(&CWnd::wndBottom,
433+ 0, 0, new_w, new_h,
434+ SWP_NOMOVE | SWP_NOZORDER
435+ );
436+ new_x = rc_filename.left + new_w;
437+
438+ // 行番号の再配置
439+ GetDlgItem(IDC_LINENO)->GetWindowRect(&rc_lineno);
440+ ScreenToClient(&rc_lineno);
441+ new_w = (len * m_lineno_ratio) / 100;
442+ new_h = rc_lineno.bottom - rc_lineno.top;
443+ new_y = rc_lineno.top;
444+ GetDlgItem(IDC_LINENO)->SetWindowPos(&CWnd::wndBottom,
445+ new_x, new_y, new_w, new_h,
446+ SWP_NOZORDER
447+ );
448+
449+ // status bar
450+ ::SendMessage(m_hStatus, WM_SIZE, cx, cy);
451+}
452+
453+// マクロウィンドウをリサイズ可能とするために、OnGetMinMaxInfoハンドラをoverrideする。
454+// (2015.1.1 yutaka)
455+void CCtrlWindow::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
456+{
457+ LPMINMAXINFO lpmmi;
458+
459+ // ダイアログの初期サイズより小さくできないようにする
460+ lpmmi = (LPMINMAXINFO)lpMMI;
461+ lpmmi->ptMinTrackSize.x = m_init_width;
462+ lpmmi->ptMinTrackSize.y = m_init_height;
463+}
464+
382465 // for icon drawing in Win NT 3.5
383466 HCURSOR CCtrlWindow::OnQueryDragIcon()
384467 {
Show on old repository browser