Develop and Download Open Source Software

Browse Subversion Repository

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6101 - (hide annotations) (download) (as text)
Mon Nov 9 14:24:48 2015 UTC (8 years, 5 months ago) by maya
Original Path: trunk/teraterm/teraterm/vtwin.cpp
File MIME type: text/x-c++src
File size: 173648 byte(s)
Visual Stuido 2005 でコンパイルできないので修正
1 maya 3227 /* Tera Term
2     Copyright(C) 1994-1998 T. Teranishi
3     All rights reserved. */
4     /* IPv6 modification is Copyright(C) 2000 Jun-ya Kato <kato@win6.jp> */
5    
6     /* TERATERM.EXE, VT window */
7    
8     #include "stdafx.h"
9     #include "teraterm.h"
10     #include "tttypes.h"
11    
12     #include "ttcommon.h"
13     #include "ttwinman.h"
14     #include "ttsetup.h"
15     #include "keyboard.h"
16     #include "buffer.h"
17     #include "vtterm.h"
18     #include "vtdisp.h"
19     #include "ttdialog.h"
20     #include "ttime.h"
21     #include "commlib.h"
22     #include "clipboar.h"
23     #include "ttftypes.h"
24     #include "filesys.h"
25     #include "telnet.h"
26     #include "tektypes.h"
27     #include "tekwin.h"
28     #include "ttdde.h"
29     #include "ttlib.h"
30     #include "helpid.h"
31     #include "teraprn.h"
32     #ifndef NO_INET6
33     #include <winsock2.h>
34     #include <ws2tcpip.h>
35     #else
36     #include <winsock.h>
37     #endif /* NO_INET6 */
38     #include "ttplug.h" /* TTPLUG */
39    
40     #include <stdio.h>
41     #include <stdlib.h>
42     #include <string.h>
43     #include <locale.h>
44    
45     #include <shlobj.h>
46     #include <io.h>
47     #include <errno.h>
48     #include <imagehlp.h>
49    
50     #include <windowsx.h>
51 yutakapon 3898 #include <imm.h>
52 salarm 6076 #include <Dbt.h>
53 maya 3227
54     #include "tt_res.h"
55     #include "vtwin.h"
56     #include "addsetting.h"
57 yutakapon 4385 #include "winjump.h"
58 maya 3227
59 salarm 6100 #include "initguid.h"
60 maya 6101 //#include "Usbiodef.h"
61     DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE, 0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, \
62     0xC0, 0x4F, 0xB9, 0x51, 0xED);
63 salarm 6100
64 maya 3227 #define VTClassName "VTWin32"
65    
66     #ifdef _DEBUG
67     #define new DEBUG_NEW
68     #undef THIS_FILE
69     static char THIS_FILE[] = __FILE__;
70     #endif
71    
72     // �E�B���h�E�������{�^�����L�������� (2005.1.15 yutaka)
73     #define WINDOW_MAXMIMUM_ENABLED 1
74    
75     // WM_COPYDATA�������v���Z�X�����M������ (2005.1.22 yutaka)
76     #define IPC_BROADCAST_COMMAND 1 // �S�[�������M
77     #define IPC_MULTICAST_COMMAND 2 // �C�����[���Q�����M
78    
79     #define BROADCAST_LOGFILE "broadcast.log"
80    
81     static HFONT DlgBroadcastFont;
82     static HFONT DlgCommentFont;
83    
84 doda 3580 static BOOL TCPLocalEchoUsed = FALSE;
85     static BOOL TCPCRSendUsed = FALSE;
86    
87 doda 5341 static BOOL IgnoreRelease = FALSE;
88    
89 salarm 6100 static HDEVNOTIFY hDevNotify = NULL;
90    
91 salarm 6076 static int AutoDisconnectedPort = -1;
92    
93 maya 3227 // �{���� addsetting.cpp
94     extern mouse_cursor_t MouseCursor[];
95    
96     /////////////////////////////////////////////////////////////////////////////
97     // CVTWindow
98    
99     BEGIN_MESSAGE_MAP(CVTWindow, CFrameWnd)
100     //{{AFX_MSG_MAP(CVTWindow)
101     ON_WM_ACTIVATE()
102     ON_WM_CHAR()
103     ON_WM_CLOSE()
104     ON_WM_DESTROY()
105     ON_WM_DROPFILES()
106     ON_WM_GETMINMAXINFO()
107     ON_WM_HSCROLL()
108     ON_WM_INITMENUPOPUP()
109     ON_WM_KEYDOWN()
110     ON_WM_KEYUP()
111     ON_WM_KILLFOCUS()
112     ON_WM_LBUTTONDBLCLK()
113     ON_WM_LBUTTONDOWN()
114     ON_WM_LBUTTONUP()
115     ON_WM_MBUTTONDOWN()
116     ON_WM_MBUTTONUP()
117     ON_WM_MOUSEACTIVATE()
118     ON_WM_MOUSEMOVE()
119     ON_WM_MOUSEWHEEL()
120     ON_WM_MOVE()
121     ON_WM_NCLBUTTONDBLCLK()
122     ON_WM_NCRBUTTONDOWN()
123     ON_WM_PAINT()
124     ON_WM_RBUTTONDOWN()
125     ON_WM_RBUTTONUP()
126     ON_WM_SETFOCUS()
127     ON_WM_SIZE()
128     ON_WM_SIZING()
129     ON_WM_SYSCHAR()
130     ON_WM_SYSCOLORCHANGE()
131     ON_WM_SYSCOMMAND()
132     ON_WM_SYSKEYDOWN()
133     ON_WM_SYSKEYUP()
134     ON_WM_TIMER()
135     ON_WM_VSCROLL()
136 salarm 6076 ON_WM_DEVICECHANGE()
137 maya 3227 ON_MESSAGE(WM_IME_COMPOSITION,OnIMEComposition)
138 yutakapon 3898 ON_MESSAGE(WM_INPUTLANGCHANGE,OnIMEInputChange)
139     ON_MESSAGE(WM_IME_NOTIFY,OnIMENotify)
140 yutakapon 4932 ON_MESSAGE(WM_IME_REQUEST,OnIMERequest)
141 maya 3227 //<!--by AKASI
142     ON_MESSAGE(WM_WINDOWPOSCHANGING,OnWindowPosChanging)
143     ON_MESSAGE(WM_SETTINGCHANGE,OnSettingChange)
144     ON_MESSAGE(WM_ENTERSIZEMOVE,OnEnterSizeMove)
145     ON_MESSAGE(WM_EXITSIZEMOVE ,OnExitSizeMove)
146     //-->
147     ON_MESSAGE(WM_USER_ACCELCOMMAND, OnAccelCommand)
148     ON_MESSAGE(WM_USER_CHANGEMENU,OnChangeMenu)
149     ON_MESSAGE(WM_USER_CHANGETBAR,OnChangeTBar)
150     ON_MESSAGE(WM_USER_COMMNOTIFY,OnCommNotify)
151     ON_MESSAGE(WM_USER_COMMOPEN,OnCommOpen)
152     ON_MESSAGE(WM_USER_COMMSTART,OnCommStart)
153     ON_MESSAGE(WM_USER_DDEEND,OnDdeEnd)
154     ON_MESSAGE(WM_USER_DLGHELP2,OnDlgHelp)
155     ON_MESSAGE(WM_USER_FTCANCEL,OnFileTransEnd)
156     ON_MESSAGE(WM_USER_GETSERIALNO,OnGetSerialNo)
157     ON_MESSAGE(WM_USER_KEYCODE,OnKeyCode)
158     ON_MESSAGE(WM_USER_PROTOCANCEL,OnProtoEnd)
159     ON_MESSAGE(WM_USER_CHANGETITLE,OnChangeTitle)
160     ON_MESSAGE(WM_COPYDATA,OnReceiveIpcMessage)
161 yutakapon 5232 ON_MESSAGE(WM_USER_NONCONFIRM_CLOSE, OnNonConfirmClose)
162 maya 3227 ON_COMMAND(ID_FILE_NEWCONNECTION, OnFileNewConnection)
163     ON_COMMAND(ID_FILE_DUPLICATESESSION, OnDuplicateSession)
164     ON_COMMAND(ID_FILE_CYGWINCONNECTION, OnCygwinConnection)
165     ON_COMMAND(ID_FILE_TERATERMMENU, OnTTMenuLaunch)
166     ON_COMMAND(ID_FILE_LOGMEIN, OnLogMeInLaunch)
167     ON_COMMAND(ID_FILE_LOG, OnFileLog)
168     ON_COMMAND(ID_FILE_COMMENTTOLOG, OnCommentToLog)
169     ON_COMMAND(ID_FILE_VIEWLOG, OnViewLog)
170     ON_COMMAND(ID_FILE_SHOWLOGDIALOG, OnShowLogDialog)
171     ON_COMMAND(ID_FILE_REPLAYLOG, OnReplayLog)
172     ON_COMMAND(ID_FILE_SENDFILE, OnFileSend)
173     ON_COMMAND(ID_FILE_KERMITRCV, OnFileKermitRcv)
174     ON_COMMAND(ID_FILE_KERMITGET, OnFileKermitGet)
175     ON_COMMAND(ID_FILE_KERMITSEND, OnFileKermitSend)
176     ON_COMMAND(ID_FILE_KERMITFINISH, OnFileKermitFinish)
177     ON_COMMAND(ID_FILE_XRCV, OnFileXRcv)
178     ON_COMMAND(ID_FILE_XSEND, OnFileXSend)
179     ON_COMMAND(ID_FILE_YRCV, OnFileYRcv)
180     ON_COMMAND(ID_FILE_YSEND, OnFileYSend)
181     ON_COMMAND(ID_FILE_ZRCV, OnFileZRcv)
182     ON_COMMAND(ID_FILE_ZSEND, OnFileZSend)
183     ON_COMMAND(ID_FILE_BPRCV, OnFileBPRcv)
184     ON_COMMAND(ID_FILE_BPSEND, OnFileBPSend)
185     ON_COMMAND(ID_FILE_QVRCV, OnFileQVRcv)
186     ON_COMMAND(ID_FILE_QVSEND, OnFileQVSend)
187     ON_COMMAND(ID_FILE_CHANGEDIR, OnFileChangeDir)
188     ON_COMMAND(ID_FILE_PRINT2, OnFilePrint)
189     ON_COMMAND(ID_FILE_DISCONNECT, OnFileDisconnect)
190     ON_COMMAND(ID_FILE_EXIT, OnFileExit)
191 yutakapon 5233 ON_COMMAND(ID_FILE_EXITALL, OnAllClose)
192 maya 3227 ON_COMMAND(ID_EDIT_COPY2, OnEditCopy)
193     ON_COMMAND(ID_EDIT_COPYTABLE, OnEditCopyTable)
194     ON_COMMAND(ID_EDIT_PASTE2, OnEditPaste)
195     ON_COMMAND(ID_EDIT_PASTECR, OnEditPasteCR)
196     ON_COMMAND(ID_EDIT_CLEARSCREEN, OnEditClearScreen)
197     ON_COMMAND(ID_EDIT_CLEARBUFFER, OnEditClearBuffer)
198     ON_COMMAND(ID_EDIT_CANCELSELECT, OnEditCancelSelection)
199     ON_COMMAND(ID_EDIT_SELECTALL, OnEditSelectAllBuffer)
200     ON_COMMAND(ID_EDIT_SELECTSCREEN, OnEditSelectScreenBuffer)
201     ON_COMMAND(ID_SETUP_ADDITIONALSETTINGS, OnExternalSetup)
202     ON_COMMAND(ID_SETUP_TERMINAL, OnSetupTerminal)
203     ON_COMMAND(ID_SETUP_WINDOW, OnSetupWindow)
204     ON_COMMAND(ID_SETUP_FONT, OnSetupFont)
205     ON_COMMAND(ID_SETUP_KEYBOARD, OnSetupKeyboard)
206     ON_COMMAND(ID_SETUP_SERIALPORT, OnSetupSerialPort)
207     ON_COMMAND(ID_SETUP_TCPIP, OnSetupTCPIP)
208     ON_COMMAND(ID_SETUP_GENERAL, OnSetupGeneral)
209     ON_COMMAND(ID_SETUP_SAVE, OnSetupSave)
210     ON_COMMAND(ID_SETUP_RESTORE, OnSetupRestore)
211 yutakapon 5809 ON_COMMAND(ID_OPEN_SETUP, OnOpenSetupDirectory)
212 maya 3227 ON_COMMAND(ID_SETUP_LOADKEYMAP, OnSetupLoadKeyMap)
213     ON_COMMAND(ID_CONTROL_RESETTERMINAL, OnControlResetTerminal)
214     ON_COMMAND(ID_CONTROL_RESETREMOTETITLE, OnControlResetRemoteTitle)
215     ON_COMMAND(ID_CONTROL_AREYOUTHERE, OnControlAreYouThere)
216     ON_COMMAND(ID_CONTROL_SENDBREAK, OnControlSendBreak)
217     ON_COMMAND(ID_CONTROL_RESETPORT, OnControlResetPort)
218     ON_COMMAND(ID_CONTROL_BROADCASTCOMMAND, OnControlBroadcastCommand)
219     ON_COMMAND(ID_CONTROL_OPENTEK, OnControlOpenTEK)
220     ON_COMMAND(ID_CONTROL_CLOSETEK, OnControlCloseTEK)
221     ON_COMMAND(ID_CONTROL_MACRO, OnControlMacro)
222 maya 3842 ON_COMMAND(ID_CONTROL_SHOW_MACRO, OnShowMacroWindow)
223 maya 3227 ON_COMMAND(ID_WINDOW_WINDOW, OnWindowWindow)
224 doda 4647 ON_COMMAND(ID_WINDOW_MINIMIZEALL, OnWindowMinimizeAll)
225 yutakapon 5224 ON_COMMAND(ID_WINDOW_CASCADEALL, OnWindowCascade)
226     ON_COMMAND(ID_WINDOW_STACKED, OnWindowStacked)
227     ON_COMMAND(ID_WINDOW_SIDEBYSIDE, OnWindowSidebySide)
228 doda 4647 ON_COMMAND(ID_WINDOW_RESTOREALL, OnWindowRestoreAll)
229 yutakapon 5299 ON_COMMAND(ID_WINDOW_UNDO, OnWindowUndo)
230 maya 3227 ON_COMMAND(ID_HELP_INDEX2, OnHelpIndex)
231     ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
232     //}}AFX_MSG_MAP
233     END_MESSAGE_MAP()
234    
235     /////////////////////////////////////////////////////////////////////////////
236     // CVTWindow constructor
237    
238    
239     static BOOL MySetLayeredWindowAttributes(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags)
240     {
241     typedef BOOL (WINAPI *func)(HWND,COLORREF,BYTE,DWORD);
242     static HMODULE g_hmodUser32 = NULL;
243     static func g_pSetLayeredWindowAttributes = NULL;
244 maya 4134 char user32_dll[MAX_PATH];
245 maya 3227
246 maya 4134 GetSystemDirectory(user32_dll, sizeof(user32_dll));
247     strncat_s(user32_dll, sizeof(user32_dll), "\\user32.dll", _TRUNCATE);
248 maya 3227 if (g_hmodUser32 == NULL) {
249 maya 4134 g_hmodUser32 = LoadLibrary(user32_dll);
250 maya 3392 if (g_hmodUser32 == NULL) {
251 maya 3227 return FALSE;
252 maya 3392 }
253 maya 3227
254     g_pSetLayeredWindowAttributes =
255     (func)GetProcAddress(g_hmodUser32, "SetLayeredWindowAttributes");
256     }
257    
258 maya 3392 if (g_pSetLayeredWindowAttributes == NULL) {
259 maya 3227 return FALSE;
260 maya 3392 }
261 maya 3227
262     return g_pSetLayeredWindowAttributes(hwnd, crKey,
263     bAlpha, dwFlags);
264     }
265    
266    
267     // Tera Term�N������URL������mouse over������������ (2005.4.2 yutaka)
268 doda 5279 void SetMouseCursor(char *cursor)
269 maya 3227 {
270     HCURSOR hc;
271     LPCTSTR name = NULL;
272     int i;
273    
274     for (i = 0 ; MouseCursor[i].name ; i++) {
275     if (_stricmp(cursor, MouseCursor[i].name) == 0) {
276     name = MouseCursor[i].id;
277     break;
278     }
279     }
280 maya 3392 if (name == NULL) {
281 maya 3227 return;
282 maya 3392 }
283 maya 3227
284     hc = (HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(name), IMAGE_CURSOR,
285     0, 0, LR_DEFAULTSIZE | LR_SHARED);
286    
287     if (hc != NULL) {
288     SetClassLongPtr(HVTWin, GCLP_HCURSOR, (LONG_PTR)hc);
289     }
290     }
291    
292    
293     void SetWindowStyle(TTTSet *ts)
294     {
295     LONG_PTR lp;
296    
297     SetMouseCursor(ts->MouseCursorName);
298    
299     // 2006/03/16 by 337: BGUseAlphaBlendAPI��On������Layered����������
300     //if (ts->EtermLookfeel.BGUseAlphaBlendAPI) {
301     // �A���t�@�l��255�������A�����������������}�����������������������������B(2006.4.1 yutaka)
302     // �����o�������A�l�����X�����������������������f�����B(2007.10.19 maya)
303     if (ts->AlphaBlend < 255) {
304     lp = GetWindowLongPtr(HVTWin, GWL_EXSTYLE);
305     if (lp != 0) {
306     SetWindowLongPtr(HVTWin, GWL_EXSTYLE, lp | WS_EX_LAYERED);
307     MySetLayeredWindowAttributes(HVTWin, 0, ts->AlphaBlend, LWA_ALPHA);
308     }
309     }
310     // �A���t�@�l�� 255 �������A�����������������������`�������B(2007.10.22 maya)
311     else {
312     lp = GetWindowLongPtr(HVTWin, GWL_EXSTYLE);
313     if (lp != 0) {
314     SetWindowLongPtr(HVTWin, GWL_EXSTYLE, lp & ~WS_EX_LAYERED);
315     RedrawWindow(HVTWin, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME);
316     }
317     }
318     }
319    
320 salarm 6100 void RegDeviceNotify(HWND hWnd)
321     {
322     typedef HDEVNOTIFY (WINAPI *PRegisterDeviceNotification)(HANDLE hRecipient, LPVOID NotificationFilter, DWORD Flags);
323     HMODULE h;
324     PRegisterDeviceNotification pRegisterDeviceNotification;
325     DEV_BROADCAST_DEVICEINTERFACE filter;
326 maya 3227
327 salarm 6100 if (((h = GetModuleHandle("user32.dll")) == NULL) ||
328     ((pRegisterDeviceNotification = (PRegisterDeviceNotification)GetProcAddress(h, "RegisterDeviceNotificationA")) == NULL)) {
329     return;
330     }
331    
332     ZeroMemory(&filter, sizeof(filter));
333     filter.dbcc_size = sizeof(filter);
334     filter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
335     filter.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;
336     hDevNotify = pRegisterDeviceNotification(hWnd, &filter, DEVICE_NOTIFY_WINDOW_HANDLE);
337     }
338    
339     void UnRegDeviceNotify(HWND hWnd)
340     {
341     typedef BOOL (WINAPI *PUnregisterDeviceNotification)(HDEVNOTIFY Handle);
342     HMODULE h;
343     PUnregisterDeviceNotification pUnregisterDeviceNotification;
344    
345     if (((h = GetModuleHandle("user32.dll")) == NULL) ||
346     ((pUnregisterDeviceNotification = (PUnregisterDeviceNotification)GetProcAddress(h, "UnregisterDeviceNotification")) == NULL)) {
347     return;
348     }
349    
350     pUnregisterDeviceNotification(hDevNotify);
351     }
352    
353 maya 3227 //
354     // ���O�n���h�����t�b�N�i�X�^�b�N�g���[�X���_���v�j
355     //
356     // cf. http://svn.collab.net/repos/svn/trunk/subversion/libsvn_subr/win32_crashrpt.c
357     // (2007.9.30 yutaka)
358     //
359     // ���O�R�[�h������������������
360     static char *GetExceptionString(int exception)
361     {
362     #define EXCEPTION(x) case EXCEPTION_##x: return (#x);
363     static char buf[16];
364    
365     switch (exception)
366     {
367     EXCEPTION(ACCESS_VIOLATION)
368     EXCEPTION(DATATYPE_MISALIGNMENT)
369     EXCEPTION(BREAKPOINT)
370     EXCEPTION(SINGLE_STEP)
371     EXCEPTION(ARRAY_BOUNDS_EXCEEDED)
372     EXCEPTION(FLT_DENORMAL_OPERAND)
373     EXCEPTION(FLT_DIVIDE_BY_ZERO)
374     EXCEPTION(FLT_INEXACT_RESULT)
375     EXCEPTION(FLT_INVALID_OPERATION)
376     EXCEPTION(FLT_OVERFLOW)
377     EXCEPTION(FLT_STACK_CHECK)
378     EXCEPTION(FLT_UNDERFLOW)
379     EXCEPTION(INT_DIVIDE_BY_ZERO)
380     EXCEPTION(INT_OVERFLOW)
381     EXCEPTION(PRIV_INSTRUCTION)
382     EXCEPTION(IN_PAGE_ERROR)
383     EXCEPTION(ILLEGAL_INSTRUCTION)
384     EXCEPTION(NONCONTINUABLE_EXCEPTION)
385     EXCEPTION(STACK_OVERFLOW)
386     EXCEPTION(INVALID_DISPOSITION)
387     EXCEPTION(GUARD_PAGE)
388     EXCEPTION(INVALID_HANDLE)
389    
390     default:
391     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "0x%x", exception);
392     return buf;
393     //return "UNKNOWN_ERROR";
394     }
395     #undef EXCEPTION
396     }
397    
398     /* ���O�������������������o���������\�������A���O�t�B���^���� */
399     static LONG CALLBACK ApplicationFaultHandler(EXCEPTION_POINTERS *ExInfo)
400     {
401     HGLOBAL gptr;
402     STACKFRAME sf;
403     BOOL bResult;
404     PIMAGEHLP_SYMBOL pSym;
405     DWORD Disp;
406     HANDLE hProcess = GetCurrentProcess();
407     HANDLE hThread = GetCurrentThread();
408     IMAGEHLP_MODULE ih_module;
409     IMAGEHLP_LINE ih_line;
410     int frame;
411     char msg[3072], buf[256];
412     HMODULE h, h2;
413 maya 4134 char imagehlp_dll[MAX_PATH];
414 maya 3227
415     // Windows98/Me/NT4�����������������X�L�b�v�����B(2007.10.9 yutaka)
416 maya 4134 GetSystemDirectory(imagehlp_dll, sizeof(imagehlp_dll));
417     strncat_s(imagehlp_dll, sizeof(imagehlp_dll), "\\imagehlp.dll", _TRUNCATE);
418     h2 = LoadLibrary(imagehlp_dll);
419     if (((h = GetModuleHandle(imagehlp_dll)) == NULL) ||
420 maya 3227 (GetProcAddress(h, "SymGetLineFromAddr") == NULL)) {
421     FreeLibrary(h2);
422     goto error;
423     }
424     FreeLibrary(h2);
425    
426     /* �V���{�������i�[�p�o�b�t�@�������� */
427     gptr = GlobalAlloc(GMEM_FIXED, 10000);
428 maya 3392 if (gptr == NULL) {
429 maya 3227 goto error;
430 maya 3392 }
431 maya 3227 pSym = (PIMAGEHLP_SYMBOL)GlobalLock(gptr);
432     ZeroMemory(pSym, sizeof(IMAGEHLP_SYMBOL));
433     pSym->SizeOfStruct = 10000;
434     pSym->MaxNameLength = 10000 - sizeof(IMAGEHLP_SYMBOL);
435    
436     /* �X�^�b�N�t���[���������� */
437     ZeroMemory(&sf, sizeof(sf));
438     sf.AddrPC.Offset = ExInfo->ContextRecord->Eip;
439     sf.AddrStack.Offset = ExInfo->ContextRecord->Esp;
440     sf.AddrFrame.Offset = ExInfo->ContextRecord->Ebp;
441     sf.AddrPC.Mode = AddrModeFlat;
442     sf.AddrStack.Mode = AddrModeFlat;
443     sf.AddrFrame.Mode = AddrModeFlat;
444    
445     /* �V���{���n���h���������� */
446     SymInitialize(hProcess, NULL, TRUE);
447    
448     // ���W�X�^�_���v
449     msg[0] = '\0';
450     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "eax=%08X ebx=%08X ecx=%08X edx=%08X esi=%08X edi=%08X\r\n"
451     "ebp=%08X esp=%08X eip=%08X efl=%08X\r\n"
452     "cs=%04X ss=%04X ds=%04X es=%04X fs=%04X gs=%04X\r\n",
453     ExInfo->ContextRecord->Eax,
454     ExInfo->ContextRecord->Ebx,
455     ExInfo->ContextRecord->Ecx,
456     ExInfo->ContextRecord->Edx,
457     ExInfo->ContextRecord->Esi,
458     ExInfo->ContextRecord->Edi,
459     ExInfo->ContextRecord->Ebp,
460     ExInfo->ContextRecord->Esp,
461     ExInfo->ContextRecord->Eip,
462     ExInfo->ContextRecord->EFlags,
463     ExInfo->ContextRecord->SegCs,
464     ExInfo->ContextRecord->SegSs,
465     ExInfo->ContextRecord->SegDs,
466     ExInfo->ContextRecord->SegEs,
467     ExInfo->ContextRecord->SegFs,
468     ExInfo->ContextRecord->SegGs
469     );
470     strncat_s(msg, sizeof(msg), buf, _TRUNCATE);
471    
472     if (ExInfo->ExceptionRecord != NULL) {
473     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "Exception: %s\r\n", GetExceptionString(ExInfo->ExceptionRecord->ExceptionCode));
474     strncat_s(msg, sizeof(msg), buf, _TRUNCATE);
475     }
476    
477     /* �X�^�b�N�t���[���������\���������� */
478     frame = 0;
479     for (;;) {
480     /* �����X�^�b�N�t���[�������� */
481     bResult = StackWalk(
482     IMAGE_FILE_MACHINE_I386,
483     hProcess,
484     hThread,
485     &sf,
486     NULL,
487     NULL,
488     SymFunctionTableAccess,
489     SymGetModuleBase,
490     NULL);
491    
492     /* ���s�������A���[�v�������� */
493     if (!bResult || sf.AddrFrame.Offset == 0)
494     break;
495    
496     frame++;
497    
498     /* �v���O�����J�E���^�i���z�A�h���X�j�������������I�t�Z�b�g������ */
499     bResult = SymGetSymFromAddr(hProcess, sf.AddrPC.Offset, &Disp, pSym);
500    
501     /* �����������\�� */
502     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "#%d 0x%08x in ", frame, sf.AddrPC.Offset);
503     strncat_s(msg, sizeof(msg), buf, _TRUNCATE);
504     if (bResult) {
505     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s() + 0x%x ", pSym->Name, Disp);
506     strncat_s(msg, sizeof(msg), buf, _TRUNCATE);
507     } else {
508     _snprintf_s(buf, sizeof(buf), _TRUNCATE, " --- ");
509     strncat_s(msg, sizeof(msg), buf, _TRUNCATE);
510     }
511    
512     // ���s�t�@�C����������
513     ZeroMemory( &(ih_module), sizeof(ih_module) );
514     ih_module.SizeOfStruct = sizeof(ih_module);
515     bResult = SymGetModuleInfo( hProcess, sf.AddrPC.Offset, &(ih_module) );
516     strncat_s(msg, sizeof(msg), "at ", _TRUNCATE);
517     if (bResult) {
518     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s ", ih_module.ImageName );
519     strncat_s(msg, sizeof(msg), buf, _TRUNCATE);
520     } else {
521     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s ", "<Unknown Module>" );
522     strncat_s(msg, sizeof(msg), buf, _TRUNCATE);
523     }
524    
525     // �t�@�C�������s����������
526     ZeroMemory( &(ih_line), sizeof(ih_line) );
527     ih_line.SizeOfStruct = sizeof(ih_line);
528     bResult = SymGetLineFromAddr( hProcess, sf.AddrPC.Offset, &Disp, &ih_line );
529     if (bResult)
530     {
531     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s:%lu", ih_line.FileName, ih_line.LineNumber );
532     strncat_s(msg, sizeof(msg), buf, _TRUNCATE);
533     }
534    
535 maya 3352 strncat_s(msg, sizeof(msg), "\n", _TRUNCATE);
536 maya 3227 }
537    
538     /* ������ */
539     SymCleanup(hProcess);
540     GlobalUnlock(pSym);
541     GlobalFree(pSym);
542    
543     MessageBox(NULL, msg, "Tera Term: Application fault", MB_OK | MB_ICONEXCLAMATION);
544    
545     error:
546     // return (EXCEPTION_EXECUTE_HANDLER); /* ���������v���Z�X���I�������� */
547     return (EXCEPTION_CONTINUE_SEARCH); /* ���������m�A�v���P�[�V�����G���[�n�|�b�v�A�b�v���b�Z�[�W�{�b�N�X�������o�� */
548     }
549    
550    
551     CVTWindow::CVTWindow()
552     {
553     WNDCLASS wc;
554     RECT rect;
555     DWORD Style;
556     #ifdef ALPHABLEND_TYPE2
557     DWORD ExStyle;
558     #endif
559     char *Param;
560     int CmdShow;
561 maya 5784 #ifdef SHARED_KEYMAP
562     char Temp[MAX_PATH];
563 maya 3227 PKeyMap tempkm;
564 maya 5784 #endif
565 maya 3227 int fuLoad = LR_DEFAULTCOLOR;
566    
567     #ifdef _DEBUG
568     ::_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
569     #endif
570    
571 maya 3392 // ���O�n���h�����t�b�N (2007.9.30 yutaka)
572 maya 3227 SetUnhandledExceptionFilter(ApplicationFaultHandler);
573    
574     TTXInit(&ts, &cv); /* TTPLUG */
575    
576     CommInit(&cv);
577    
578     MsgDlgHelp = RegisterWindowMessage(HELPMSGSTRING);
579    
580     if (StartTeraTerm(&ts)) {
581     /* first instance */
582     if (LoadTTSET()) {
583     /* read setup info from "teraterm.ini" */
584     (*ReadIniFile)(ts.SetupFName, &ts);
585 maya 5784 #ifdef SHARED_KEYMAP
586 maya 3227 /* read keycode map from "keyboard.cnf" */
587     tempkm = (PKeyMap)malloc(sizeof(TKeyMap));
588     if (tempkm!=NULL) {
589     strncpy_s(Temp, sizeof(Temp), ts.HomeDir, _TRUNCATE);
590     AppendSlash(Temp,sizeof(Temp));
591     strncat_s(Temp,sizeof(Temp),"KEYBOARD.CNF",_TRUNCATE);
592     (*ReadKeyboardCnf)(Temp,tempkm,TRUE);
593     }
594 maya 5784 #endif
595 maya 3227 FreeTTSET();
596 maya 5784 #ifdef SHARED_KEYMAP
597 maya 3227 /* store default sets in TTCMN */
598     #if 0
599     ChangeDefaultSet(&ts,tempkm);
600     #else
601     ChangeDefaultSet(NULL,tempkm);
602     #endif
603     if (tempkm!=NULL) free(tempkm);
604 maya 5784 #endif
605 maya 3227 }
606    
607     } else {
608     // 2�������~���v���Z�X�����������A�f�B�X�N���� TERATERM.INI �������B(2004.11.4 yutaka)
609     if (LoadTTSET()) {
610     /* read setup info from "teraterm.ini" */
611     (*ReadIniFile)(ts.SetupFName, &ts);
612 maya 5784 #ifdef SHARED_KEYMAP
613 maya 3227 /* read keycode map from "keyboard.cnf" */
614     tempkm = (PKeyMap)malloc(sizeof(TKeyMap));
615     if (tempkm!=NULL) {
616 doda 5345 strncpy_s(Temp, sizeof(Temp), ts.HomeDir, _TRUNCATE);
617 maya 3227 AppendSlash(Temp,sizeof(Temp));
618     strncat_s(Temp,sizeof(Temp),"KEYBOARD.CNF",_TRUNCATE);
619     (*ReadKeyboardCnf)(Temp,tempkm,TRUE);
620     }
621 maya 5784 #endif
622 maya 3227 FreeTTSET();
623 maya 5784 #ifdef SHARED_KEYMAP
624 maya 3227 /* store default sets in TTCMN */
625 maya 3392 if (tempkm!=NULL) {
626     free(tempkm);
627     }
628 maya 5784 #endif
629 maya 3227 }
630    
631     }
632    
633     /* Parse command line parameters*/
634     // 256�o�C�g�������R�}���h���C���p�����[�^�w�����������ABOF(Buffer Over Flow)��
635     // �������o�O���C���B(2007.6.12 maya)
636     Param = GetCommandLine();
637 maya 3392 if (LoadTTSET()) {
638 maya 3227 (*ParseParam)(Param, &ts, &(TopicName[0]));
639 maya 3392 }
640 maya 3227 FreeTTSET();
641    
642     // duplicate session���w�������������A���L�����������R�s�[���� (2004.12.7 yutaka)
643     if (ts.DuplicateSession == 1) {
644     CopyShmemToTTSet(&ts);
645     }
646    
647     InitKeyboard();
648     SetKeyMap();
649    
650     // �R�}���h���C�����������t�@�C���������X���������������������� (2008.1.25 maya)
651     cv.isSSH = 0;
652     cv.TitleRemote[0] = '\0';
653    
654     /* window status */
655     AdjustSize = TRUE;
656     Minimized = FALSE;
657     LButton = FALSE;
658     MButton = FALSE;
659     RButton = FALSE;
660     DblClk = FALSE;
661     AfterDblClk = FALSE;
662     TplClk = FALSE;
663     Hold = FALSE;
664     FirstPaint = TRUE;
665     ScrollLock = FALSE; // �����l������ (2006.11.14 yutaka)
666    
667     /* Initialize scroll buffer */
668     InitBuffer();
669    
670     InitDisp();
671    
672     if (ts.HideTitle>0) {
673     Style = WS_VSCROLL | WS_HSCROLL |
674     WS_BORDER | WS_THICKFRAME | WS_POPUP;
675    
676     #ifdef ALPHABLEND_TYPE2
677     if(BGNoFrame)
678     Style &= ~(WS_BORDER | WS_THICKFRAME);
679     #endif
680     }
681     else
682     #ifdef WINDOW_MAXMIMUM_ENABLED
683     Style = WS_VSCROLL | WS_HSCROLL |
684     WS_BORDER | WS_THICKFRAME |
685     WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
686     #else
687     Style = WS_VSCROLL | WS_HSCROLL |
688     WS_BORDER | WS_THICKFRAME |
689     WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
690     #endif
691    
692     wc.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
693     wc.lpfnWndProc = AfxWndProc;
694     wc.cbClsExtra = 0;
695     wc.cbWndExtra = 0;
696     wc.hInstance = AfxGetInstanceHandle();
697     wc.hIcon = NULL;
698     //wc.hCursor = LoadCursor(NULL,IDC_IBEAM);
699     wc.hCursor = NULL; // �}�E�X�J�[�\�������I�����X���� (2005.4.2 yutaka)
700     wc.hbrBackground = NULL;
701     wc.lpszMenuName = NULL;
702     wc.lpszClassName = VTClassName;
703    
704     RegisterClass(&wc);
705     LoadAccelTable(MAKEINTRESOURCE(IDR_ACC));
706    
707 maya 3392 if (ts.VTPos.x==CW_USEDEFAULT) {
708 maya 3227 rect = rectDefault;
709 maya 3392 }
710 maya 3227 else {
711     rect.left = ts.VTPos.x;
712     rect.top = ts.VTPos.y;
713     rect.right = rect.left + 100;
714     rect.bottom = rect.top + 100;
715     }
716     Create(VTClassName, "Tera Term", Style, rect, NULL, NULL);
717    
718     /*--------- Init2 -----------------*/
719     HVTWin = GetSafeHwnd();
720     if (HVTWin == NULL) return;
721     // register this window to the window list
722     SerialNo = RegWin(HVTWin,NULL);
723    
724     logfile_lock_initialize();
725     SetWindowStyle(&ts);
726     // ���P�[��������
727     // wctomb ������
728     setlocale(LC_ALL, ts.Locale);
729    
730     #ifdef ALPHABLEND_TYPE2
731     //<!--by AKASI
732     if(BGNoFrame && ts.HideTitle > 0) {
733     ExStyle = GetWindowLong(HVTWin,GWL_EXSTYLE);
734     ExStyle &= ~WS_EX_CLIENTEDGE;
735     SetWindowLong(HVTWin,GWL_EXSTYLE,ExStyle);
736     }
737     //-->
738     #endif
739    
740 salarm 6100 // USB�f�o�C�X�������m�o�^
741     RegDeviceNotify(HVTWin);
742    
743 maya 3227 if (is_NT4()) {
744     fuLoad = LR_VGACOLOR;
745     }
746     ::PostMessage(HVTWin,WM_SETICON,ICON_SMALL,
747     (LPARAM)LoadImage(AfxGetInstanceHandle(),
748     MAKEINTRESOURCE((ts.VTIcon!=IdIconDefault)?ts.VTIcon:IDI_VT),
749     IMAGE_ICON,16,16,fuLoad));
750     // Vista �� Aero �������� Alt+Tab �����������\���������A�C�R����
751     // 16x16 �A�C�R�����g���������������������A�������A�C�R����
752     // �Z�b�g���� (2008.9.3 maya)
753     ::PostMessage(HVTWin,WM_SETICON,ICON_BIG,
754     (LPARAM)LoadImage(AfxGetInstanceHandle(),
755     MAKEINTRESOURCE((ts.VTIcon!=IdIconDefault)?ts.VTIcon:IDI_VT),
756     IMAGE_ICON, 0, 0, fuLoad));
757    
758     MainMenu = NULL;
759     WinMenu = NULL;
760     if ((ts.HideTitle==0) && (ts.PopupMenu==0)) {
761     InitMenu(&MainMenu);
762     ::SetMenu(HVTWin,MainMenu);
763     }
764    
765     /* Reset Terminal */
766     ResetTerminal();
767    
768 maya 3392 if ((ts.PopupMenu>0) || (ts.HideTitle>0)) {
769 maya 3227 ::PostMessage(HVTWin,WM_USER_CHANGEMENU,0,0);
770 maya 3392 }
771 maya 3227
772     ChangeFont();
773    
774     ResetIME();
775    
776     BuffChangeWinSize(NumOfColumns,NumOfLines);
777    
778     ChangeTitle();
779     /* Enable drag-drop */
780     ::DragAcceptFiles(HVTWin,TRUE);
781    
782     if (ts.HideWindow>0) {
783     if (strlen(TopicName)>0) {
784     InitDDE();
785     SendDDEReady();
786     }
787     FirstPaint = FALSE;
788     Startup();
789     return;
790     }
791 maya 3392 CmdShow = SW_SHOWDEFAULT;
792     if (ts.Minimize>0) {
793 maya 3227 CmdShow = SW_SHOWMINIMIZED;
794 maya 3392 }
795 maya 3227 ShowWindow(CmdShow);
796     ChangeCaret();
797     }
798    
799     /////////////////////////////////////////////////////////////////////////////
800    
801     #ifdef _DEBUG
802     void CVTWindow::AssertValid() const
803     {
804     CFrameWnd::AssertValid();
805     }
806    
807     void CVTWindow::Dump(CDumpContext& dc) const
808     {
809     CFrameWnd::Dump(dc);
810     }
811    
812     #endif //_DEBUG
813    
814     /////////////////////////////////////////////////////////////////////////////
815    
816     int CVTWindow::Parse()
817     {
818     // added ScrollLock (2006.11.14 yutaka)
819     if (LButton || MButton || RButton || ScrollLock)
820     return 0;
821     return (VTParse()); // Parse received characters
822     }
823    
824     void CVTWindow::ButtonUp(BOOL Paste)
825     {
826     BOOL disableBuffEndSelect = false;
827     BOOL pasteRButton = RButton && Paste;
828     BOOL pasteMButton = MButton && Paste;
829    
830     /* disable autoscrolling */
831     ::KillTimer(HVTWin,IdScrollTimer);
832     ReleaseCapture();
833    
834     if (ts.SelectOnlyByLButton &&
835     (MButton || RButton)) {
836     disableBuffEndSelect = true;
837     }
838    
839     LButton = FALSE;
840     MButton = FALSE;
841     RButton = FALSE;
842     DblClk = FALSE;
843     TplClk = FALSE;
844     CaretOn();
845    
846     // SelectOnlyByLButton �� on �� ���E�E�N���b�N����������
847     // �o�b�t�@���I���������������A�I�����e���N���b�v�{�[�h��
848     // �R�s�[�������������������C�� (2007.12.6 maya)
849     if (!disableBuffEndSelect) {
850     BuffEndSelect();
851     }
852    
853     // added ConfirmPasteMouseRButton (2007.3.17 maya)
854     if (pasteRButton && !ts.ConfirmPasteMouseRButton) {
855 doda 4260 if (CBStartPasteConfirmChange(HVTWin, FALSE)) {
856 doda 3904 CBStartPaste(HVTWin, FALSE, BracketedPasteMode(), 0, NULL, 0);
857 maya 3227 /* �����s�����������X�N���[����������������
858     �y�[�X�g�������X�N���[�������� */
859 doda 4469 if (ts.AutoScrollOnlyInBottomLine != 0 && WinOrgY != 0) {
860 maya 3227 DispVScroll(SCROLL_BOTTOM, 0);
861     }
862     }
863     }
864     else if (pasteMButton) {
865 doda 4260 if (CBStartPasteConfirmChange(HVTWin, FALSE)) {
866 doda 3904 CBStartPaste(HVTWin, FALSE, BracketedPasteMode(), 0, NULL, 0);
867 maya 3227 /* �����s�����������X�N���[����������������
868     �y�[�X�g�������X�N���[�������� */
869 doda 4469 if (ts.AutoScrollOnlyInBottomLine != 0 && WinOrgY != 0) {
870 maya 3227 DispVScroll(SCROLL_BOTTOM, 0);
871     }
872     }
873     }
874     }
875    
876     void CVTWindow::ButtonDown(POINT p, int LMR)
877     {
878     HMENU PopupMenu, PopupBase;
879     BOOL mousereport;
880    
881     if ((LMR==IdLeftButton) && ControlKey() && (MainMenu==NULL) &&
882     ((ts.MenuFlag & MF_NOPOPUP)==0)) {
883     int i, numItems;
884     char itemText[256];
885    
886     InitMenu(&PopupMenu);
887    
888     PopupBase = CreatePopupMenu();
889     numItems = GetMenuItemCount(PopupMenu);
890    
891     for (i = 0; i < numItems; i++) {
892     HMENU submenu = GetSubMenu(PopupMenu, i);
893    
894     if (submenu != NULL) {
895     InitMenuPopup(submenu);
896     }
897    
898     if (GetMenuString(PopupMenu, i, itemText, sizeof(itemText), MF_BYPOSITION) != 0) {
899     int state = GetMenuState(PopupMenu, i, MF_BYPOSITION) &
900     (MF_CHECKED | MF_DISABLED | MF_GRAYED | MF_HILITE |
901     MF_MENUBARBREAK | MF_MENUBREAK | MF_SEPARATOR);
902    
903     AppendMenu(PopupBase,
904     submenu != NULL ? LOBYTE(state) | MF_POPUP : state,
905     submenu != NULL ? (UINT)submenu : GetMenuItemID(PopupMenu, i),
906     itemText);
907     }
908     }
909    
910     ::ClientToScreen(HVTWin, &p);
911     TrackPopupMenu(PopupBase,TPM_LEFTALIGN | TPM_LEFTBUTTON,
912     p.x,p.y,0,HVTWin,NULL);
913     if (WinMenu!=NULL) {
914     DestroyMenu(WinMenu);
915     WinMenu = NULL;
916     }
917     DestroyMenu(PopupBase);
918     DestroyMenu(PopupMenu);
919     PopupMenu = 0;
920     return;
921     }
922    
923 doda 3987 if (mousereport = MouseReport(IdMouseEventBtnDown, LMR, p.x, p.y)) {
924     return;
925     }
926 maya 3227
927     // added ConfirmPasteMouseRButton (2007.3.17 maya)
928     if ((LMR == IdRightButton) &&
929     !ts.DisablePasteMouseRButton &&
930     ts.ConfirmPasteMouseRButton &&
931     cv.Ready &&
932     !mousereport &&
933     (SendVar==NULL) && (FileVar==NULL) &&
934     (cv.PortType!=IdFile) &&
935     (IsClipboardFormatAvailable(CF_TEXT) ||
936     IsClipboardFormatAvailable(CF_OEMTEXT))) {
937    
938     int i, numItems;
939     char itemText[256];
940    
941     InitPasteMenu(&PopupMenu);
942     PopupBase = CreatePopupMenu();
943     numItems = GetMenuItemCount(PopupMenu);
944    
945     for (i = 0; i < numItems; i++) {
946     if (GetMenuString(PopupMenu, i, itemText, sizeof(itemText), MF_BYPOSITION) != 0) {
947     int state = GetMenuState(PopupMenu, i, MF_BYPOSITION) &
948     (MF_CHECKED | MF_DISABLED | MF_GRAYED | MF_HILITE |
949     MF_MENUBARBREAK | MF_MENUBREAK | MF_SEPARATOR);
950    
951     AppendMenu(PopupBase, state,
952     GetMenuItemID(PopupMenu, i), itemText);
953     }
954     }
955    
956     ::ClientToScreen(HVTWin, &p);
957     TrackPopupMenu(PopupBase,TPM_LEFTALIGN | TPM_LEFTBUTTON,
958     p.x,p.y,0,HVTWin,NULL);
959     if (WinMenu!=NULL) {
960     DestroyMenu(WinMenu);
961     WinMenu = NULL;
962     }
963     DestroyMenu(PopupBase);
964     DestroyMenu(PopupMenu);
965     PopupMenu = 0;
966     return;
967     }
968    
969     if (AfterDblClk && (LMR==IdLeftButton) &&
970     (abs(p.x-DblClkX)<=GetSystemMetrics(SM_CXDOUBLECLK)) &&
971     (abs(p.y-DblClkY)<=GetSystemMetrics(SM_CYDOUBLECLK))) {
972     /* triple click */
973     ::KillTimer(HVTWin, IdDblClkTimer);
974     AfterDblClk = FALSE;
975     BuffTplClk(p.y);
976     LButton = TRUE;
977     TplClk = TRUE;
978     /* for AutoScrolling */
979     ::SetCapture(HVTWin);
980     ::SetTimer(HVTWin, IdScrollTimer, 100, NULL);
981     }
982     else {
983     if (! (LButton || MButton || RButton)) {
984     BOOL box = FALSE;
985    
986     // select several pages of output from Tera Term window (2005.5.15 yutaka)
987     if (LMR == IdLeftButton && ShiftKey()) {
988     BuffSeveralPagesSelect(p.x, p.y);
989    
990     } else {
991     // Select rectangular block with Alt Key. Delete Shift key.(2005.5.15 yutaka)
992     if (LMR == IdLeftButton && AltKey()) {
993     box = TRUE;
994     }
995    
996     // Starting the selection only by a left button.(2007.11.20 maya)
997     if (!ts.SelectOnlyByLButton ||
998     (ts.SelectOnlyByLButton && LMR == IdLeftButton) ) {
999     BuffStartSelect(p.x,p.y, box);
1000     TplClk = FALSE;
1001    
1002     /* for AutoScrolling */
1003     ::SetCapture(HVTWin);
1004     ::SetTimer(HVTWin, IdScrollTimer, 100, NULL);
1005     }
1006     }
1007     }
1008    
1009     switch (LMR) {
1010     case IdRightButton:
1011     RButton = TRUE;
1012     break;
1013     case IdMiddleButton:
1014     MButton = TRUE;
1015     break;
1016     case IdLeftButton:
1017     LButton = TRUE;
1018     break;
1019     }
1020     }
1021     }
1022    
1023     // LogMeIn.exe -> LogMeTT.exe �����l�[�� (2005.2.21 yutaka)
1024     static char LogMeTTMenuString[] = "Log&MeTT";
1025 yutakapon 3648 static char LogMeTT[MAX_PATH];
1026    
1027 maya 3227 static BOOL isLogMeTTExist()
1028     {
1029 yutakapon 3648 const char *LogMeTTexename = "LogMeTT.exe";
1030     LONG result;
1031     HKEY key;
1032     int inregist = 0;
1033     DWORD dwSize;
1034     DWORD dwType;
1035     DWORD dwDisposition;
1036     char *path;
1037 maya 3227
1038 yutakapon 3648 /* LogMeTT 2.9.6���������W�X�g�����C���X�g�[���p�X�����������B*/
1039     result = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\LogMeTT", 0, NULL,
1040     REG_OPTION_NON_VOLATILE, KEY_READ, NULL, &key, &dwDisposition);
1041     if (result == ERROR_SUCCESS) {
1042     result = RegQueryValueEx(key, "InstallPath", NULL, &dwType, NULL, &dwSize);
1043     if (result == ERROR_SUCCESS) {
1044     path = (char *)malloc(dwSize);
1045     if (path != NULL) {
1046     result = RegQueryValueEx(key, "InstallPath", NULL, &dwType, (LPBYTE)path, &dwSize);
1047     if (result == ERROR_SUCCESS) {
1048     inregist = 1;
1049     strncpy_s(LogMeTT, sizeof(LogMeTT), path, _TRUNCATE);
1050     }
1051     free(path);
1052     }
1053     }
1054 yutakapon 3649 RegCloseKey(key);
1055 yutakapon 3648 }
1056    
1057     if (inregist == 0) {
1058     strncpy_s(LogMeTT, sizeof(LogMeTT), ts.HomeDir, _TRUNCATE);
1059     AppendSlash(LogMeTT, sizeof(LogMeTT));
1060     strncat_s(LogMeTT, sizeof(LogMeTT), LogMeTTexename, _TRUNCATE);
1061     }
1062    
1063 maya 3227 if (_access(LogMeTT, 0) == -1) {
1064     return FALSE;
1065     }
1066     return TRUE;
1067     }
1068    
1069     void CVTWindow::InitMenu(HMENU *Menu)
1070     {
1071     *Menu = LoadMenu(AfxGetInstanceHandle(),
1072     MAKEINTRESOURCE(IDR_MENU));
1073     char uimsg[MAX_UIMSG];
1074     int ret;
1075    
1076     FileMenu = GetSubMenu(*Menu,ID_FILE);
1077     TransMenu = GetSubMenu(FileMenu,ID_TRANSFER);
1078     EditMenu = GetSubMenu(*Menu,ID_EDIT);
1079     SetupMenu = GetSubMenu(*Menu,ID_SETUP);
1080     ControlMenu = GetSubMenu(*Menu,ID_CONTROL);
1081     HelpMenu = GetSubMenu(*Menu,ID_HELPMENU);
1082    
1083     /* LogMeTT ���������m�F�������j���[���������� */
1084     if (isLogMeTTExist()) {
1085     ::InsertMenu(FileMenu, ID_FILE_PRINT2, MF_STRING | MF_ENABLED | MF_BYCOMMAND,
1086     ID_FILE_LOGMEIN, LogMeTTMenuString);
1087     ::InsertMenu(FileMenu, ID_FILE_PRINT2, MF_SEPARATOR, NULL, NULL);
1088     }
1089    
1090     GetMenuString(*Menu, ID_FILE, uimsg, sizeof(uimsg), MF_BYPOSITION);
1091     get_lang_msg("MENU_FILE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1092     ModifyMenu(*Menu, ID_FILE, MF_BYPOSITION, ID_FILE, ts.UIMsg);
1093     GetMenuString(FileMenu, ID_FILE_NEWCONNECTION, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1094     get_lang_msg("MENU_FILE_NEW", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1095     ModifyMenu(FileMenu, ID_FILE_NEWCONNECTION, MF_BYCOMMAND, ID_FILE_NEWCONNECTION, ts.UIMsg);
1096     GetMenuString(FileMenu, ID_FILE_DUPLICATESESSION, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1097     get_lang_msg("MENU_FILE_DUPLICATE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1098     ModifyMenu(FileMenu, ID_FILE_DUPLICATESESSION, MF_BYCOMMAND, ID_FILE_DUPLICATESESSION, ts.UIMsg);
1099     GetMenuString(FileMenu, ID_FILE_CYGWINCONNECTION, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1100     get_lang_msg("MENU_FILE_GYGWIN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1101     ModifyMenu(FileMenu, ID_FILE_CYGWINCONNECTION, MF_BYCOMMAND, ID_FILE_CYGWINCONNECTION, ts.UIMsg);
1102     GetMenuString(FileMenu, ID_FILE_LOG, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1103     get_lang_msg("MENU_FILE_LOG", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1104     ModifyMenu(FileMenu, ID_FILE_LOG, MF_BYCOMMAND, ID_FILE_LOG, ts.UIMsg);
1105     GetMenuString(FileMenu, ID_FILE_COMMENTTOLOG, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1106     get_lang_msg("MENU_FILE_COMMENTLOG", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1107     ModifyMenu(FileMenu, ID_FILE_COMMENTTOLOG, MF_BYCOMMAND, ID_FILE_COMMENTTOLOG, ts.UIMsg);
1108     GetMenuString(FileMenu, ID_FILE_VIEWLOG, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1109     get_lang_msg("MENU_FILE_VIEWLOG", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1110     ModifyMenu(FileMenu, ID_FILE_VIEWLOG, MF_BYCOMMAND, ID_FILE_VIEWLOG, ts.UIMsg);
1111     GetMenuString(FileMenu, ID_FILE_SHOWLOGDIALOG, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1112     get_lang_msg("MENU_FILE_SHOWLOGDIALOG", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1113     ModifyMenu(FileMenu, ID_FILE_SHOWLOGDIALOG, MF_BYCOMMAND, ID_FILE_SHOWLOGDIALOG, ts.UIMsg);
1114     GetMenuString(FileMenu, ID_FILE_SENDFILE, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1115     get_lang_msg("MENU_FILE_SENDFILE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1116     ModifyMenu(FileMenu, ID_FILE_SENDFILE, MF_BYCOMMAND, ID_FILE_SENDFILE, ts.UIMsg);
1117     GetMenuString(FileMenu, ID_FILE_REPLAYLOG, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1118     get_lang_msg("MENU_FILE_REPLAYLOG", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1119     ModifyMenu(FileMenu, ID_FILE_REPLAYLOG, MF_BYCOMMAND, ID_FILE_REPLAYLOG, ts.UIMsg);
1120     GetMenuString(FileMenu, ID_FILE_CHANGEDIR, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1121     get_lang_msg("MENU_FILE_CHANGEDIR", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1122     ModifyMenu(FileMenu, ID_FILE_CHANGEDIR, MF_BYCOMMAND, ID_FILE_CHANGEDIR, ts.UIMsg);
1123     ret = GetMenuString(FileMenu, ID_FILE_LOGMEIN, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1124     if (ret != 0) {
1125     get_lang_msg("MENU_FILE_LOGMETT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1126     ModifyMenu(FileMenu, ID_FILE_LOGMEIN, MF_BYCOMMAND, ID_FILE_LOGMEIN, ts.UIMsg);
1127     }
1128     GetMenuString(FileMenu, ID_FILE_PRINT2, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1129     get_lang_msg("MENU_FILE_PRINT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1130     ModifyMenu(FileMenu, ID_FILE_PRINT2, MF_BYCOMMAND, ID_FILE_PRINT2, ts.UIMsg);
1131     GetMenuString(FileMenu, ID_FILE_DISCONNECT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1132     get_lang_msg("MENU_FILE_DISCONNECT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1133     ModifyMenu(FileMenu, ID_FILE_DISCONNECT, MF_BYCOMMAND, ID_FILE_DISCONNECT, ts.UIMsg);
1134     GetMenuString(FileMenu, ID_FILE_EXIT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1135     get_lang_msg("MENU_FILE_EXIT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1136     ModifyMenu(FileMenu, ID_FILE_EXIT, MF_BYCOMMAND, ID_FILE_EXIT, ts.UIMsg);
1137 yutakapon 5235 GetMenuString(FileMenu, ID_FILE_EXITALL, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1138     get_lang_msg("MENU_FILE_EXITALL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1139     ModifyMenu(FileMenu, ID_FILE_EXITALL, MF_BYCOMMAND, ID_FILE_EXITALL, ts.UIMsg);
1140 maya 3227
1141     GetMenuString(FileMenu, 9, uimsg, sizeof(uimsg), MF_BYPOSITION);
1142     get_lang_msg("MENU_TRANS", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1143     ModifyMenu(FileMenu, 9, MF_BYPOSITION, 9, ts.UIMsg);
1144    
1145     GetMenuString(FileMenu, ID_FILE_KERMITRCV, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1146     get_lang_msg("MENU_TRANS_KERMIT_RCV", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1147     ModifyMenu(FileMenu, ID_FILE_KERMITRCV, MF_BYCOMMAND, ID_FILE_KERMITRCV, ts.UIMsg);
1148     GetMenuString(FileMenu, ID_FILE_KERMITGET, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1149     get_lang_msg("MENU_TRANS_KERMIT_GET", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1150     ModifyMenu(FileMenu, ID_FILE_KERMITGET, MF_BYCOMMAND, ID_FILE_KERMITGET, ts.UIMsg);
1151     GetMenuString(FileMenu, ID_FILE_KERMITSEND, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1152     get_lang_msg("MENU_TRANS_KERMIT_SEND", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1153     ModifyMenu(FileMenu, ID_FILE_KERMITSEND, MF_BYCOMMAND, ID_FILE_KERMITSEND, ts.UIMsg);
1154     GetMenuString(FileMenu, ID_FILE_KERMITFINISH, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1155     get_lang_msg("MENU_TRANS_KERMIT_FINISH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1156     ModifyMenu(FileMenu, ID_FILE_KERMITFINISH, MF_BYCOMMAND, ID_FILE_KERMITFINISH, ts.UIMsg);
1157    
1158     GetMenuString(FileMenu, ID_FILE_XRCV, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1159     get_lang_msg("MENU_TRANS_X_RCV", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1160     ModifyMenu(FileMenu, ID_FILE_XRCV, MF_BYCOMMAND, ID_FILE_XRCV, ts.UIMsg);
1161     GetMenuString(FileMenu, ID_FILE_XSEND, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1162     get_lang_msg("MENU_TRANS_X_SEND", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1163     ModifyMenu(FileMenu, ID_FILE_XSEND, MF_BYCOMMAND, ID_FILE_XSEND, ts.UIMsg);
1164    
1165 maya 3911 GetMenuString(FileMenu, ID_FILE_YRCV, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1166     get_lang_msg("MENU_TRANS_Y_RCV", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1167     ModifyMenu(FileMenu, ID_FILE_YRCV, MF_BYCOMMAND, ID_FILE_YRCV, ts.UIMsg);
1168     GetMenuString(FileMenu, ID_FILE_YSEND, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1169     get_lang_msg("MENU_TRANS_Y_SEND", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1170     ModifyMenu(FileMenu, ID_FILE_YSEND, MF_BYCOMMAND, ID_FILE_YSEND, ts.UIMsg);
1171 maya 3227
1172     GetMenuString(FileMenu, ID_FILE_ZRCV, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1173     get_lang_msg("MENU_TRANS_Z_RCV", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1174     ModifyMenu(FileMenu, ID_FILE_ZRCV, MF_BYCOMMAND, ID_FILE_ZRCV, ts.UIMsg);
1175     GetMenuString(FileMenu, ID_FILE_ZSEND, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1176     get_lang_msg("MENU_TRANS_Z_SEND", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1177     ModifyMenu(FileMenu, ID_FILE_ZSEND, MF_BYCOMMAND, ID_FILE_ZSEND, ts.UIMsg);
1178    
1179     GetMenuString(FileMenu, ID_FILE_BPRCV, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1180     get_lang_msg("MENU_TRANS_BP_RCV", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1181     ModifyMenu(FileMenu, ID_FILE_BPRCV, MF_BYCOMMAND, ID_FILE_BPRCV, ts.UIMsg);
1182     GetMenuString(FileMenu, ID_FILE_BPSEND, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1183     get_lang_msg("MENU_TRANS_BP_SEND", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1184     ModifyMenu(FileMenu, ID_FILE_BPSEND, MF_BYCOMMAND, ID_FILE_BPSEND, ts.UIMsg);
1185    
1186     GetMenuString(FileMenu, ID_FILE_QVRCV, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1187     get_lang_msg("MENU_TRANS_QV_RCV", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1188     ModifyMenu(FileMenu, ID_FILE_QVRCV, MF_BYCOMMAND, ID_FILE_QVRCV, ts.UIMsg);
1189     GetMenuString(FileMenu, ID_FILE_QVSEND, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1190     get_lang_msg("MENU_TRANS_QV_SEND", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1191     ModifyMenu(FileMenu, ID_FILE_QVSEND, MF_BYCOMMAND, ID_FILE_QVSEND, ts.UIMsg);
1192    
1193     GetMenuString(*Menu, ID_EDIT, uimsg, sizeof(uimsg), MF_BYPOSITION);
1194     get_lang_msg("MENU_EDIT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1195     ModifyMenu(*Menu, ID_EDIT, MF_BYPOSITION, ID_EDIT, ts.UIMsg);
1196     GetMenuString(EditMenu, ID_EDIT_COPY2, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1197     get_lang_msg("MENU_EDIT_COPY", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1198     ModifyMenu(EditMenu, ID_EDIT_COPY2, MF_BYCOMMAND, ID_EDIT_COPY2, ts.UIMsg);
1199     GetMenuString(EditMenu, ID_EDIT_COPYTABLE, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1200     get_lang_msg("MENU_EDIT_COPYTABLE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1201     ModifyMenu(EditMenu, ID_EDIT_COPYTABLE, MF_BYCOMMAND, ID_EDIT_COPYTABLE, ts.UIMsg);
1202     GetMenuString(EditMenu, ID_EDIT_PASTE2, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1203     get_lang_msg("MENU_EDIT_PASTE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1204     ModifyMenu(EditMenu, ID_EDIT_PASTE2, MF_BYCOMMAND, ID_EDIT_PASTE2, ts.UIMsg);
1205     GetMenuString(EditMenu, ID_EDIT_PASTECR, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1206     get_lang_msg("MENU_EDIT_PASTECR", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1207     ModifyMenu(EditMenu, ID_EDIT_PASTECR, MF_BYCOMMAND, ID_EDIT_PASTECR, ts.UIMsg);
1208     GetMenuString(EditMenu, ID_EDIT_CLEARSCREEN, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1209     get_lang_msg("MENU_EDIT_CLSCREEN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1210     ModifyMenu(EditMenu, ID_EDIT_CLEARSCREEN, MF_BYCOMMAND, ID_EDIT_CLEARSCREEN, ts.UIMsg);
1211     GetMenuString(EditMenu, ID_EDIT_CLEARBUFFER, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1212     get_lang_msg("MENU_EDIT_CLBUFFER", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1213     ModifyMenu(EditMenu, ID_EDIT_CLEARBUFFER, MF_BYCOMMAND, ID_EDIT_CLEARBUFFER, ts.UIMsg);
1214     GetMenuString(EditMenu, ID_EDIT_CANCELSELECT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1215     get_lang_msg("MENU_EDIT_CANCELSELECT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1216     ModifyMenu(EditMenu, ID_EDIT_CANCELSELECT, MF_BYCOMMAND, ID_EDIT_CANCELSELECT, ts.UIMsg);
1217     GetMenuString(EditMenu, ID_EDIT_SELECTSCREEN, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1218     get_lang_msg("MENU_EDIT_SELECTSCREEN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1219     ModifyMenu(EditMenu, ID_EDIT_SELECTSCREEN, MF_BYCOMMAND, ID_EDIT_SELECTSCREEN, ts.UIMsg);
1220     GetMenuString(EditMenu, ID_EDIT_SELECTALL, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1221     get_lang_msg("MENU_EDIT_SELECTALL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1222     ModifyMenu(EditMenu, ID_EDIT_SELECTALL, MF_BYCOMMAND, ID_EDIT_SELECTALL, ts.UIMsg);
1223    
1224     GetMenuString(*Menu, ID_SETUP, uimsg, sizeof(uimsg), MF_BYPOSITION);
1225     get_lang_msg("MENU_SETUP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1226     ModifyMenu(*Menu, ID_SETUP, MF_BYPOSITION, ID_SETUP, ts.UIMsg);
1227     GetMenuString(SetupMenu, ID_SETUP_TERMINAL, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1228     get_lang_msg("MENU_SETUP_TERMINAL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1229     ModifyMenu(SetupMenu, ID_SETUP_TERMINAL, MF_BYCOMMAND, ID_SETUP_TERMINAL, ts.UIMsg);
1230     GetMenuString(SetupMenu, ID_SETUP_WINDOW, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1231     get_lang_msg("MENU_SETUP_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1232     ModifyMenu(SetupMenu, ID_SETUP_WINDOW, MF_BYCOMMAND, ID_SETUP_WINDOW, ts.UIMsg);
1233     GetMenuString(SetupMenu, ID_SETUP_FONT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1234     get_lang_msg("MENU_SETUP_FONT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1235     ModifyMenu(SetupMenu, ID_SETUP_FONT, MF_BYCOMMAND, ID_SETUP_FONT, ts.UIMsg);
1236     GetMenuString(SetupMenu, ID_SETUP_KEYBOARD, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1237     get_lang_msg("MENU_SETUP_KEYBOARD", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1238     ModifyMenu(SetupMenu, ID_SETUP_KEYBOARD, MF_BYCOMMAND, ID_SETUP_KEYBOARD, ts.UIMsg);
1239     GetMenuString(SetupMenu, ID_SETUP_SERIALPORT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1240     get_lang_msg("MENU_SETUP_SERIALPORT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1241     ModifyMenu(SetupMenu, ID_SETUP_SERIALPORT, MF_BYCOMMAND, ID_SETUP_SERIALPORT, ts.UIMsg);
1242     GetMenuString(SetupMenu, ID_SETUP_TCPIP, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1243     get_lang_msg("MENU_SETUP_TCPIP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1244     ModifyMenu(SetupMenu, ID_SETUP_TCPIP, MF_BYCOMMAND, ID_SETUP_TCPIP, ts.UIMsg);
1245     GetMenuString(SetupMenu, ID_SETUP_GENERAL, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1246     get_lang_msg("MENU_SETUP_GENERAL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1247     ModifyMenu(SetupMenu, ID_SETUP_GENERAL, MF_BYCOMMAND, ID_SETUP_GENERAL, ts.UIMsg);
1248     GetMenuString(SetupMenu, ID_SETUP_ADDITIONALSETTINGS, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1249     get_lang_msg("MENU_SETUP_ADDITION", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1250     ModifyMenu(SetupMenu, ID_SETUP_ADDITIONALSETTINGS, MF_BYCOMMAND, ID_SETUP_ADDITIONALSETTINGS, ts.UIMsg);
1251     GetMenuString(SetupMenu, ID_SETUP_SAVE, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1252     get_lang_msg("MENU_SETUP_SAVE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1253     ModifyMenu(SetupMenu, ID_SETUP_SAVE, MF_BYCOMMAND, ID_SETUP_SAVE, ts.UIMsg);
1254     GetMenuString(SetupMenu, ID_SETUP_RESTORE, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1255     get_lang_msg("MENU_SETUP_RESTORE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1256     ModifyMenu(SetupMenu, ID_SETUP_RESTORE, MF_BYCOMMAND, ID_SETUP_RESTORE, ts.UIMsg);
1257 yutakapon 5809 GetMenuString(SetupMenu, ID_OPEN_SETUP, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1258     get_lang_msg("MENU_OPEN_SETUP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1259     ModifyMenu(SetupMenu, ID_OPEN_SETUP, MF_BYCOMMAND, ID_OPEN_SETUP, ts.UIMsg);
1260 maya 3227 GetMenuString(SetupMenu, ID_SETUP_LOADKEYMAP, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1261     get_lang_msg("MENU_SETUP_LOADKEYMAP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1262     ModifyMenu(SetupMenu, ID_SETUP_LOADKEYMAP, MF_BYCOMMAND, ID_SETUP_LOADKEYMAP, ts.UIMsg);
1263    
1264     GetMenuString(*Menu, ID_CONTROL, uimsg, sizeof(uimsg), MF_BYPOSITION);
1265     get_lang_msg("MENU_CONTROL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1266     ModifyMenu(*Menu, ID_CONTROL, MF_BYPOSITION, ID_CONTROL, ts.UIMsg);
1267     GetMenuString(ControlMenu, ID_CONTROL_RESETTERMINAL, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1268     get_lang_msg("MENU_CONTROL_RESET", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1269     ModifyMenu(ControlMenu, ID_CONTROL_RESETTERMINAL, MF_BYCOMMAND, ID_CONTROL_RESETTERMINAL, ts.UIMsg);
1270     GetMenuString(ControlMenu, ID_CONTROL_RESETREMOTETITLE, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1271     get_lang_msg("MENU_CONTROL_RESETTITLE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1272     ModifyMenu(ControlMenu, ID_CONTROL_RESETREMOTETITLE, MF_BYCOMMAND, ID_CONTROL_RESETREMOTETITLE, ts.UIMsg);
1273     GetMenuString(ControlMenu, ID_CONTROL_AREYOUTHERE, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1274     get_lang_msg("MENU_CONTROL_AREYOUTHERE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1275     ModifyMenu(ControlMenu, ID_CONTROL_AREYOUTHERE, MF_BYCOMMAND, ID_CONTROL_AREYOUTHERE, ts.UIMsg);
1276     GetMenuString(ControlMenu, ID_CONTROL_SENDBREAK, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1277     get_lang_msg("MENU_CONTROL_SENDBREAK", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1278     ModifyMenu(ControlMenu, ID_CONTROL_SENDBREAK, MF_BYCOMMAND, ID_CONTROL_SENDBREAK, ts.UIMsg);
1279     GetMenuString(ControlMenu, ID_CONTROL_RESETPORT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1280     get_lang_msg("MENU_CONTROL_RESETPORT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1281     ModifyMenu(ControlMenu, ID_CONTROL_RESETPORT, MF_BYCOMMAND, ID_CONTROL_RESETPORT, ts.UIMsg);
1282     GetMenuString(ControlMenu, ID_CONTROL_BROADCASTCOMMAND, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1283     get_lang_msg("MENU_CONTROL_BROADCAST", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1284     ModifyMenu(ControlMenu, ID_CONTROL_BROADCASTCOMMAND, MF_BYCOMMAND, ID_CONTROL_BROADCASTCOMMAND, ts.UIMsg);
1285     GetMenuString(ControlMenu, ID_CONTROL_OPENTEK, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1286     get_lang_msg("MENU_CONTROL_OPENTEK", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1287     ModifyMenu(ControlMenu, ID_CONTROL_OPENTEK, MF_BYCOMMAND, ID_CONTROL_OPENTEK, ts.UIMsg);
1288     GetMenuString(ControlMenu, ID_CONTROL_CLOSETEK, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1289     get_lang_msg("MENU_CONTROL_CLOSETEK", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1290     ModifyMenu(ControlMenu, ID_CONTROL_CLOSETEK, MF_BYCOMMAND, ID_CONTROL_CLOSETEK, ts.UIMsg);
1291 yutakapon 3839
1292 maya 3227 GetMenuString(ControlMenu, ID_CONTROL_MACRO, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1293     get_lang_msg("MENU_CONTROL_MACRO", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1294     ModifyMenu(ControlMenu, ID_CONTROL_MACRO, MF_BYCOMMAND, ID_CONTROL_MACRO, ts.UIMsg);
1295 maya 3842 GetMenuString(ControlMenu, ID_CONTROL_SHOW_MACRO, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1296     get_lang_msg("MENU_CONTROL_SHOW_MACRO", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1297     ModifyMenu(ControlMenu, ID_CONTROL_SHOW_MACRO, MF_BYCOMMAND, ID_CONTROL_SHOW_MACRO, ts.UIMsg);
1298 maya 3227
1299     GetMenuString(*Menu, ID_HELPMENU, uimsg, sizeof(uimsg), MF_BYPOSITION);
1300     get_lang_msg("MENU_HELP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1301     ModifyMenu(*Menu, ID_HELPMENU, MF_BYPOSITION, ID_HELPMENU, ts.UIMsg);
1302     GetMenuString(HelpMenu, ID_HELP_INDEX2, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1303     get_lang_msg("MENU_HELP_INDEX", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1304     ModifyMenu(HelpMenu, ID_HELP_INDEX2, MF_BYCOMMAND, ID_HELP_INDEX2, ts.UIMsg);
1305     GetMenuString(HelpMenu, ID_HELP_ABOUT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1306     get_lang_msg("MENU_HELP_ABOUT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1307     ModifyMenu(HelpMenu, ID_HELP_ABOUT, MF_BYCOMMAND, ID_HELP_ABOUT, ts.UIMsg);
1308    
1309     if ((ts.MenuFlag & MF_SHOWWINMENU) !=0) {
1310     WinMenu = CreatePopupMenu();
1311     get_lang_msg("MENU_WINDOW", ts.UIMsg, sizeof(ts.UIMsg),
1312     "&Window", ts.UILanguageFile);
1313     ::InsertMenu(*Menu,ID_HELPMENU,
1314     MF_STRING | MF_ENABLED | MF_POPUP | MF_BYPOSITION,
1315     (int)WinMenu, ts.UIMsg);
1316     }
1317    
1318     TTXModifyMenu(*Menu); /* TTPLUG */
1319     }
1320    
1321     void CVTWindow::InitMenuPopup(HMENU SubMenu)
1322     {
1323     if ( SubMenu == FileMenu )
1324     {
1325 maya 3966 if (ts.DisableMenuNewConnection) {
1326     if ( Connecting || cv.Open ) {
1327 maya 3965 EnableMenuItem(FileMenu,ID_FILE_NEWCONNECTION,MF_BYCOMMAND | MF_GRAYED);
1328     }
1329     else {
1330     EnableMenuItem(FileMenu,ID_FILE_NEWCONNECTION,MF_BYCOMMAND | MF_ENABLED);
1331     }
1332 maya 3227 }
1333 maya 3966 else {
1334     if ( Connecting ) {
1335     EnableMenuItem(FileMenu,ID_FILE_NEWCONNECTION,MF_BYCOMMAND | MF_GRAYED);
1336     }
1337     else {
1338     EnableMenuItem(FileMenu,ID_FILE_NEWCONNECTION,MF_BYCOMMAND | MF_ENABLED);
1339     }
1340     }
1341 maya 3227
1342     if ( (! cv.Ready) || (SendVar!=NULL) ||
1343     (FileVar!=NULL) || (cv.PortType==IdFile) ) {
1344     EnableMenuItem(FileMenu,ID_FILE_SENDFILE,MF_BYCOMMAND | MF_GRAYED);
1345     EnableMenuItem(FileMenu,ID_TRANSFER,MF_BYPOSITION | MF_GRAYED); /* Transfer */
1346     EnableMenuItem(FileMenu,ID_FILE_CHANGEDIR,MF_BYCOMMAND | MF_GRAYED);
1347     EnableMenuItem(FileMenu,ID_FILE_DISCONNECT,MF_BYCOMMAND | MF_GRAYED);
1348     EnableMenuItem(FileMenu,ID_FILE_DUPLICATESESSION,MF_BYCOMMAND | MF_GRAYED);
1349     }
1350     else {
1351     EnableMenuItem(FileMenu,ID_FILE_SENDFILE,MF_BYCOMMAND | MF_ENABLED);
1352     EnableMenuItem(FileMenu,ID_TRANSFER,MF_BYPOSITION | MF_ENABLED); /* Transfer */
1353     EnableMenuItem(FileMenu,ID_FILE_CHANGEDIR,MF_BYCOMMAND | MF_ENABLED);
1354     EnableMenuItem(FileMenu,ID_FILE_DISCONNECT,MF_BYCOMMAND | MF_ENABLED);
1355 maya 3964 if (ts.DisableMenuDuplicateSession) {
1356     EnableMenuItem(FileMenu,ID_FILE_DUPLICATESESSION,MF_BYCOMMAND | MF_GRAYED);
1357     }
1358     else {
1359     EnableMenuItem(FileMenu,ID_FILE_DUPLICATESESSION,MF_BYCOMMAND | MF_ENABLED);
1360     }
1361 maya 3227 }
1362    
1363     // �V�K���j���[������ (2004.12.5 yutaka)
1364     EnableMenuItem(FileMenu,ID_FILE_CYGWINCONNECTION,MF_BYCOMMAND | MF_ENABLED);
1365     EnableMenuItem(FileMenu,ID_FILE_TERATERMMENU,MF_BYCOMMAND | MF_ENABLED);
1366     EnableMenuItem(FileMenu,ID_FILE_LOGMEIN,MF_BYCOMMAND | MF_ENABLED);
1367    
1368     // XXX: �������u�����������Alog���O���C�����������B (2005.2.1 yutaka)
1369     if (LogVar!=NULL) { // ���O�������[�h������
1370     EnableMenuItem(FileMenu,ID_FILE_LOG,MF_BYCOMMAND | MF_GRAYED);
1371     EnableMenuItem(FileMenu,ID_FILE_COMMENTTOLOG, MF_BYCOMMAND | MF_ENABLED);
1372     EnableMenuItem(FileMenu,ID_FILE_VIEWLOG, MF_BYCOMMAND | MF_ENABLED);
1373 maya 3709 EnableMenuItem(FileMenu,ID_FILE_SHOWLOGDIALOG, MF_BYCOMMAND | MF_ENABLED);
1374 maya 3227 } else {
1375     EnableMenuItem(FileMenu,ID_FILE_LOG,MF_BYCOMMAND | MF_ENABLED);
1376     EnableMenuItem(FileMenu,ID_FILE_COMMENTTOLOG, MF_BYCOMMAND | MF_GRAYED);
1377     EnableMenuItem(FileMenu,ID_FILE_VIEWLOG, MF_BYCOMMAND | MF_GRAYED);
1378     EnableMenuItem(FileMenu,ID_FILE_SHOWLOGDIALOG, MF_BYCOMMAND | MF_GRAYED);
1379     }
1380    
1381     }
1382     else if ( SubMenu == TransMenu )
1383     {
1384     if ((cv.PortType==IdSerial) &&
1385     ((ts.DataBit==IdDataBit7) || (ts.Flow==IdFlowX))) {
1386     EnableMenuItem(TransMenu,1,MF_BYPOSITION | MF_GRAYED); /* XMODEM */
1387     EnableMenuItem(TransMenu,4,MF_BYPOSITION | MF_GRAYED); /* Quick-VAN */
1388     }
1389     else {
1390     EnableMenuItem(TransMenu,1,MF_BYPOSITION | MF_ENABLED); /* XMODEM */
1391     EnableMenuItem(TransMenu,4,MF_BYPOSITION | MF_ENABLED); /* Quick-VAN */
1392     }
1393     if ((cv.PortType==IdSerial) &&
1394     (ts.DataBit==IdDataBit7)) {
1395     EnableMenuItem(TransMenu,2,MF_BYPOSITION | MF_GRAYED); /* ZMODEM */
1396     EnableMenuItem(TransMenu,3,MF_BYPOSITION | MF_GRAYED); /* B-Plus */
1397     }
1398     else {
1399     EnableMenuItem(TransMenu,2,MF_BYPOSITION | MF_ENABLED); /* ZMODEM */
1400     EnableMenuItem(TransMenu,3,MF_BYPOSITION | MF_ENABLED); /* B-Plus */
1401     }
1402     }
1403     else if (SubMenu == EditMenu)
1404     {
1405     if (Selected) {
1406     EnableMenuItem(EditMenu,ID_EDIT_COPY2,MF_BYCOMMAND | MF_ENABLED);
1407     EnableMenuItem(EditMenu,ID_EDIT_COPYTABLE,MF_BYCOMMAND | MF_ENABLED);
1408     }
1409     else {
1410     EnableMenuItem(EditMenu,ID_EDIT_COPY2,MF_BYCOMMAND | MF_GRAYED);
1411     EnableMenuItem(EditMenu,ID_EDIT_COPYTABLE,MF_BYCOMMAND | MF_GRAYED);
1412     }
1413     if (cv.Ready &&
1414     (SendVar==NULL) && (FileVar==NULL) &&
1415     (cv.PortType!=IdFile) &&
1416     (IsClipboardFormatAvailable(CF_TEXT) ||
1417     IsClipboardFormatAvailable(CF_OEMTEXT))) {
1418     EnableMenuItem(EditMenu,ID_EDIT_PASTE2,MF_BYCOMMAND | MF_ENABLED);
1419     EnableMenuItem(EditMenu,ID_EDIT_PASTECR,MF_BYCOMMAND | MF_ENABLED);
1420     }
1421     else {
1422     EnableMenuItem(EditMenu,ID_EDIT_PASTE2,MF_BYCOMMAND | MF_GRAYED);
1423     EnableMenuItem(EditMenu,ID_EDIT_PASTECR,MF_BYCOMMAND | MF_GRAYED);
1424     }
1425     }
1426     else if (SubMenu == SetupMenu)
1427     if (cv.Ready &&
1428     ((cv.PortType==IdTCPIP) || (cv.PortType==IdFile)) ||
1429 maya 3392 (SendVar!=NULL) || (FileVar!=NULL) || Connecting) {
1430 maya 3227 EnableMenuItem(SetupMenu,ID_SETUP_SERIALPORT,MF_BYCOMMAND | MF_GRAYED);
1431 maya 3392 }
1432     else {
1433 maya 3227 EnableMenuItem(SetupMenu,ID_SETUP_SERIALPORT,MF_BYCOMMAND | MF_ENABLED);
1434 maya 3392 }
1435 maya 3227
1436     else if (SubMenu == ControlMenu)
1437     {
1438     if (cv.Ready &&
1439     (SendVar==NULL) && (FileVar==NULL)) {
1440 maya 3283 if (ts.DisableMenuSendBreak) {
1441 maya 3279 EnableMenuItem(ControlMenu,ID_CONTROL_SENDBREAK,MF_BYCOMMAND | MF_GRAYED);
1442     }
1443     else {
1444     EnableMenuItem(ControlMenu,ID_CONTROL_SENDBREAK,MF_BYCOMMAND | MF_ENABLED);
1445     }
1446 maya 3392 if (cv.PortType==IdSerial) {
1447 maya 3227 EnableMenuItem(ControlMenu,ID_CONTROL_RESETPORT,MF_BYCOMMAND | MF_ENABLED);
1448 maya 3392 }
1449     else {
1450 maya 3227 EnableMenuItem(ControlMenu,ID_CONTROL_RESETPORT,MF_BYCOMMAND | MF_GRAYED);
1451 maya 3392 }
1452 maya 3227 }
1453     else {
1454     EnableMenuItem(ControlMenu,ID_CONTROL_SENDBREAK,MF_BYCOMMAND | MF_GRAYED);
1455     EnableMenuItem(ControlMenu,ID_CONTROL_RESETPORT,MF_BYCOMMAND | MF_GRAYED);
1456     }
1457    
1458 maya 3392 if (cv.Ready && cv.TelFlag && (FileVar==NULL)) {
1459 maya 3227 EnableMenuItem(ControlMenu,ID_CONTROL_AREYOUTHERE,MF_BYCOMMAND | MF_ENABLED);
1460 maya 3392 }
1461     else {
1462 maya 3227 EnableMenuItem(ControlMenu,ID_CONTROL_AREYOUTHERE,MF_BYCOMMAND | MF_GRAYED);
1463 maya 3392 }
1464 maya 3227
1465 maya 3392 if (HTEKWin==0) {
1466 maya 3227 EnableMenuItem(ControlMenu,ID_CONTROL_CLOSETEK,MF_BYCOMMAND | MF_GRAYED);
1467 maya 3392 }
1468     else {
1469 maya 3227 EnableMenuItem(ControlMenu,ID_CONTROL_CLOSETEK,MF_BYCOMMAND | MF_ENABLED);
1470 maya 3392 }
1471 maya 3227
1472 maya 3392 if ((ConvH!=0) || (FileVar!=NULL)) {
1473 maya 3227 EnableMenuItem(ControlMenu,ID_CONTROL_MACRO,MF_BYCOMMAND | MF_GRAYED);
1474 maya 3842 EnableMenuItem(ControlMenu,ID_CONTROL_SHOW_MACRO,MF_BYCOMMAND | MF_ENABLED);
1475 maya 3392 }
1476     else {
1477 yutakapon 3837 EnableMenuItem(ControlMenu,ID_CONTROL_MACRO,MF_BYCOMMAND | MF_ENABLED);
1478 maya 3842 EnableMenuItem(ControlMenu,ID_CONTROL_SHOW_MACRO,MF_BYCOMMAND | MF_GRAYED);
1479 maya 3392 }
1480 maya 3227
1481     }
1482     else if (SubMenu == WinMenu)
1483     {
1484 yutakapon 5249 SetWinMenu(WinMenu, ts.UIMsg, sizeof(ts.UIMsg), ts.UILanguageFile, 1);
1485 maya 3227 }
1486    
1487     TTXModifyPopupMenu(SubMenu); /* TTPLUG */
1488     }
1489    
1490     // added ConfirmPasteMouseRButton (2007.3.17 maya)
1491     void CVTWindow::InitPasteMenu(HMENU *Menu)
1492     {
1493     char uimsg[MAX_UIMSG];
1494    
1495     *Menu = LoadMenu(AfxGetInstanceHandle(),
1496     MAKEINTRESOURCE(IDR_PASTEMENU));
1497    
1498     GetMenuString(*Menu, ID_EDIT_PASTE2, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1499     get_lang_msg("MENU_EDIT_PASTE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1500     ModifyMenu(*Menu, ID_EDIT_PASTE2, MF_BYCOMMAND, ID_EDIT_PASTE2, ts.UIMsg);
1501     GetMenuString(*Menu, ID_EDIT_PASTECR, uimsg, sizeof(uimsg), MF_BYCOMMAND);
1502     get_lang_msg("MENU_EDIT_PASTECR", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1503     ModifyMenu(*Menu, ID_EDIT_PASTECR, MF_BYCOMMAND, ID_EDIT_PASTECR, ts.UIMsg);
1504     }
1505    
1506     void CVTWindow::ResetSetup()
1507     {
1508     ChangeFont();
1509     BuffChangeWinSize(WinWidth,WinHeight);
1510     ChangeCaret();
1511    
1512     if (cv.Ready) {
1513     ts.PortType = cv.PortType;
1514     if (cv.PortType==IdSerial) {
1515     /* if serial port, change port parameters */
1516     ts.ComPort = cv.ComPort;
1517     CommResetSerial(&ts, &cv, TRUE);
1518     }
1519     }
1520    
1521     /* setup terminal */
1522     SetupTerm();
1523    
1524     /* background and ANSI color */
1525     #ifdef ALPHABLEND_TYPE2
1526     BGInitialize();
1527     BGSetupPrimary(TRUE);
1528     // 2006/03/17 by 337 : Alpha�l���������X
1529     // Layered��������������������������������
1530     if (ts.EtermLookfeel.BGUseAlphaBlendAPI) {
1531     MySetLayeredWindowAttributes(HVTWin, 0, ts.AlphaBlend, LWA_ALPHA);
1532     }
1533     #else
1534     DispApplyANSIColor();
1535     #endif
1536     DispSetNearestColors(IdBack, IdFore+8, NULL);
1537    
1538     /* setup window */
1539     ChangeWin();
1540    
1541     /* Language & IME */
1542     ResetIME();
1543    
1544     /* change TEK window */
1545     if (pTEKWin != NULL)
1546     ((CTEKWindow *)pTEKWin)->RestoreSetup();
1547     }
1548    
1549     void CVTWindow::RestoreSetup()
1550     {
1551     char TempDir[MAXPATHLEN];
1552 maya 4031 char TempName[MAX_PATH];
1553 maya 3227
1554 maya 3392 if ( strlen(ts.SetupFName)==0 ) {
1555 maya 3227 return;
1556 maya 3392 }
1557 maya 3227
1558     ExtractFileName(ts.SetupFName,TempName,sizeof(TempName));
1559     ExtractDirName(ts.SetupFName,TempDir);
1560     if (TempDir[0]==0)
1561     strncpy_s(TempDir, sizeof(TempDir),ts.HomeDir, _TRUNCATE);
1562     FitFileName(TempName,sizeof(TempName),".INI");
1563    
1564     strncpy_s(ts.SetupFName, sizeof(ts.SetupFName),TempDir, _TRUNCATE);
1565     AppendSlash(ts.SetupFName,sizeof(ts.SetupFName));
1566 maya 3392 strncat_s(ts.SetupFName,sizeof(ts.SetupFName),TempName,_TRUNCATE);
1567 maya 3227
1568 maya 3392 if (LoadTTSET()) {
1569 maya 3227 (*ReadIniFile)(ts.SetupFName,&ts);
1570 maya 3392 }
1571 maya 3227 FreeTTSET();
1572    
1573     #if 0
1574     ChangeDefaultSet(&ts,NULL);
1575     #endif
1576    
1577     ResetSetup();
1578     }
1579    
1580     /* called by the [Setup] Terminal command */
1581     void CVTWindow::SetupTerm()
1582     {
1583 doda 3407 if (ts.Language==IdJapanese || ts.Language==IdKorean || ts.Language==IdUtf8) {
1584 maya 3227 ResetCharSet();
1585 maya 3393 }
1586 maya 3227 cv.CRSend = ts.CRSend;
1587    
1588     // for russian mode
1589     cv.RussHost = ts.RussHost;
1590     cv.RussClient = ts.RussClient;
1591    
1592 doda 3932 if (cv.Ready) {
1593     if (cv.TelFlag && (ts.TelEcho>0)) {
1594     TelChangeEcho();
1595     }
1596     _free_locale(cv.locale);
1597     cv.locale = _create_locale(LC_ALL, cv.Locale);
1598 maya 3392 }
1599 maya 3227
1600     if ((ts.TerminalWidth!=NumOfColumns) ||
1601     (ts.TerminalHeight!=NumOfLines-StatusLine)) {
1602     LockBuffer();
1603     HideStatusLine();
1604     ChangeTerminalSize(ts.TerminalWidth,
1605     ts.TerminalHeight);
1606     UnlockBuffer();
1607     }
1608     else if ((ts.TermIsWin>0) &&
1609     ((ts.TerminalWidth!=WinWidth) ||
1610 maya 3392 (ts.TerminalHeight!=WinHeight-StatusLine))) {
1611 maya 3227 BuffChangeWinSize(ts.TerminalWidth,ts.TerminalHeight+StatusLine);
1612 maya 3392 }
1613 doda 4246
1614     ChangeTerminalID();
1615 maya 3227 }
1616    
1617     void CVTWindow::Startup()
1618     {
1619     /* auto log */
1620     /* OnCommOpen ���J�n�������������������J�n������ (2007.5.14 maya) */
1621    
1622     if ((TopicName[0]==0) && (ts.MacroFN[0]!=0)) {
1623     // start the macro specified in the command line or setup file
1624     RunMacro(ts.MacroFN,TRUE);
1625     ts.MacroFN[0] = 0;
1626     }
1627     else {// start connection
1628 maya 3392 if (TopicName[0]!=0) {
1629 maya 3227 cv.NoMsg=1; /* suppress error messages */
1630 maya 3392 }
1631 maya 3227 ::PostMessage(HVTWin,WM_USER_COMMSTART,0,0);
1632     }
1633     }
1634    
1635     void CVTWindow::OpenTEK()
1636     {
1637     ActiveWin = IdTEK;
1638     if (HTEKWin==NULL) {
1639     pTEKWin = new CTEKWindow();
1640     }
1641     else {
1642     ::ShowWindow(HTEKWin,SW_SHOWNORMAL);
1643     ::SetFocus(HTEKWin);
1644     }
1645     }
1646    
1647     /////////////////////////////////////////////////////////////////////////////
1648     // CVTWindow message handler
1649    
1650     LRESULT CVTWindow::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
1651     {
1652     LRESULT Result;
1653    
1654     if (message == MsgDlgHelp) {
1655     OnDlgHelp(wParam,lParam);
1656     return 0;
1657     }
1658     else if ((ts.HideTitle>0) &&
1659     (message == WM_NCHITTEST)) {
1660     Result = CFrameWnd::DefWindowProc(message,wParam,lParam);
1661     if ((Result==HTCLIENT) && AltKey())
1662     #ifdef ALPHABLEND_TYPE2
1663     if(ShiftKey())
1664     Result = HTBOTTOMRIGHT;
1665     else
1666     Result = HTCAPTION;
1667     #else
1668     Result = HTCAPTION;
1669     #endif
1670     return Result;
1671     }
1672    
1673     return (CFrameWnd::DefWindowProc(message,wParam,lParam));
1674     }
1675    
1676     BOOL CVTWindow::OnCommand(WPARAM wParam, LPARAM lParam)
1677     {
1678     WORD wID = LOWORD(wParam);
1679     WORD wNotifyCode = HIWORD(wParam);
1680    
1681     if (wNotifyCode==1) {
1682     switch (wID) {
1683     case ID_ACC_SENDBREAK:
1684     // added DisableAcceleratorSendBreak (2007.3.17 maya)
1685     if (!ts.DisableAcceleratorSendBreak)
1686     OnControlSendBreak();
1687     return TRUE;
1688     case ID_ACC_PASTECR:
1689     OnEditPasteCR();
1690     return TRUE;
1691     case ID_ACC_AREYOUTHERE:
1692     OnControlAreYouThere();
1693     return TRUE;
1694     case ID_ACC_PASTE:
1695     OnEditPaste();
1696     return TRUE;
1697     }
1698     if (ActiveWin==IdVT) {
1699     switch (wID) {
1700     case ID_ACC_NEWCONNECTION:
1701 maya 5684 if (ts.AcceleratorNewConnection)
1702     OnFileNewConnection();
1703 maya 3227 return TRUE;
1704 maya 5691 case ID_ACC_DUPLICATESESSION:
1705     // added DisableAcceleratorDuplicateSession (2009.4.6 maya)
1706     if (!ts.DisableAcceleratorDuplicateSession)
1707     OnDuplicateSession();
1708     return TRUE;
1709 maya 5684 case ID_ACC_CYGWINCONNECTION:
1710     if (ts.AcceleratorCygwinConnection)
1711     OnCygwinConnection();
1712     return TRUE;
1713 maya 5691 case ID_ACC_DISCONNECT:
1714     Disconnect(TRUE);
1715     return TRUE;
1716 maya 3227 case ID_ACC_COPY:
1717     OnEditCopy();
1718     return TRUE;
1719     case ID_ACC_PRINT:
1720     OnFilePrint();
1721     return TRUE;
1722     case ID_ACC_EXIT:
1723     OnFileExit();
1724     return TRUE;
1725     }
1726     }
1727     else { // transfer accelerator message to TEK win
1728     switch (wID) {
1729     case ID_ACC_COPY:
1730     ::PostMessage(HTEKWin,WM_COMMAND,ID_TEKEDIT_COPY,0);
1731     return TRUE;
1732     case ID_ACC_PRINT:
1733     ::PostMessage(HTEKWin,WM_COMMAND,ID_TEKFILE_PRINT,0);
1734     return TRUE;
1735     case ID_ACC_EXIT:
1736     ::PostMessage(HTEKWin,WM_COMMAND,ID_TEKFILE_EXIT,0);
1737     return TRUE;
1738     }
1739     }
1740     }
1741    
1742     if ((wID>=ID_WINDOW_1) && (wID<ID_WINDOW_1+9)) {
1743     SelectWin(wID-ID_WINDOW_1);
1744     return TRUE;
1745     }
1746     else {
1747 maya 3392 if (TTXProcessCommand(HVTWin, wID)) {
1748 maya 3227 return TRUE;
1749 maya 3392 }
1750     else { /* TTPLUG */
1751 maya 3227 return CFrameWnd::OnCommand(wParam, lParam);
1752 maya 3392 }
1753 maya 3227 }
1754     }
1755    
1756     void CVTWindow::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
1757     {
1758     DispSetActive(nState!=WA_INACTIVE);
1759     }
1760    
1761     void CVTWindow::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
1762     {
1763     unsigned int i;
1764     char Code;
1765    
1766 maya 3392 if (!KeybEnabled || (TalkStatus!=IdTalkKeyb)) {
1767 maya 3227 return;
1768 maya 3392 }
1769 maya 3227
1770 doda 4414 if (MetaKey(ts.MetaKey)) {
1771 maya 3227 ::PostMessage(HVTWin,WM_SYSCHAR,nChar,MAKELONG(nRepCnt,nFlags));
1772     return;
1773     }
1774     Code = nChar;
1775    
1776     if ((ts.Language==IdRussian) &&
1777 maya 3393 ((BYTE)Code>=128)) {
1778 maya 3227 Code = (char)RussConv(ts.RussKeyb,ts.RussClient,(BYTE)Code);
1779 maya 3392 }
1780 maya 3227
1781     for (i=1 ; i<=nRepCnt ; i++) {
1782     CommTextOut(&cv,&Code,1);
1783 maya 3392 if (ts.LocalEcho>0) {
1784 maya 3227 CommTextEcho(&cv,&Code,1);
1785 maya 3392 }
1786 maya 3227 }
1787    
1788     /* �����s�����������X�N���[����������������
1789     �����[�g�����L�[�������M���X�N���[�������� */
1790 doda 4469 if (ts.AutoScrollOnlyInBottomLine != 0 && WinOrgY != 0) {
1791 maya 3227 DispVScroll(SCROLL_BOTTOM, 0);
1792     }
1793     }
1794    
1795     /* copy from ttset.c*/
1796     static void WriteInt2(PCHAR Sect, PCHAR Key, PCHAR FName, int i1, int i2)
1797     {
1798     char Temp[32];
1799     _snprintf_s(Temp, sizeof(Temp), _TRUNCATE, "%d,%d", i1, i2);
1800     WritePrivateProfileString(Sect, Key, Temp, FName);
1801     }
1802    
1803     static void SaveVTPos()
1804     {
1805     #define Section "Tera Term"
1806     if (ts.SaveVTWinPos) {
1807     /* VT win position */
1808     WriteInt2(Section, "VTPos", ts.SetupFName, ts.VTPos.x, ts.VTPos.y);
1809    
1810     /* VT terminal size */
1811     WriteInt2(Section, "TerminalSize", ts.SetupFName,
1812     ts.TerminalWidth, ts.TerminalHeight);
1813     }
1814     }
1815    
1816     void CVTWindow::OnClose()
1817     {
1818     if ((HTEKWin!=NULL) && ! ::IsWindowEnabled(HTEKWin)) {
1819     MessageBeep(0);
1820     return;
1821     }
1822     get_lang_msg("MSG_DISCONNECT_CONF", ts.UIMsg, sizeof(ts.UIMsg),
1823     "Disconnect?", ts.UILanguageFile);
1824     if (cv.Ready && (cv.PortType==IdTCPIP) &&
1825     ((ts.PortFlag & PF_CONFIRMDISCONN) != 0) &&
1826     ! CloseTT &&
1827     (::MessageBox(HVTWin, ts.UIMsg, "Tera Term",
1828 maya 3392 MB_OKCANCEL | MB_ICONEXCLAMATION | MB_DEFBUTTON2)==IDCANCEL)) {
1829 maya 3227 return;
1830 maya 3392 }
1831 maya 3227
1832     FileTransEnd(0);
1833     ProtoEnd();
1834    
1835     SaveVTPos();
1836     DestroyWindow();
1837     }
1838    
1839 yutakapon 5232 // �STera Term���I�����w������
1840     void CVTWindow::OnAllClose()
1841     {
1842 yutakapon 5351 // ���R�I���������������������A�����������[�U���������������o�������������B
1843     // (2013.8.17 yutaka)
1844     get_lang_msg("MSG_ALL_TERMINATE_CONF", ts.UIMsg, sizeof(ts.UIMsg),
1845     "Terminate ALL Tera Term(s)?", ts.UILanguageFile);
1846     if (::MessageBox(HVTWin, ts.UIMsg, "Tera Term",
1847     MB_OKCANCEL | MB_ICONERROR | MB_DEFBUTTON2)==IDCANCEL)
1848     return;
1849    
1850 yutakapon 5232 BroadcastClosingMessage(HVTWin);
1851     }
1852    
1853     // �I������������������Tera Term���I�������BOnAllClose()���M�p�B
1854     LONG CVTWindow::OnNonConfirmClose(UINT wParam, LONG lParam)
1855     {
1856     // ������ ts �����e�����}�I���������������A�I�����������Z�[�u�����������������������A�������������B
1857     ts.PortFlag &= ~PF_CONFIRMDISCONN;
1858     OnClose();
1859     return 1;
1860     }
1861    
1862 maya 3227 void CVTWindow::OnDestroy()
1863     {
1864     // remove this window from the window list
1865     UnregWin(HVTWin);
1866    
1867 salarm 6100 // USB�f�o�C�X�������m����
1868     UnRegDeviceNotify(HVTWin);
1869    
1870 maya 3227 EndKeyboard();
1871    
1872     /* Disable drag-drop */
1873     ::DragAcceptFiles(HVTWin,FALSE);
1874    
1875     EndDDE();
1876    
1877 maya 3392 if (cv.TelFlag) {
1878 maya 3227 EndTelnet();
1879 maya 3392 }
1880 maya 3227 CommClose(&cv);
1881    
1882 yutakapon 5636 OpenHelp(HH_CLOSE_ALL, 0, ts.UILanguageFile);
1883 maya 3227
1884     FreeIME();
1885     FreeTTSET();
1886     do { }
1887 maya 3392 while (FreeTTDLG());
1888 maya 3227
1889     do { }
1890 maya 3392 while (FreeTTFILE());
1891 maya 3227
1892 maya 3392 if (HTEKWin != NULL) {
1893 maya 3227 ::DestroyWindow(HTEKWin);
1894 maya 3392 }
1895 maya 3227
1896 doda 3450 EndTerm();
1897 maya 3227 EndDisp();
1898    
1899     FreeBuffer();
1900    
1901     CFrameWnd::OnDestroy();
1902     TTXEnd(); /* TTPLUG */
1903     }
1904    
1905 yutakapon 4891 static LRESULT CALLBACK OnDragDropDlgProc(HWND hDlgWnd, UINT msg, WPARAM wp, LPARAM lp)
1906 maya 3227 {
1907 yutakapon 4891 static HFONT DlgDragDropFont = NULL;
1908     char uimsg[MAX_UIMSG];
1909     LOGFONT logfont;
1910     HFONT font;
1911 maya 3227
1912 yutakapon 4891 switch (msg) {
1913     case WM_INITDIALOG:
1914     font = (HFONT)SendMessage(hDlgWnd, WM_GETFONT, 0, 0);
1915     GetObject(font, sizeof(LOGFONT), &logfont);
1916     if (get_lang_font("DLG_TAHOMA_FONT", hDlgWnd, &logfont, &DlgDragDropFont, ts.UILanguageFile)) {
1917     SendDlgItemMessage(hDlgWnd, IDC_SCP_PATH, WM_SETFONT, (WPARAM)DlgDragDropFont, MAKELPARAM(TRUE,0));
1918     SendDlgItemMessage(hDlgWnd, IDOK, WM_SETFONT, (WPARAM)DlgDragDropFont, MAKELPARAM(TRUE,0));
1919     SendDlgItemMessage(hDlgWnd, IDCANCEL, WM_SETFONT, (WPARAM)DlgDragDropFont, MAKELPARAM(TRUE,0));
1920     SendDlgItemMessage(hDlgWnd, IDC_DAD_STATIC, WM_SETFONT, (WPARAM)DlgDragDropFont, MAKELPARAM(TRUE,0));
1921     SendDlgItemMessage(hDlgWnd, IDC_DAD_SENDFILE, WM_SETFONT, (WPARAM)DlgDragDropFont, MAKELPARAM(TRUE,0));
1922     } else {
1923     DlgDragDropFont = NULL;
1924     }
1925    
1926     GetWindowText(hDlgWnd, uimsg, sizeof(uimsg));
1927     get_lang_msg("MSG_DANDD_CONF_TITLE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1928     SetWindowText(hDlgWnd, ts.UIMsg);
1929    
1930     get_lang_msg("MSG_DANDD_CONF", ts.UIMsg, sizeof(ts.UIMsg),
1931     "Are you sure that you want to send the file content?", ts.UILanguageFile);
1932     SetDlgItemText(hDlgWnd, IDC_DAD_STATIC, ts.UIMsg);
1933    
1934     get_lang_msg("FILEDLG_TRANS_TITLE_SENDFILE", ts.UIMsg, sizeof(ts.UIMsg),
1935     "Send file", ts.UILanguageFile);
1936     SetDlgItemText(hDlgWnd, IDOK, ts.UIMsg);
1937    
1938     SendMessage(GetDlgItem(hDlgWnd, IDC_SCP_PATH), WM_SETTEXT, 0, (LPARAM)ts.ScpSendDir);
1939    
1940     // �L�����Z���{�^�����f�t�H���g�����A��������Enter�L�[�������������A���������������������B
1941     SetFocus(GetDlgItem(hDlgWnd, IDCANCEL));
1942     PostMessage(GetDlgItem(hDlgWnd, IDCANCEL), WM_NEXTDLGCTL, 0, 0L) ;
1943    
1944     // SSH2 �������������������� "SCP" �������������B
1945     if (cv.isSSH != 2) {
1946     EnableWindow(GetDlgItem(hDlgWnd, IDC_DAD_SENDFILE), FALSE);
1947     EnableWindow(GetDlgItem(hDlgWnd, IDC_SCP_PATH), FALSE);
1948     EnableWindow(GetDlgItem(hDlgWnd, IDC_STATIC), FALSE);
1949     }
1950    
1951     // TRUE���������{�^�����t�H�[�J�X�������������B
1952     return FALSE;
1953    
1954     case WM_COMMAND:
1955     switch (LOWORD(wp)) {
1956     case IDC_DAD_SENDFILE:
1957     SendMessage(GetDlgItem(hDlgWnd, IDC_SCP_PATH), WM_GETTEXT, sizeof(ts.ScpSendDir), (LPARAM)ts.ScpSendDir);
1958     if (DlgDragDropFont != NULL) {
1959     DeleteObject(DlgDragDropFont);
1960     }
1961     EndDialog(hDlgWnd, IDC_DAD_SENDFILE);
1962     break;
1963    
1964     case IDOK:
1965     if (DlgDragDropFont != NULL) {
1966     DeleteObject(DlgDragDropFont);
1967     }
1968     EndDialog(hDlgWnd, IDOK);
1969     break;
1970    
1971     case IDCANCEL:
1972     if (DlgDragDropFont != NULL) {
1973     DeleteObject(DlgDragDropFont);
1974     }
1975     EndDialog(hDlgWnd, IDCANCEL);
1976     break;
1977    
1978     default:
1979     return FALSE;
1980     }
1981    
1982     default:
1983     return FALSE;
1984 maya 3227 }
1985 yutakapon 4891 return TRUE;
1986 maya 3227 }
1987    
1988     void CVTWindow::OnDropFiles(HDROP hDropInfo)
1989     {
1990     ::SetForegroundWindow(HVTWin);
1991     if (cv.Ready && (SendVar==NULL) && NewFileVar(&SendVar))
1992     {
1993     if (DragQueryFile(hDropInfo,0,SendVar->FullName,
1994     sizeof(SendVar->FullName))>0)
1995     {
1996     DWORD attr;
1997     char *ptr, *q;
1998     char tmpbuf[_MAX_PATH * 2];
1999    
2000     // �f�B���N�g�����������t���p�X�����\���t���� (2004.11.3 yutaka)
2001     attr = GetFileAttributes(SendVar->FullName);
2002     if (attr != -1 && (attr & FILE_ATTRIBUTE_DIRECTORY)) {
2003     ptr = SendVar->FullName;
2004     // �p�X���������� \ -> / ��
2005     setlocale(LC_ALL, ts.Locale);
2006     while (*ptr) {
2007     if (isleadbyte(*ptr)) { // multi-byte
2008     ptr += 2;
2009     continue;
2010     }
2011     if (*ptr == '\\')
2012     *ptr = '/';
2013     ptr++;
2014     }
2015    
2016     // �p�X���������������G�X�P�[�v����
2017     q = tmpbuf;
2018     ptr = SendVar->FullName;
2019     while (*ptr) {
2020     if (*ptr == ' ')
2021     *q++ = '\\';
2022     *q++ = *ptr;
2023     ptr++;
2024     }
2025     *q = '\0'; // null-terminate
2026    
2027     ptr = tmpbuf;
2028    
2029     // console�����M
2030     while (*ptr) {
2031 doda 3860 CommTextOut(&cv, ptr, 1);
2032 maya 3227 if (ts.LocalEcho > 0) {
2033 doda 3860 CommTextEcho(&cv, ptr, 1);
2034 maya 3227 }
2035     ptr++;
2036     }
2037     FreeFileVar(&SendVar); // �������Y������
2038    
2039     } else {
2040     // Confirm send a file when drag and drop (2007.12.28 maya)
2041     if (ts.ConfirmFileDragAndDrop) {
2042     // ���������t�@�C�������e�����������O���A���[�U���������������s���B(2006.1.21 yutaka)
2043     // MessageBox��SCP���I�������������������B(2008.1.25 yutaka)
2044 yutakapon 4891 // SCP�p�X���w���������������_�C�A���O�����X�����B(2012.4.11 yutaka)
2045 maya 3227 int ret;
2046    
2047 yutakapon 4891 ret = DialogBox(hInst, MAKEINTRESOURCE(IDD_DAD_DIALOG),
2048     HVTWin, (DLGPROC)OnDragDropDlgProc);
2049 maya 3227
2050 yutakapon 4891 if (ret == IDOK) { // sendfile
2051 doda 5314 HelpId = HlpFileSend;
2052 maya 3227 SendVar->DirLen = 0;
2053     ts.TransBin = 0;
2054     FileSendStart();
2055    
2056 yutakapon 4891 } else if (ret == IDC_DAD_SENDFILE) { // SCP
2057 maya 3227 typedef int (CALLBACK *PSSH_start_scp)(char *, char *);
2058     static PSSH_start_scp func = NULL;
2059 doda 4131 static HMODULE h = NULL;
2060 maya 3227 char msg[128];
2061    
2062     if (func == NULL) {
2063     if ( ((h = GetModuleHandle("ttxssh.dll")) == NULL) ) {
2064     _snprintf_s(msg, sizeof(msg), _TRUNCATE, "GetModuleHandle(\"ttxssh.dll\")) %d", GetLastError());
2065     goto scp_send_error;
2066     }
2067     func = (PSSH_start_scp)GetProcAddress(h, "TTXScpSendfile");
2068     if (func == NULL) {
2069     _snprintf_s(msg, sizeof(msg), _TRUNCATE, "GetProcAddress(\"TTXScpSendfile\")) %d", GetLastError());
2070     goto scp_send_error;
2071     }
2072     }
2073    
2074     if (func != NULL) {
2075 yutakapon 4880 func(SendVar->FullName, ts.ScpSendDir);
2076 maya 3227 goto send_success;
2077     }
2078    
2079     scp_send_error:
2080     ::MessageBox(NULL, msg, "Tera Term: scpsend command error", MB_OK | MB_ICONERROR);
2081     send_success:
2082     FreeFileVar(&SendVar); // �������Y������
2083    
2084     } else {
2085     FreeFileVar(&SendVar);
2086    
2087     }
2088     }
2089     else {
2090     SendVar->DirLen = 0;
2091     ts.TransBin = 0;
2092     FileSendStart();
2093    
2094     }
2095     }
2096     }
2097     else
2098     FreeFileVar(&SendVar);
2099     }
2100     DragFinish(hDropInfo);
2101     }
2102    
2103     void CVTWindow::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
2104     {
2105     #ifndef WINDOW_MAXMIMUM_ENABLED
2106     lpMMI->ptMaxSize.x = 10000;
2107     lpMMI->ptMaxSize.y = 10000;
2108     lpMMI->ptMaxTrackSize.x = 10000;
2109     lpMMI->ptMaxTrackSize.y = 10000;
2110     #endif
2111     }
2112    
2113     void CVTWindow::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
2114     {
2115     int Func;
2116    
2117     switch (nSBCode) {
2118     case SB_BOTTOM:
2119     Func = SCROLL_BOTTOM;
2120     break;
2121     case SB_ENDSCROLL:
2122     return;
2123     case SB_LINEDOWN:
2124     Func = SCROLL_LINEDOWN;
2125     break;
2126     case SB_LINEUP:
2127     Func = SCROLL_LINEUP;
2128     break;
2129     case SB_PAGEDOWN:
2130     Func = SCROLL_PAGEDOWN;
2131     break;
2132     case SB_PAGEUP:
2133     Func = SCROLL_PAGEUP;
2134     break;
2135     case SB_THUMBPOSITION:
2136     case SB_THUMBTRACK:
2137     Func = SCROLL_POS;
2138     break;
2139     case SB_TOP:
2140     Func = SCROLL_TOP;
2141     break;
2142     default:
2143     return;
2144     }
2145     DispHScroll(Func,nPos);
2146     }
2147    
2148     void CVTWindow::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
2149     {
2150     InitMenuPopup(pPopupMenu->m_hMenu);
2151     }
2152    
2153     void CVTWindow::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
2154     {
2155     BYTE KeyState[256];
2156     MSG M;
2157    
2158     switch (KeyDown(HVTWin,nChar,nRepCnt,nFlags & 0x1ff)) {
2159     case KEYDOWN_OTHER:
2160     break;
2161     case KEYDOWN_CONTROL:
2162     return;
2163     case KEYDOWN_COMMOUT:
2164     /* �����s�����������X�N���[����������������
2165     �����[�g�����L�[�������M���X�N���[�������� */
2166 doda 4469 if (ts.AutoScrollOnlyInBottomLine != 0 && WinOrgY != 0) {
2167 maya 3227 DispVScroll(SCROLL_BOTTOM, 0);
2168     }
2169     return;
2170     }
2171    
2172 doda 4519 if (MetaKey(ts.MetaKey) && (nFlags & 0x2000) != 0)
2173 doda 4414 {
2174 doda 4712 PeekMessage((LPMSG)&M,HVTWin,WM_CHAR,WM_CHAR,PM_REMOVE);
2175 maya 3227 /* for Ctrl+Alt+Key combination */
2176     GetKeyboardState((PBYTE)KeyState);
2177     KeyState[VK_MENU] = 0;
2178     SetKeyboardState((PBYTE)KeyState);
2179     M.hwnd = HVTWin;
2180     M.message = WM_KEYDOWN;
2181     M.wParam = nChar;
2182     M.lParam = MAKELONG(nRepCnt,nFlags & 0xdfff);
2183     TranslateMessage(&M);
2184     }
2185    
2186     }
2187    
2188     void CVTWindow::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
2189     {
2190     KeyUp(nChar);
2191     }
2192    
2193     void CVTWindow::OnKillFocus(CWnd* pNewWnd)
2194     {
2195     DispDestroyCaret();
2196     FocusReport(FALSE);
2197     CFrameWnd::OnKillFocus(pNewWnd);
2198    
2199 maya 3392 if (IsCaretOn()) {
2200 maya 3227 CaretKillFocus(TRUE);
2201 maya 3392 }
2202 maya 3227 }
2203    
2204     void CVTWindow::OnLButtonDblClk(UINT nFlags, CPoint point)
2205     {
2206 maya 3392 if (LButton || MButton || RButton) {
2207 maya 3227 return;
2208 maya 3392 }
2209 maya 3227
2210     DblClkX = point.x;
2211     DblClkY = point.y;
2212    
2213 doda 3992 if (MouseReport(IdMouseEventBtnDown, IdLeftButton, DblClkX, DblClkY)) {
2214 maya 3227 return;
2215 maya 3392 }
2216 maya 3227
2217 doda 3992 if (BuffUrlDblClk(DblClkX, DblClkY)) { // �u���E�U�����o���������������������B (2005.4.3 yutaka)
2218     return;
2219     }
2220    
2221 maya 3227 BuffDblClk(DblClkX, DblClkY);
2222    
2223     LButton = TRUE;
2224     DblClk = TRUE;
2225     AfterDblClk = TRUE;
2226     ::SetTimer(HVTWin, IdDblClkTimer, GetDoubleClickTime(), NULL);
2227    
2228     /* for AutoScrolling */
2229     ::SetCapture(HVTWin);
2230     ::SetTimer(HVTWin, IdScrollTimer, 100, NULL);
2231     }
2232    
2233