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 7915 - (hide annotations) (download) (as text)
Mon Aug 5 15:35:36 2019 UTC (4 years, 8 months ago) by zmatsuo
Original Path: trunk/teraterm/teraterm/ftdlg.cpp
File MIME type: text/x-c++src
File size: 7636 byte(s)
Modal を Modeless と修正
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 7554 #include "teraterm_conf.h"
32    
33 zmatsuo 7526 #include <stdio.h>
34     #include <windows.h>
35     #include <commctrl.h>
36     #include <tchar.h>
37 zmatsuo 7554
38 maya 3227 #include "teraterm.h"
39     #include "tttypes.h"
40     #include "ttftypes.h"
41     #include "ttlib.h"
42 zmatsuo 7526 #include "dlglib.h"
43 maya 3227 #include "tt_res.h"
44     #include "ftdlg.h"
45 zmatsuo 7528 #include "teraterml.h"
46 maya 3227
47     #ifdef _DEBUG
48     #define new DEBUG_NEW
49     #undef THIS_FILE
50     static char THIS_FILE[] = __FILE__;
51     #endif
52    
53     /////////////////////////////////////////////////////////////////////////////
54     // CFileTransDlg dialog
55    
56 zmatsuo 7526 BOOL CFileTransDlg::Create(HINSTANCE hInstance, HWND hParent, PFileVar pfv, PComVar pcv, PTTSet pts)
57 maya 3227 {
58 maya 3392 BOOL Ok;
59     int fuLoad = LR_DEFAULTCOLOR;
60 maya 4822 HWND hwnd;
61 maya 3227
62 maya 3392 fv = pfv;
63     cv = pcv;
64     cv->FilePause &= ~fv->OpId;
65     ts = pts;
66 maya 3227
67 maya 3392 Pause = FALSE;
68 zmatsuo 7526 hwnd = GetForegroundWindow();
69 maya 3392 if (fv->OpId == OpLog) { // parent window is desktop
70 zmatsuo 7526 Ok = TTCDialog::Create(hInstance, GetDesktopWindow(), CFileTransDlg::IDD);
71 maya 3392 }
72     else { // parent window is VT window
73 zmatsuo 7526 Ok = TTCDialog::Create(hInstance, NULL, CFileTransDlg::IDD);
74 maya 3392 }
75 maya 3227
76 maya 3392 if (!fv->HideDialog) {
77 maya 4818 // Visible = False ���_�C�A���O���\������
78 maya 3709 ShowWindow(SW_SHOWNORMAL);
79 maya 3392 if (fv->OpId == OpLog) {
80     ShowWindow(SW_MINIMIZE);
81     }
82     }
83 maya 3596 else {
84 maya 4822 // ���O���t�H�A�O���E���h�������E�B���h�E���t�H�[�J�X�������B
85     // ���j���[�������O���X�^�[�g�������� VTWin ���t�H�[�J�X���������������K�v�������B
86 maya 3600 ::SetForegroundWindow(hwnd);
87 maya 3596 }
88 maya 3227
89 maya 3392 fv->HWin = GetSafeHwnd();
90 maya 3227
91 maya 3392 return Ok;
92 maya 3227 }
93    
94     void CFileTransDlg::ChangeButton(BOOL PauseFlag)
95     {
96 maya 3392 Pause = PauseFlag;
97     if (Pause) {
98     get_lang_msg("DLG_FILETRANS_START", ts->UIMsg, sizeof(ts->UIMsg), "&Start", ts->UILanguageFile);
99     SetDlgItemText(IDC_TRANSPAUSESTART, ts->UIMsg);
100     cv->FilePause |= fv->OpId;
101     }
102     else {
103     get_lang_msg("DLG_FILETRANS_PAUSE", ts->UIMsg, sizeof(ts->UIMsg), "Pau&se", ts->UILanguageFile);
104     SetDlgItemText(IDC_TRANSPAUSESTART, ts->UIMsg);
105     cv->FilePause &= ~fv->OpId;
106     }
107 maya 3227 }
108    
109     void CFileTransDlg::RefreshNum()
110     {
111 maya 3392 char NumStr[24];
112     double rate;
113 doda 4454 int rate2;
114     static DWORD prev_elapsed;
115     DWORD elapsed;
116 maya 3227
117 doda 4454 if (fv->OpId == OpSendFile) {
118     if (fv->StartTime == 0) {
119 doda 4461 SetDlgItemText(IDC_TRANS_ETIME, "0:00");
120 doda 4454 prev_elapsed = 0;
121     }
122     else {
123     elapsed = (GetTickCount() - fv->StartTime) / 1000;
124     if (elapsed != prev_elapsed && elapsed != 0) {
125     rate2 = fv->ByteCount / elapsed;
126     if (rate2 < 1200) {
127     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%dBytes/s)", elapsed / 60, elapsed % 60, rate2);
128     }
129     else if (rate2 < 1200000) {
130     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%d.%02dKB/s)", elapsed / 60, elapsed % 60, rate2 / 1000, rate2 / 10 % 100);
131     }
132     else {
133     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%d.%02dMB/s)", elapsed / 60, elapsed % 60, rate2 / (1000*1000), rate2 / 10000 % 100);
134     }
135 doda 4461 SetDlgItemText(IDC_TRANS_ETIME, NumStr);
136 doda 4454 prev_elapsed = elapsed;
137     }
138     }
139     }
140    
141 maya 3392 if (fv->OpId == OpSendFile && fv->FileSize > 0) {
142     rate = 100.0 * (double)fv->ByteCount / (double)fv->FileSize;
143     if (fv->ProgStat < (int)rate) {
144     fv->ProgStat = (int)rate;
145     SendDlgItemMessage(IDC_TRANSPROGRESS, PBM_SETPOS, (WPARAM)fv->ProgStat, 0);
146     }
147     _snprintf_s(NumStr,sizeof(NumStr),_TRUNCATE,"%u (%3.1f%%)",fv->ByteCount, rate);
148     }
149     else {
150     _snprintf_s(NumStr,sizeof(NumStr),_TRUNCATE,"%u",fv->ByteCount);
151     }
152     SetDlgItemText(IDC_TRANSBYTES, NumStr);
153 maya 3227 }
154    
155     /////////////////////////////////////////////////////////////////////////////
156     // CFileTransDlg message handler
157    
158     BOOL CFileTransDlg::OnInitDialog()
159     {
160 zmatsuo 7526 static const DlgTextInfo TextInfos[] = {
161     { IDC_TRANS_FILENAME, "DLG_FILETRANS_FILENAME" },
162     { IDC_FULLPATH_LABEL, "DLG_FILETRANS_FULLPATH" },
163     { IDC_TRANS_TRANS, "DLG_FILETRANS_TRNAS" },
164     { IDC_TRANS_ELAPSED, "DLG_FILETRANS_ELAPSED" },
165     { IDCANCEL, "DLG_FILETRANS_CLOSE" },
166     { IDC_TRANSPAUSESTART, "DLG_FILETRANS_PAUSE" },
167     { IDC_TRANSHELP, "BTN_HELP" },
168     };
169    
170 maya 3392 int fuLoad = LR_DEFAULTCOLOR;
171 maya 3227
172 maya 4822 if (fv->HideDialog) {
173     // Visible = False �����t�H�A�O���E���h�����������������A������������
174     // �������g���X�^�C�� WS_EX_NOACTIVATE ���w�������B
175     // (Windows 2000 �������L��)
176     // WS_EX_NOACTIVATE ���w���������\�����������������^�X�N�o�[����������
177     // ���� WS_EX_APPWINDOW ���w�������B
178     ModifyStyleEx(0, WS_EX_NOACTIVATE | WS_EX_APPWINDOW);
179     }
180    
181 maya 3392 SetWindowText(fv->DlgCaption);
182     SetDlgItemText(IDC_TRANSFNAME, &(fv->FullName[fv->DirLen]));
183 maya 3227
184 maya 3392 // ���O�t�@�C�����t���p�X�\��������(2004.8.6 yutaka)
185     SetDlgItemText(IDC_EDIT_FULLPATH, &(fv->FullName[0]));
186 maya 3227
187 zmatsuo 7526 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts->UILanguageFile);
188    
189 yutakapon 6286 if (IsWindowsNT4()) {
190 maya 3392 fuLoad = LR_VGACOLOR;
191     }
192 zmatsuo 7526 SmallIcon = LoadImage(m_hInst,
193     MAKEINTRESOURCE(IDI_TTERM),
194     IMAGE_ICON, 16, 16, fuLoad);
195 yutakapon 6504 ::PostMessage(GetSafeHwnd(), WM_SETICON, ICON_SMALL,
196 zmatsuo 7526 (LPARAM)SmallIcon);
197 maya 3227
198 zmatsuo 7526 BigIcon = LoadImage(m_hInst,
199     MAKEINTRESOURCE(IDI_TTERM),
200     IMAGE_ICON, 0, 0, fuLoad);
201 yutakapon 6504 ::PostMessage(GetSafeHwnd(), WM_SETICON, ICON_BIG,
202 zmatsuo 7526 (LPARAM)BigIcon);
203 yutakapon 6504
204 zmatsuo 7915 AddModelessHandle(m_hWnd);
205 zmatsuo 7526
206     return TRUE;
207 maya 3227 }
208    
209 zmatsuo 7526 BOOL CFileTransDlg::OnCancel( )
210 maya 3227 {
211 maya 3392 ::PostMessage(fv->HMainWin,WM_USER_FTCANCEL,fv->OpId,0);
212 zmatsuo 7526 return TRUE;
213 maya 3227 }
214    
215 doda 6435 BOOL CFileTransDlg::OnCommand(WPARAM wParam, LPARAM lParam)
216 maya 3227 {
217 maya 3392 switch (LOWORD(wParam)) {
218     case IDCANCEL:
219     ::PostMessage(fv->HMainWin,WM_USER_FTCANCEL,fv->OpId,0);
220     return TRUE;
221     case IDC_TRANSPAUSESTART:
222     ChangeButton(! Pause);
223     return TRUE;
224     case IDC_TRANSHELP:
225     ::PostMessage(fv->HMainWin,WM_USER_DLGHELP2,0,0);
226     return TRUE;
227     default:
228 zmatsuo 7526 return (TTCDialog::OnCommand(wParam,lParam));
229 maya 3392 }
230 maya 3227 }
231    
232 zmatsuo 7526 BOOL CFileTransDlg::PostNcDestroy()
233 maya 3227 {
234 yutakapon 6504 // logopen��logclose���J���������AGDI���\�[�X���[�N�������������C�������B
235     // - LoadImage()�������A�C�R�����\�[�X�����������B
236     // (2016.10.5 yutaka)
237     if (SmallIcon) {
238     DestroyIcon((HICON)SmallIcon);
239     SmallIcon = NULL;
240     }
241    
242     if (BigIcon) {
243     DestroyIcon((HICON)BigIcon);
244     BigIcon = NULL;
245     }
246    
247 zmatsuo 7915 RemoveModelessHandle(m_hWnd);
248 zmatsuo 7526
249 maya 3392 delete this;
250 zmatsuo 7526 return TRUE;
251 maya 3227 }

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