Develop and Download Open Source Software

Browse Subversion Repository

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3392 - (hide annotations) (download) (as text)
Tue May 12 11:55:27 2009 UTC (14 years, 11 months ago) by maya
Original Path: trunk/teraterm/teraterm/teraterm.cpp
File MIME type: text/x-c++src
File size: 3956 byte(s)
インデントを調整。コード的な変更はないはず。
1 maya 3227 /* Tera Term
2     Copyright(C) 1994-1998 T. Teranishi
3     All rights reserved. */
4    
5     /* TERATERM.EXE, main */
6    
7     #include "stdafx.h"
8     #include "teraterm.h"
9     #include "tttypes.h"
10     #include "commlib.h"
11     #include "ttwinman.h"
12     #include "buffer.h"
13     #include "vtterm.h"
14     #include "vtwin.h"
15     #include "clipboar.h"
16     #include "ttftypes.h"
17     #include "filesys.h"
18     #include "telnet.h"
19     #include "tektypes.h"
20     #include "tekwin.h"
21     #include "ttdde.h"
22    
23     #include "teraapp.h"
24    
25     #include "compat_w95.h"
26    
27     #ifdef _DEBUG
28     #define new DEBUG_NEW
29     #undef THIS_FILE
30     static char THIS_FILE[] = __FILE__;
31     #endif
32    
33     BEGIN_MESSAGE_MAP(CTeraApp, CWinApp)
34     //{{AFX_MSG_MAP(CTeraApp)
35     //}}AFX_MSG_MAP
36     END_MESSAGE_MAP()
37    
38     CTeraApp::CTeraApp()
39     {
40     }
41    
42     // CTeraApp instance
43     CTeraApp theApp;
44    
45    
46    
47    
48    
49     // CTeraApp initialization
50     BOOL CTeraApp::InitInstance()
51     {
52 maya 3392 // インストーラで実行を検出するために mutex を作成する (2006.8.12 maya)
53     // 2重起動防止のためではないので、特に返り値は見ない
54     HANDLE hMutex;
55     hMutex = CreateMutex(NULL, TRUE, "TeraTermProAppMutex");
56 maya 3227
57 maya 3392 hInst = m_hInstance;
58     m_pMainWnd = new CVTWindow();
59     pVTWin = m_pMainWnd;
60     return TRUE;
61 maya 3227 }
62    
63     int CTeraApp::ExitInstance()
64     {
65 maya 3392 return CWinApp::ExitInstance();
66 maya 3227 }
67    
68     // Tera Term main engine
69     BOOL CTeraApp::OnIdle(LONG lCount)
70     {
71     static int Busy = 2;
72     int Change, nx, ny;
73     BOOL Size;
74    
75     if (lCount==0) Busy = 2;
76    
77     if (cv.Ready)
78     {
79     /* Sender */
80     CommSend(&cv);
81    
82     /* Parser */
83     if ((cv.HLogBuf!=NULL) && (cv.LogBuf==NULL))
84     cv.LogBuf = (PCHAR)GlobalLock(cv.HLogBuf);
85    
86     if ((cv.HBinBuf!=NULL) && (cv.BinBuf==NULL))
87     cv.BinBuf = (PCHAR)GlobalLock(cv.HBinBuf);
88    
89     if ((TelStatus==TelIdle) && cv.TelMode)
90     TelStatus = TelIAC;
91    
92     if (TelStatus != TelIdle)
93     {
94     ParseTel(&Size,&nx,&ny);
95     if (Size) {
96     LockBuffer();
97     ChangeTerminalSize(nx,ny);
98     UnlockBuffer();
99     }
100     }
101     else {
102     if (cv.ProtoFlag) Change = ProtoDlgParse();
103     else {
104     switch (ActiveWin) {
105     case IdVT:
106     Change = ((CVTWindow*)pVTWin)->Parse();
107     // TEK windowのアクティブ中に pause を使うと、CPU使用率100%となる
108     // 現象への暫定対処。(2006.2.6 yutaka)
109     // 待ち時間をなくし、コンテキストスイッチだけにする。(2006.3.20 yutaka)
110     Sleep(0);
111     break;
112    
113     case IdTEK:
114     if (pTEKWin != NULL) {
115     Change = ((CTEKWindow*)pTEKWin)->Parse();
116     // TEK windowのアクティブ中に pause を使うと、CPU使用率100%となる
117     // 現象への暫定対処。(2006.2.6 yutaka)
118     Sleep(1);
119     }
120 maya 3392 else {
121 maya 3227 Change = IdVT;
122 maya 3392 }
123 maya 3227 break;
124    
125     default:
126     Change = 0;
127     }
128    
129     switch (Change) {
130 maya 3392 case IdVT:
131     VTActivate();
132     break;
133     case IdTEK:
134     ((CVTWindow*)pVTWin)->OpenTEK();
135     break;
136 maya 3227 }
137     }
138     }
139    
140     if (cv.LogBuf!=NULL)
141     {
142 maya 3392 if (FileLog) {
143     LogToFile();
144     }
145     if (DDELog && AdvFlag) {
146     DDEAdv();
147     }
148 maya 3227 GlobalUnlock(cv.HLogBuf);
149     cv.LogBuf = NULL;
150     }
151    
152     if (cv.BinBuf!=NULL)
153     {
154 maya 3392 if (BinLog) {
155     LogToFile();
156     }
157 maya 3227 GlobalUnlock(cv.HBinBuf);
158     cv.BinBuf = NULL;
159     }
160    
161     /* Talker */
162     switch (TalkStatus) {
163 maya 3392 case IdTalkCB:
164     CBSend();
165     break; /* clip board */
166     case IdTalkFile:
167     FileSend();
168     break; /* file */
169 maya 3227 }
170    
171     /* Receiver */
172     if (DDELog && cv.DCount >0) {
173     // ログバッファがまだDDEクライアントへ送られていない場合は、
174     // TCPパケットの受信を行わない。
175     // 連続して受信を行うと、ログバッファがラウンドロビンにより未送信のデータを
176     // 上書きしてしまう可能性がある。(2007.6.14 yutaka)
177    
178     } else {
179     CommReceive(&cv);
180     }
181    
182     }
183    
184     if (cv.Ready &&
185 maya 3392 (cv.RRQ || (cv.OutBuffCount>0) || (cv.InBuffCount>0) || (cv.LCount>0) || (cv.BCount>0) || (cv.DCount>0)) ) {
186 maya 3227 Busy = 2;
187 maya 3392 }
188     else {
189 maya 3227 Busy--;
190 maya 3392 }
191 maya 3227
192     return (Busy>0);
193     }
194    
195     BOOL CTeraApp::PreTranslateMessage(MSG* pMsg)
196     {
197 maya 3392 if (ts.MetaKey>0) {
198     return FALSE; /* ignore accelerator keys */
199     }
200     else {
201     return CWinApp::PreTranslateMessage(pMsg);
202     }
203 maya 3227 }

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