Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /branches/ttcomtester/teraterm/teraterm/ftdlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7526 - (hide annotations) (download) (as text)
Thu Mar 28 16:38:29 2019 UTC (5 years ago) by zmatsuo
Original Path: trunk/teraterm/teraterm/ftdlg.cpp
File MIME type: text/x-c++src
File size: 7642 byte(s)
ファイル転送関連を高DPI化
1 doda 6806 /*
2     * Copyright (C) 1994-1998 T. Teranishi
3 zmatsuo 7526 * (C) 2007-2019 TeraTerm Project
4 doda 6806 * All rights reserved.
5     *
6 doda 6841 * Redistribution and use in source and binary forms, with or without
7     * modification, are permitted provided that the following conditions
8     * are met:
9 doda 6806 *
10 doda 6841 * 1. Redistributions of source code must retain the above copyright
11     * notice, this list of conditions and the following disclaimer.
12     * 2. Redistributions in binary form must reproduce the above copyright
13     * notice, this list of conditions and the following disclaimer in the
14     * documentation and/or other materials provided with the distribution.
15     * 3. The name of the author may not be used to endorse or promote products
16     * derived from this software without specific prior written permission.
17 doda 6806 *
18 doda 6841 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
19     * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20     * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21     * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22     * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23     * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24     * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27     * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 doda 6806 */
29 maya 3227
30     /* TERATERM.EXE, file transfer dialog box */
31 zmatsuo 7526 #include <stdio.h>
32     #include <windows.h>
33     #include <commctrl.h>
34     #include <tchar.h>
35 maya 3227 #include "teraterm.h"
36     #include "tttypes.h"
37     #include "ttftypes.h"
38     #include "ttlib.h"
39 zmatsuo 7526 #include "dlglib.h"
40 maya 3227 #include "tt_res.h"
41     #include "ftdlg.h"
42    
43     #ifdef _DEBUG
44     #define new DEBUG_NEW
45     #undef THIS_FILE
46     static char THIS_FILE[] = __FILE__;
47     #endif
48    
49     /////////////////////////////////////////////////////////////////////////////
50     // CFileTransDlg dialog
51    
52 zmatsuo 7526 BOOL CFileTransDlg::Create(HINSTANCE hInstance, HWND hParent, PFileVar pfv, PComVar pcv, PTTSet pts)
53 maya 3227 {
54 maya 3392 BOOL Ok;
55     int fuLoad = LR_DEFAULTCOLOR;
56 maya 4822 HWND hwnd;
57 maya 3227
58 maya 3392 fv = pfv;
59     cv = pcv;
60     cv->FilePause &= ~fv->OpId;
61     ts = pts;
62 maya 3227
63 maya 3392 Pause = FALSE;
64 zmatsuo 7526 hwnd = GetForegroundWindow();
65 maya 3392 if (fv->OpId == OpLog) { // parent window is desktop
66 zmatsuo 7526 Ok = TTCDialog::Create(hInstance, GetDesktopWindow(), CFileTransDlg::IDD);
67 maya 3392 }
68     else { // parent window is VT window
69 zmatsuo 7526 Ok = TTCDialog::Create(hInstance, NULL, CFileTransDlg::IDD);
70 maya 3392 }
71 maya 3227
72 maya 3392 if (!fv->HideDialog) {
73 maya 4818 // Visible = False ���_�C�A���O���\������
74 maya 3709 ShowWindow(SW_SHOWNORMAL);
75 maya 3392 if (fv->OpId == OpLog) {
76     ShowWindow(SW_MINIMIZE);
77     }
78     }
79 maya 3596 else {
80 maya 4822 // ���O���t�H�A�O���E���h�������E�B���h�E���t�H�[�J�X�������B
81     // ���j���[�������O���X�^�[�g�������� VTWin ���t�H�[�J�X���������������K�v�������B
82 maya 3600 ::SetForegroundWindow(hwnd);
83 maya 3596 }
84 maya 3227
85 maya 3392 fv->HWin = GetSafeHwnd();
86 maya 3227
87 maya 3392 return Ok;
88 maya 3227 }
89    
90     void CFileTransDlg::ChangeButton(BOOL PauseFlag)
91     {
92 maya 3392 Pause = PauseFlag;
93     if (Pause) {
94     get_lang_msg("DLG_FILETRANS_START", ts->UIMsg, sizeof(ts->UIMsg), "&Start", ts->UILanguageFile);
95     SetDlgItemText(IDC_TRANSPAUSESTART, ts->UIMsg);
96     cv->FilePause |= fv->OpId;
97     }
98     else {
99     get_lang_msg("DLG_FILETRANS_PAUSE", ts->UIMsg, sizeof(ts->UIMsg), "Pau&se", ts->UILanguageFile);
100     SetDlgItemText(IDC_TRANSPAUSESTART, ts->UIMsg);
101     cv->FilePause &= ~fv->OpId;
102     }
103 maya 3227 }
104    
105     void CFileTransDlg::RefreshNum()
106     {
107 maya 3392 char NumStr[24];
108     double rate;
109 doda 4454 int rate2;
110     static DWORD prev_elapsed;
111     DWORD elapsed;
112 maya 3227
113 doda 4454 if (fv->OpId == OpSendFile) {
114     if (fv->StartTime == 0) {
115 doda 4461 SetDlgItemText(IDC_TRANS_ETIME, "0:00");
116 doda 4454 prev_elapsed = 0;
117     }
118     else {
119     elapsed = (GetTickCount() - fv->StartTime) / 1000;
120     if (elapsed != prev_elapsed && elapsed != 0) {
121     rate2 = fv->ByteCount / elapsed;
122     if (rate2 < 1200) {
123     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%dBytes/s)", elapsed / 60, elapsed % 60, rate2);
124     }
125     else if (rate2 < 1200000) {
126     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%d.%02dKB/s)", elapsed / 60, elapsed % 60, rate2 / 1000, rate2 / 10 % 100);
127     }
128     else {
129     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%d.%02dMB/s)", elapsed / 60, elapsed % 60, rate2 / (1000*1000), rate2 / 10000 % 100);
130     }
131 doda 4461 SetDlgItemText(IDC_TRANS_ETIME, NumStr);
132 doda 4454 prev_elapsed = elapsed;
133     }
134     }
135     }
136    
137 maya 3392 if (fv->OpId == OpSendFile && fv->FileSize > 0) {
138     rate = 100.0 * (double)fv->ByteCount / (double)fv->FileSize;
139     if (fv->ProgStat < (int)rate) {
140     fv->ProgStat = (int)rate;
141     SendDlgItemMessage(IDC_TRANSPROGRESS, PBM_SETPOS, (WPARAM)fv->ProgStat, 0);
142     }
143     _snprintf_s(NumStr,sizeof(NumStr),_TRUNCATE,"%u (%3.1f%%)",fv->ByteCount, rate);
144     }
145     else {
146     _snprintf_s(NumStr,sizeof(NumStr),_TRUNCATE,"%u",fv->ByteCount);
147     }
148     SetDlgItemText(IDC_TRANSBYTES, NumStr);
149 maya 3227 }
150    
151     /////////////////////////////////////////////////////////////////////////////
152     // CFileTransDlg message handler
153 zmatsuo 7526 #define AddModalHandle(p1) // TODO
154     #define RemoveModalHandle(p1)
155 maya 3227
156     BOOL CFileTransDlg::OnInitDialog()
157     {
158 zmatsuo 7526 static const DlgTextInfo TextInfos[] = {
159     { IDC_TRANS_FILENAME, "DLG_FILETRANS_FILENAME" },
160     { IDC_FULLPATH_LABEL, "DLG_FILETRANS_FULLPATH" },
161     { IDC_TRANS_TRANS, "DLG_FILETRANS_TRNAS" },
162     { IDC_TRANS_ELAPSED, "DLG_FILETRANS_ELAPSED" },
163     { IDCANCEL, "DLG_FILETRANS_CLOSE" },
164     { IDC_TRANSPAUSESTART, "DLG_FILETRANS_PAUSE" },
165     { IDC_TRANSHELP, "BTN_HELP" },
166     };
167    
168 maya 3392 int fuLoad = LR_DEFAULTCOLOR;
169 maya 3227
170 maya 4822 if (fv->HideDialog) {
171     // Visible = False �����t�H�A�O���E���h�����������������A������������
172     // �������g���X�^�C�� WS_EX_NOACTIVATE ���w�������B
173     // (Windows 2000 �������L��)
174     // WS_EX_NOACTIVATE ���w���������\�����������������^�X�N�o�[����������
175     // ���� WS_EX_APPWINDOW ���w�������B
176     ModifyStyleEx(0, WS_EX_NOACTIVATE | WS_EX_APPWINDOW);
177     }
178    
179 maya 3392 SetWindowText(fv->DlgCaption);
180     SetDlgItemText(IDC_TRANSFNAME, &(fv->FullName[fv->DirLen]));
181 maya 3227
182 maya 3392 // ���O�t�@�C�����t���p�X�\��������(2004.8.6 yutaka)
183     SetDlgItemText(IDC_EDIT_FULLPATH, &(fv->FullName[0]));
184 maya 3227
185 zmatsuo 7526 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts->UILanguageFile);
186    
187 yutakapon 6286 if (IsWindowsNT4()) {
188 maya 3392 fuLoad = LR_VGACOLOR;
189     }
190 zmatsuo 7526 SmallIcon = LoadImage(m_hInst,
191     MAKEINTRESOURCE(IDI_TTERM),
192     IMAGE_ICON, 16, 16, fuLoad);
193 yutakapon 6504 ::PostMessage(GetSafeHwnd(), WM_SETICON, ICON_SMALL,
194 zmatsuo 7526 (LPARAM)SmallIcon);
195 maya 3227
196 zmatsuo 7526 BigIcon = LoadImage(m_hInst,
197     MAKEINTRESOURCE(IDI_TTERM),
198     IMAGE_ICON, 0, 0, fuLoad);
199 yutakapon 6504 ::PostMessage(GetSafeHwnd(), WM_SETICON, ICON_BIG,
200 zmatsuo 7526 (LPARAM)BigIcon);
201 yutakapon 6504
202 zmatsuo 7526 AddModalHandle(m_hWnd);
203    
204     return TRUE;
205 maya 3227 }
206    
207 zmatsuo 7526 BOOL CFileTransDlg::OnCancel( )
208 maya 3227 {
209 maya 3392 ::PostMessage(fv->HMainWin,WM_USER_FTCANCEL,fv->OpId,0);
210 zmatsuo 7526 return TRUE;
211 maya 3227 }
212    
213 doda 6435 BOOL CFileTransDlg::OnCommand(WPARAM wParam, LPARAM lParam)
214 maya 3227 {
215 maya 3392 switch (LOWORD(wParam)) {
216     case IDCANCEL:
217     ::PostMessage(fv->HMainWin,WM_USER_FTCANCEL,fv->OpId,0);
218     return TRUE;
219     case IDC_TRANSPAUSESTART:
220     ChangeButton(! Pause);
221     return TRUE;
222     case IDC_TRANSHELP:
223     ::PostMessage(fv->HMainWin,WM_USER_DLGHELP2,0,0);
224     return TRUE;
225     default:
226 zmatsuo 7526 return (TTCDialog::OnCommand(wParam,lParam));
227 maya 3392 }
228 maya 3227 }
229    
230 zmatsuo 7526 BOOL CFileTransDlg::PostNcDestroy()
231 maya 3227 {
232 yutakapon 6504 // logopen��logclose���J���������AGDI���\�[�X���[�N�������������C�������B
233     // - LoadImage()�������A�C�R�����\�[�X�����������B
234     // (2016.10.5 yutaka)
235     if (SmallIcon) {
236     DestroyIcon((HICON)SmallIcon);
237     SmallIcon = NULL;
238     }
239    
240     if (BigIcon) {
241     DestroyIcon((HICON)BigIcon);
242     BigIcon = NULL;
243     }
244    
245 zmatsuo 7526 RemoveModalHandle(m_hWnd);
246    
247 maya 3392 delete this;
248 zmatsuo 7526 return TRUE;
249 maya 3227 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26