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 9230 - (hide annotations) (download) (as text)
Mon May 3 15:04:42 2021 UTC (2 years, 11 months ago) by zmatsuo
Original Path: trunk/teraterm/teraterm/ftdlg.cpp
File MIME type: text/x-c++src
File size: 8674 byte(s)
_WIN32_WINNTをコンパイルオプションで指定

- Tera Term は _WIN32_WINNT >= 0x0501 でビルドすることが前提となっている
  - 0x0501=_WIN32_WINNT_WINXP
    - Windows XP
    - Windows Server 2003
  - Visual Studio 2005 のプロジェクトファイルに /D_WIN32_WINNT=0x0501 追加済み(r9191)
- teraterm_conf.h を削除
  - WIN32_WINNT をコンパイルオプションで指定するため r7554 で追加した
  - コマンドラインで明示的に指定するようになったた不要となった
    - SDK 7.0 では _WIN32_WINNT が自動で設定されない
    - SDK 7.0 より新しいSDKでは、特に指定されていない場合、自動で設定される
      - SDKのバージョンによって自動で設定される_WIN32_WINNT の値は異なっている
      - SDK 7.1 の場合 0x0601
      - SDK 10.0.18362.0 の場合 0x0A00
      - sdkddkver.h 内で設定される
        - MinGWの場合は _mingw.h
- Visual Studio 2005 では次のSDKでビルドできることを確認済み
  - SDK 7.0
  - SDK 7.1
- Tera Term は Visual Studio 2005 以上をサポート
  - MSC_VER >= 1400
1 doda 6806 /*
2     * Copyright (C) 1994-1998 T. Teranishi
3 nmaya 9048 * (C) 2007- 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
32 zmatsuo 7526 #include <stdio.h>
33     #include <windows.h>
34     #include <commctrl.h>
35 zmatsuo 7554
36 maya 3227 #include "teraterm.h"
37     #include "tttypes.h"
38     #include "ttlib.h"
39 zmatsuo 7526 #include "dlglib.h"
40 maya 3227 #include "tt_res.h"
41     #include "ftdlg.h"
42 zmatsuo 7528 #include "teraterml.h"
43 zmatsuo 8225 #include "helpid.h"
44 zmatsuo 8857 #include "filesys.h"
45 zmatsuo 8899 #include "codeconv.h"
46 maya 3227
47     /////////////////////////////////////////////////////////////////////////////
48     // CFileTransDlg dialog
49    
50 zmatsuo 8895 CFileTransDlg::CFileTransDlg()
51 maya 3227 {
52 zmatsuo 8895 SmallIcon = NULL;
53     BigIcon = NULL;
54     DlgCaption = NULL;
55     FileName = NULL;
56     FullName = NULL;
57     ProgStat = 0;
58     }
59    
60     CFileTransDlg::~CFileTransDlg()
61     {
62     free(DlgCaption);
63     free(FileName);
64     free(FullName);
65     }
66    
67 zmatsuo 9070 BOOL CFileTransDlg::Create(HINSTANCE hInstance, CFileTransDlg::Info *info)
68 zmatsuo 8895 {
69 maya 3392 BOOL Ok;
70     int fuLoad = LR_DEFAULTCOLOR;
71 maya 4822 HWND hwnd;
72 maya 3227
73 zmatsuo 8895 UILanguageFile = info->UILanguageFile;
74 zmatsuo 9067 OpId = info->OpId; // OpLog or OpSendFile ����
75 zmatsuo 8899 DlgCaption = _wcsdup(info->DlgCaption);
76     FullName = _wcsdup(info->FullName);
77 zmatsuo 8902 if (info->FileName != NULL) {
78     FileName = _wcsdup(info->FileName);
79     }
80     else {
81     const wchar_t *fullname = info->FullName;
82     const wchar_t *p = wcsrchr(fullname, L'\\');
83     if (p == NULL) {
84     p = wcsrchr(fullname, L'/');
85     }
86     if (p == NULL) {
87     FileName = _wcsdup(fullname);
88     }
89     else {
90     FileName = _wcsdup(p + 1);
91     }
92     }
93 zmatsuo 8895 HideDialog = info->HideDialog;
94     HMainWin = info->HMainWin;
95 maya 3227
96 maya 3392 Pause = FALSE;
97 zmatsuo 7526 hwnd = GetForegroundWindow();
98 zmatsuo 8895 if (OpId == OpLog) { // parent window is desktop
99 zmatsuo 8850 Ok = TTCDialog::Create(hInstance, GetDesktopWindow(), IDD_FILETRANSDLG);
100 maya 3392 }
101     else { // parent window is VT window
102 zmatsuo 8850 Ok = TTCDialog::Create(hInstance, NULL, IDD_FILETRANSDLG);
103 maya 3392 }
104 zmatsuo 8895 if (OpId == OpSendFile) {
105     HWND HProg = ::GetDlgItem(m_hWnd, IDC_TRANSPROGRESS);
106    
107     ProgStat = 0;
108    
109     ::SendMessage(HProg, PBM_SETRANGE, (WPARAM)0, MAKELPARAM(0, 100));
110     ::SendMessage(HProg, PBM_SETSTEP, (WPARAM)1, 0);
111     ::SendMessage(HProg, PBM_SETPOS, (WPARAM)0, 0);
112    
113     ::ShowWindow(HProg, SW_SHOW);
114    
115 zmatsuo 8857 ::ShowWindow(GetDlgItem(IDC_TRANS_ELAPSED), SW_SHOW);
116     }
117 maya 3227
118 zmatsuo 8895 if (!HideDialog) {
119 maya 4818 // Visible = False ���_�C�A���O���\������
120 maya 3709 ShowWindow(SW_SHOWNORMAL);
121 zmatsuo 8895 if (OpId == OpLog) {
122 maya 3392 ShowWindow(SW_MINIMIZE);
123     }
124     }
125 maya 3596 else {
126 maya 4822 // ���O���t�H�A�O���E���h�������E�B���h�E���t�H�[�J�X�������B
127     // ���j���[�������O���X�^�[�g�������� VTWin ���t�H�[�J�X���������������K�v�������B
128 maya 3600 ::SetForegroundWindow(hwnd);
129 maya 3596 }
130 maya 3227
131 maya 3392 return Ok;
132 maya 3227 }
133    
134 zmatsuo 8857 /**
135     * �e�L�X�g�����X����
136     */
137 maya 3227 void CFileTransDlg::ChangeButton(BOOL PauseFlag)
138     {
139 maya 3392 Pause = PauseFlag;
140     if (Pause) {
141 zmatsuo 8857 static const DlgTextInfo TextInfos[] = {
142     { IDC_TRANSPAUSESTART, "DLG_FILETRANS_START" },
143     };
144     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), UILanguageFile);
145 maya 3392 }
146     else {
147 zmatsuo 8857 static const DlgTextInfo TextInfos[] = {
148     { IDC_TRANSPAUSESTART, "DLG_FILETRANS_PAUSE" },
149     };
150     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), UILanguageFile);
151 maya 3392 }
152 maya 3227 }
153    
154 zmatsuo 8895 void CFileTransDlg::RefreshNum(DWORD StartTime, LONG FileSize, LONG ByteCount)
155 maya 3227 {
156 maya 3392 char NumStr[24];
157     double rate;
158 doda 4454 int rate2;
159     static DWORD prev_elapsed;
160     DWORD elapsed;
161 maya 3227
162 zmatsuo 8895 if (OpId == OpSendFile) {
163     if (StartTime == 0) {
164 doda 4461 SetDlgItemText(IDC_TRANS_ETIME, "0:00");
165 doda 4454 prev_elapsed = 0;
166     }
167     else {
168 zmatsuo 8895 elapsed = (GetTickCount() - StartTime) / 1000;
169 doda 4454 if (elapsed != prev_elapsed && elapsed != 0) {
170 zmatsuo 8895 rate2 = ByteCount / elapsed;
171 doda 4454 if (rate2 < 1200) {
172     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%dBytes/s)", elapsed / 60, elapsed % 60, rate2);
173     }
174     else if (rate2 < 1200000) {
175     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%d.%02dKB/s)", elapsed / 60, elapsed % 60, rate2 / 1000, rate2 / 10 % 100);
176     }
177     else {
178     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%d.%02dMB/s)", elapsed / 60, elapsed % 60, rate2 / (1000*1000), rate2 / 10000 % 100);
179     }
180 doda 4461 SetDlgItemText(IDC_TRANS_ETIME, NumStr);
181 doda 4454 prev_elapsed = elapsed;
182     }
183     }
184    
185 zmatsuo 8895 if (FileSize > 0) {
186     rate = 100.0 * (double)ByteCount / (double)FileSize;
187     if (ProgStat < (int)rate) {
188     ProgStat = (int)rate;
189     SendDlgItemMessage(IDC_TRANSPROGRESS, PBM_SETPOS, (WPARAM)ProgStat, 0);
190     }
191     _snprintf_s(NumStr,sizeof(NumStr),_TRUNCATE,"%u (%3.1f%%)",ByteCount, rate);
192 maya 3392 }
193 zmatsuo 8895 SetDlgItemText(IDC_TRANSBYTES, NumStr);
194 maya 3392 }
195     else {
196 zmatsuo 8895 _snprintf_s(NumStr,sizeof(NumStr),_TRUNCATE,"%u",ByteCount);
197     SetDlgItemText(IDC_TRANSBYTES, NumStr);
198 maya 3392 }
199 maya 3227 }
200    
201     /////////////////////////////////////////////////////////////////////////////
202     // CFileTransDlg message handler
203    
204     BOOL CFileTransDlg::OnInitDialog()
205     {
206 zmatsuo 7526 static const DlgTextInfo TextInfos[] = {
207     { IDC_TRANS_FILENAME, "DLG_FILETRANS_FILENAME" },
208     { IDC_FULLPATH_LABEL, "DLG_FILETRANS_FULLPATH" },
209     { IDC_TRANS_TRANS, "DLG_FILETRANS_TRNAS" },
210     { IDC_TRANS_ELAPSED, "DLG_FILETRANS_ELAPSED" },
211     { IDCANCEL, "DLG_FILETRANS_CLOSE" },
212     { IDC_TRANSPAUSESTART, "DLG_FILETRANS_PAUSE" },
213     { IDC_TRANSHELP, "BTN_HELP" },
214     };
215    
216 maya 3392 int fuLoad = LR_DEFAULTCOLOR;
217 maya 3227
218 zmatsuo 8895 if (HideDialog) {
219 maya 4822 // Visible = False �����t�H�A�O���E���h�����������������A������������
220     // �������g���X�^�C�� WS_EX_NOACTIVATE ���w�������B
221     // (Windows 2000 �������L��)
222     // WS_EX_NOACTIVATE ���w���������\�����������������^�X�N�o�[����������
223     // ���� WS_EX_APPWINDOW ���w�������B
224     ModifyStyleEx(0, WS_EX_NOACTIVATE | WS_EX_APPWINDOW);
225     }
226    
227 zmatsuo 8899 SetWindowTextW(DlgCaption);
228     SetDlgItemTextW(IDC_TRANSFNAME, FileName);
229     SetDlgItemTextW(IDC_EDIT_FULLPATH, FullName);
230 maya 3227
231 zmatsuo 8857 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), UILanguageFile);
232 zmatsuo 7526
233 yutakapon 6286 if (IsWindowsNT4()) {
234 maya 3392 fuLoad = LR_VGACOLOR;
235     }
236 zmatsuo 7526 SmallIcon = LoadImage(m_hInst,
237     MAKEINTRESOURCE(IDI_TTERM),
238     IMAGE_ICON, 16, 16, fuLoad);
239 yutakapon 6504 ::PostMessage(GetSafeHwnd(), WM_SETICON, ICON_SMALL,
240 zmatsuo 7526 (LPARAM)SmallIcon);
241 maya 3227
242 zmatsuo 7526 BigIcon = LoadImage(m_hInst,
243     MAKEINTRESOURCE(IDI_TTERM),
244     IMAGE_ICON, 0, 0, fuLoad);
245 yutakapon 6504 ::PostMessage(GetSafeHwnd(), WM_SETICON, ICON_BIG,
246 zmatsuo 7526 (LPARAM)BigIcon);
247 yutakapon 6504
248 zmatsuo 7915 AddModelessHandle(m_hWnd);
249 zmatsuo 7526
250     return TRUE;
251 maya 3227 }
252    
253 zmatsuo 7526 BOOL CFileTransDlg::OnCancel( )
254 maya 3227 {
255 zmatsuo 8900 if (OpId == OpLog) {
256     FLogClose();
257     }
258     else {
259 zmatsuo 9067 FileSendEnd();
260 zmatsuo 8900 }
261 zmatsuo 7526 return TRUE;
262 maya 3227 }
263    
264 doda 6435 BOOL CFileTransDlg::OnCommand(WPARAM wParam, LPARAM lParam)
265 maya 3227 {
266 maya 3392 switch (LOWORD(wParam)) {
267     case IDC_TRANSPAUSESTART:
268     ChangeButton(! Pause);
269 zmatsuo 8900 if (OpId == OpLog) {
270     FLogPause(Pause);
271     }
272     else {
273 zmatsuo 9069 FileSendPause(Pause);
274 zmatsuo 8900 }
275 maya 3392 return TRUE;
276     case IDC_TRANSHELP:
277 zmatsuo 8895 if (OpId == OpLog) {
278     ::PostMessage(HMainWin, WM_USER_DLGHELP2, HlpFileLog, 0);
279 zmatsuo 8851 }
280     else {
281 zmatsuo 8895 ::PostMessage(HMainWin, WM_USER_DLGHELP2, HlpFileSend, 0);
282 zmatsuo 8851 }
283 maya 3392 return TRUE;
284     default:
285 zmatsuo 7526 return (TTCDialog::OnCommand(wParam,lParam));
286 maya 3392 }
287 maya 3227 }
288    
289 zmatsuo 7526 BOOL CFileTransDlg::PostNcDestroy()
290 maya 3227 {
291 yutakapon 6504 // logopen��logclose���J���������AGDI���\�[�X���[�N�������������C�������B
292     // - LoadImage()�������A�C�R�����\�[�X�����������B
293     // (2016.10.5 yutaka)
294     if (SmallIcon) {
295     DestroyIcon((HICON)SmallIcon);
296     SmallIcon = NULL;
297     }
298    
299     if (BigIcon) {
300     DestroyIcon((HICON)BigIcon);
301     BigIcon = NULL;
302     }
303    
304 zmatsuo 7915 RemoveModelessHandle(m_hWnd);
305 zmatsuo 7526
306 maya 3392 delete this;
307 zmatsuo 7526 return TRUE;
308 maya 3227 }

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