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 5883 - (hide annotations) (download) (as text)
Sat May 23 12:50:25 2015 UTC (8 years, 10 months ago) by yutakapon
Original Path: trunk/teraterm/teraterm/vtwin.cpp
File MIME type: text/x-c++src
File size: 162036 byte(s)
チケット #34943 設定フォルダを開く

案3に変更する。
Eterm look-feelの設定を削除した。

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