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 2658 - (hide annotations) (download) (as text)
Sat Feb 14 16:32:40 2009 UTC (15 years, 1 month ago) by yutakapon
Original Path: teraterm/trunk/teraterm/teraterm.cpp
File MIME type: text/x-c++src
File size: 3885 byte(s)
VS2005でビルドされたバイナリが、Windows95でも起動できるようにするために、IsDebuggerPresent() の
シンボルを追加した。

1 maya 2476 /* 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     #ifdef _DEBUG
26     #define new DEBUG_NEW
27     #undef THIS_FILE
28     static char THIS_FILE[] = __FILE__;
29     #endif
30    
31     BEGIN_MESSAGE_MAP(CTeraApp, CWinApp)
32     //{{AFX_MSG_MAP(CTeraApp)
33     //}}AFX_MSG_MAP
34     END_MESSAGE_MAP()
35    
36     CTeraApp::CTeraApp()
37     {
38     }
39    
40     // CTeraApp instance
41     CTeraApp theApp;
42    
43 yutakapon 2658 // VS2005でビルドされたバイナリが Windows95 でも起動できるようにするために、
44     // IsDebuggerPresent()のシンボル定義を追加する。
45     // さらにWindows Sockets2.0のインストールも必要。
46     EXTERN_C BOOL WINAPI _imp__IsDebuggerPresent(void)
47     {
48     return FALSE;
49     }
50    
51 maya 2476 // CTeraApp initialization
52     BOOL CTeraApp::InitInstance()
53     {
54     // インストーラで実行を検出するために mutex を作成する (2006.8.12 maya)
55     // 2重起動防止のためではないので、特に返り値は見ない
56     HANDLE hMutex;
57     hMutex = CreateMutex(NULL, TRUE, "TeraTermProAppMutex");
58    
59     hInst = m_hInstance;
60     m_pMainWnd = new CVTWindow();
61     pVTWin = m_pMainWnd;
62     return TRUE;
63     }
64    
65     int CTeraApp::ExitInstance()
66     {
67     return CWinApp::ExitInstance();
68     }
69    
70     // Tera Term main engine
71     BOOL CTeraApp::OnIdle(LONG lCount)
72     {
73     static int Busy = 2;
74     int Change, nx, ny;
75     BOOL Size;
76    
77     if (lCount==0) Busy = 2;
78    
79     if (cv.Ready)
80     {
81     /* Sender */
82     CommSend(&cv);
83    
84     /* Parser */
85     if ((cv.HLogBuf!=NULL) && (cv.LogBuf==NULL))
86     cv.LogBuf = (PCHAR)GlobalLock(cv.HLogBuf);
87    
88     if ((cv.HBinBuf!=NULL) && (cv.BinBuf==NULL))
89     cv.BinBuf = (PCHAR)GlobalLock(cv.HBinBuf);
90    
91     if ((TelStatus==TelIdle) && cv.TelMode)
92     TelStatus = TelIAC;
93    
94     if (TelStatus != TelIdle)
95     {
96     ParseTel(&Size,&nx,&ny);
97     if (Size) {
98     LockBuffer();
99     ChangeTerminalSize(nx,ny);
100     UnlockBuffer();
101     }
102     }
103     else {
104     if (cv.ProtoFlag) Change = ProtoDlgParse();
105     else {
106     switch (ActiveWin) {
107     case IdVT:
108     Change = ((CVTWindow*)pVTWin)->Parse();
109     // TEK windowのアクティブ中に pause を使うと、CPU使用率100%となる
110     // 現象への暫定対処。(2006.2.6 yutaka)
111     // 待ち時間をなくし、コンテキストスイッチだけにする。(2006.3.20 yutaka)
112     Sleep(0);
113     break;
114    
115     case IdTEK:
116     if (pTEKWin != NULL) {
117     Change = ((CTEKWindow*)pTEKWin)->Parse();
118     // TEK windowのアクティブ中に pause を使うと、CPU使用率100%となる
119     // 現象への暫定対処。(2006.2.6 yutaka)
120     Sleep(1);
121     }
122     else
123     Change = IdVT;
124     break;
125    
126     default:
127     Change = 0;
128     }
129    
130     switch (Change) {
131     case IdVT: VTActivate(); break;
132     case IdTEK: ((CVTWindow*)pVTWin)->OpenTEK(); break;
133     }
134     }
135     }
136    
137     if (cv.LogBuf!=NULL)
138     {
139     if (FileLog) LogToFile();
140     if (DDELog && AdvFlag) DDEAdv();
141     GlobalUnlock(cv.HLogBuf);
142     cv.LogBuf = NULL;
143     }
144    
145     if (cv.BinBuf!=NULL)
146     {
147     if (BinLog) LogToFile();
148     GlobalUnlock(cv.HBinBuf);
149     cv.BinBuf = NULL;
150     }
151    
152     /* Talker */
153     switch (TalkStatus) {
154     case IdTalkCB: CBSend(); break; /* clip board */
155     case IdTalkFile: FileSend(); break; /* file */
156     }
157    
158     /* Receiver */
159     if (DDELog && cv.DCount >0) {
160     // ログバッファがまだDDEクライアントへ送られていない場合は、
161     // TCPパケットの受信を行わない。
162     // 連続して受信を行うと、ログバッファがラウンドロビンにより未送信のデータを
163     // 上書きしてしまう可能性がある。(2007.6.14 yutaka)
164    
165     } else {
166     CommReceive(&cv);
167     }
168    
169     }
170    
171     if (cv.Ready &&
172     (cv.RRQ || (cv.OutBuffCount>0) || (cv.InBuffCount>0) ||
173     (cv.LCount>0) || (cv.BCount>0) || (cv.DCount>0)) )
174     Busy = 2;
175     else
176     Busy--;
177    
178     return (Busy>0);
179     }
180    
181     BOOL CTeraApp::PreTranslateMessage(MSG* pMsg)
182     {
183     if (ts.MetaKey>0)
184     return FALSE; /* ignore accelerator keys */
185     else
186     return CWinApp::PreTranslateMessage(pMsg);
187     }

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