Showing
12 changed files
with
464 additions
and
495 deletions
| ... | ... | @@ -13,9 +13,9 @@ |
| 13 | 13 | PURPOSE: Implement the About dialog box for the program. |
| 14 | 14 | |
| 15 | 15 | FUNCTIONS: |
| 16 | - CmdAbout - Creates the About dialog in response to menu selection | |
| 17 | - AboutDlgProc - Processes messages for the About dialog | |
| 18 | - InitAboutDlg - Initialzes about dialog controls | |
| 16 | + CmdAbout - 创建About对话框以响应菜单选择 | |
| 17 | + AboutDlgProc - 处理关于对话框的消息 | |
| 18 | + InitAboutDlg - 初始化about对话框控件 | |
| 19 | 19 | |
| 20 | 20 | -----------------------------------------------------------------------------*/ |
| 21 | 21 | |
| ... | ... | @@ -24,7 +24,7 @@ |
| 24 | 24 | #include "mttty.h" |
| 25 | 25 | |
| 26 | 26 | /* |
| 27 | - Prototypes for functions called only in this file | |
| 27 | + 仅在此文件中调用的函数原型 | |
| 28 | 28 | */ |
| 29 | 29 | BOOL CALLBACK AboutDlgProc( HWND, UINT, WPARAM, LPARAM ); |
| 30 | 30 | UINT InitAboutDlg( HWND ); |
| ... | ... | @@ -33,10 +33,10 @@ UINT InitAboutDlg( HWND ); |
| 33 | 33 | |
| 34 | 34 | FUNCTION: CmdAbout( HWND ) |
| 35 | 35 | |
| 36 | -PARAMETERS: | |
| 37 | - hwnd - Owner of the window | |
| 36 | +参数: | |
| 37 | +hwnd -窗口的所有者 | |
| 38 | 38 | |
| 39 | -PURPOSE: Creates the modal About dialog | |
| 39 | +创建模态About对话框 | |
| 40 | 40 | |
| 41 | 41 | -----------------------------------------------------------------------------*/ |
| 42 | 42 | BOOL CmdAbout(HWND hwnd) |
| ... | ... | @@ -49,12 +49,10 @@ BOOL CmdAbout(HWND hwnd) |
| 49 | 49 | |
| 50 | 50 | FUNCTION: InitAboutDlg( HWND ) |
| 51 | 51 | |
| 52 | -PURPOSE: Initializes the modal About dialog | |
| 53 | - | |
| 52 | +初始化modal About对话框 | |
| 54 | 53 | PARMATETERS: |
| 55 | 54 | hDlg - Dialog window handle |
| 56 | - | |
| 57 | -COMMENTS: Sets the icon animation timer and the version info. | |
| 55 | +设置图标动画计时器和版本信息。 | |
| 58 | 56 | |
| 59 | 57 | HISTORY: Date: Author: Comment: |
| 60 | 58 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -89,15 +87,12 @@ UINT InitAboutDlg(HWND hDlg) |
| 89 | 87 | /*----------------------------------------------------------------------------- |
| 90 | 88 | |
| 91 | 89 | FUNCTION: AboutDlgProc(HWND, UINT, WPARAM, LPARAM) |
| 92 | - | |
| 93 | -PURPOSE: Dialog procedure for the "About Box" | |
| 94 | - | |
| 90 | +关于对话框的对话程序 | |
| 95 | 91 | PARAMETERS: |
| 96 | - hdlg - dialog window handle | |
| 97 | - uMessage - window message | |
| 98 | - wparam - message parameter (depends on message value) | |
| 99 | - lparam - message prarmeter (depends on message value) | |
| 100 | - | |
| 92 | +hdlg 对话框窗口句柄 | |
| 93 | +uMessage 窗口消息 | |
| 94 | +wparam 消息参数(取决于消息值) | |
| 95 | +lparam 消息参数(取决于消息值) | |
| 101 | 96 | HISTORY: Date: Author: Comment: |
| 102 | 97 | 10/27/95 AllenD Wrote it |
| 103 | 98 | |
| ... | ... | @@ -116,7 +111,7 @@ BOOL CALLBACK AboutDlgProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lpara |
| 116 | 111 | |
| 117 | 112 | case WM_TIMER: |
| 118 | 113 | /* |
| 119 | - when timer goes off, then change to next icon | |
| 114 | + 当计时器停止,然后改变到下一个图标 | |
| 120 | 115 | */ |
| 121 | 116 | { |
| 122 | 117 | HICON hIcon; | ... | ... |
| ... | ... | @@ -15,11 +15,10 @@ |
| 15 | 15 | called to report errors. |
| 16 | 16 | |
| 17 | 17 | FUNCTIONS: |
| 18 | - ErrorExtender - Calls FormatMessage to translate error code to | |
| 19 | - error text | |
| 20 | - ErrorReporter - Reports errors to user | |
| 21 | - ErrorHandler - Reports errors, then exits the process | |
| 22 | - ErrorInComm - Reports errors, closes comm connection, then exits | |
| 18 | + ErrorExtender - 调用FormatMessage将错误代码转换为错误文本 | |
| 19 | + ErrorReporter - 向用户报告错误 | |
| 20 | + ErrorHandler -报告错误,然后退出进程 | |
| 21 | + ErrorInComm - 报告错误,关闭通信连接,然后退出 | |
| 23 | 22 | |
| 24 | 23 | -----------------------------------------------------------------------------*/ |
| 25 | 24 | |
| ... | ... | @@ -71,13 +70,12 @@ DWORD ErrorExtender(DWORD dwError, char ** szBuffer) |
| 71 | 70 | /*----------------------------------------------------------------------------- |
| 72 | 71 | |
| 73 | 72 | FUNCTION: ErrorReporter(char *) |
| 74 | - | |
| 75 | -PURPOSE: Report error to user | |
| 73 | +向用户报告错误 | |
| 76 | 74 | |
| 77 | 75 | PARAMETERS: |
| 78 | - szMessage - Error message from app | |
| 76 | + szMessage - 来自app的错误消息 | |
| 79 | 77 | |
| 80 | -COMMENTS: Reports error string in console and in debugger | |
| 78 | +COMMENTS: 报告控制台和调试器中的错误字符串 | |
| 81 | 79 | |
| 82 | 80 | HISTORY: Date: Author: Comment: |
| 83 | 81 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -94,13 +92,13 @@ void ErrorReporter(char * szMessage) |
| 94 | 92 | dwErr = GetLastError(); |
| 95 | 93 | |
| 96 | 94 | /* |
| 97 | - Get error string from system | |
| 95 | + 从系统获取错误字符串 | |
| 98 | 96 | */ |
| 99 | 97 | dwExtSize = ErrorExtender(dwErr, &szExtended); |
| 100 | 98 | |
| 101 | 99 | /* |
| 102 | - allocate buffer for error string from system, passed in string | |
| 103 | - and extra stuff from the szFormat string | |
| 100 | + 为系统中传入的错误字符串分配缓冲区 | |
| 101 | + 以及szFormat字符串中的额外内容 | |
| 104 | 102 | */ |
| 105 | 103 | szFinal = LocalAlloc(LPTR, strlen(szMessage) + dwExtSize + 30); |
| 106 | 104 | |
| ... | ... | @@ -111,14 +109,14 @@ void ErrorReporter(char * szMessage) |
| 111 | 109 | |
| 112 | 110 | OutputDebugString(szFinal); |
| 113 | 111 | |
| 114 | - if (DISPLAYERRORS(TTYInfo)) | |
| 112 | + if (TTYInfo.fDisplayErrors) | |
| 115 | 113 | MessageBox(ghwndMain, szFinal, NULL, MB_OK); |
| 116 | 114 | |
| 117 | 115 | LocalFree(szFinal); // free final buffer |
| 118 | 116 | } |
| 119 | 117 | |
| 120 | 118 | /* |
| 121 | - free extended string buffer | |
| 119 | + 释放扩展字符串缓冲区 | |
| 122 | 120 | */ |
| 123 | 121 | LocalFree(szExtended); |
| 124 | 122 | |
| ... | ... | @@ -130,10 +128,10 @@ void ErrorReporter(char * szMessage) |
| 130 | 128 | |
| 131 | 129 | FUNCTION: ErrorHandler( char * ) |
| 132 | 130 | |
| 133 | -PURPOSE: Handle a fatal error (before comm port is opened) | |
| 131 | +PURPOSE: 处理一个致命错误(在comm端口打开之前) | |
| 134 | 132 | |
| 135 | 133 | PARAMETERS: |
| 136 | - szMessage - Error message from app | |
| 134 | + szMessage - 来自app的错误消息 | |
| 137 | 135 | |
| 138 | 136 | HISTORY: Date: Author: Comment: |
| 139 | 137 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -150,10 +148,10 @@ void ErrorHandler(char * szMessage) |
| 150 | 148 | |
| 151 | 149 | FUNCTION: ErrorInComm( char * ) |
| 152 | 150 | |
| 153 | -PURPOSE: Handle a fatal error after comm port is opened | |
| 151 | +PURPOSE: 在comm端口打开后处理一个致命错误 | |
| 154 | 152 | |
| 155 | 153 | PARAMETERS: |
| 156 | - szMessage - Error message from app | |
| 154 | + szMessage - 来自app的错误消息 | |
| 157 | 155 | |
| 158 | 156 | HISTORY: Date: Author: Comment: |
| 159 | 157 | 10/27/95 AllenD Wrote it | ... | ... |
| ... | ... | @@ -10,23 +10,20 @@ |
| 10 | 10 | |
| 11 | 11 | MODULE: Init.c |
| 12 | 12 | |
| 13 | - PURPOSE: Intializes global data and comm port connects. | |
| 14 | - Closes comm ports and cleans up global data. | |
| 13 | + PURPOSE: 初始化全局数据和通信端口连接。 关闭通信端口并清除全局数据。 | |
| 15 | 14 | |
| 16 | 15 | FUNCTIONS: |
| 17 | - GlobalInitialize - Init global variables and system objects | |
| 18 | - GlobalCleanup - cleanup global variables and system objects | |
| 19 | - ClearTTYContents - Clears the tty buffer | |
| 20 | - InitNewFont - Creates a new font for the TTY child window | |
| 21 | - CreateTTYInfo - Creates the dynamic tty info structure controlling | |
| 22 | - behavior of tty | |
| 23 | - DestroyTTYInfo - deallocates tty info structure | |
| 24 | - StartThreads - Starts worker threads when a port is opened | |
| 25 | - SetupCommPort - Opens the port for the first time | |
| 26 | - WaitForThreads - Sets the thread exit event and wait for worker | |
| 27 | - threads to exit | |
| 28 | - BreakDownCommPort - Closes a connection to the comm port | |
| 29 | - DisconnectOK - Asks user if it is ok to disconnect | |
| 16 | + GlobalInitialize - 初始化全局变量和系统对象 | |
| 17 | + GlobalCleanup - 清除全局变量和系统对象 | |
| 18 | + ClearTTYContents - 清除tty缓冲区 | |
| 19 | + InitNewFont - 为TTY子窗口创建一个新字体 | |
| 20 | + CreateTTYInfo - 创建动态tty数据,控制tty的行为 | |
| 21 | + DestroyTTYInfo - 销毁tty信息数据 | |
| 22 | + StartThreads - 打开端口时启动工作线程 | |
| 23 | + SetupCommPort - 第一次打开港口 | |
| 24 | + WaitForThreads - 设置线程退出事件并等待工作线程退出 | |
| 25 | + BreakDownCommPort - 关闭与comm端口的连接 | |
| 26 | + DisconnectOK - 询问用户是否可以断开连接 | |
| 30 | 27 | |
| 31 | 28 | -----------------------------------------------------------------------------*/ |
| 32 | 29 | |
| ... | ... | @@ -42,10 +39,9 @@ DWORD WaitForThreads( DWORD ); |
| 42 | 39 | |
| 43 | 40 | /* |
| 44 | 41 | TimeoutsDefault |
| 45 | - We need ReadIntervalTimeout here to cause the read operations | |
| 46 | - that we do to actually timeout and become overlapped. | |
| 47 | - Specifying 1 here causes ReadFile to return very quickly | |
| 48 | - so that our reader thread will continue execution. | |
| 42 | + 我们需要ReadIntervalTimeout来执行读取操作 我们这样做是为了超时并变得重叠。 在这里指定1会使ReadFile很快返回 | |
| 43 | + 这样我们的读取线程将继续执行。 | |
| 44 | + 参考定义 | |
| 49 | 45 | */ |
| 50 | 46 | COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 }; |
| 51 | 47 | |
| ... | ... | @@ -54,9 +50,9 @@ COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 }; |
| 54 | 50 | |
| 55 | 51 | FUNCTION: GlobalInitialize |
| 56 | 52 | |
| 57 | -PURPOSE: Intializes global variables before any windows are created | |
| 53 | +PURPOSE: 在创建任何窗口之前初始化全局变量 | |
| 58 | 54 | |
| 59 | -COMMENTS: Partner to GlobalCleanup | |
| 55 | +COMMENTS: 相应函数 GlobalCleanup | |
| 60 | 56 | |
| 61 | 57 | HISTORY: Date: Author: Comment: |
| 62 | 58 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -68,37 +64,37 @@ void GlobalInitialize() |
| 68 | 64 | |
| 69 | 65 | // |
| 70 | 66 | // critical sections in status reporting & node management |
| 71 | - // | |
| 67 | + // 初始化互斥对象 | |
| 72 | 68 | InitializeCriticalSection(&gStatusCritical); |
| 73 | 69 | InitializeCriticalSection(&gcsWriterHeap); |
| 74 | 70 | InitializeCriticalSection(&gcsDataHeap); |
| 75 | 71 | |
| 76 | 72 | // |
| 77 | - // status message event | |
| 73 | + // 状态消息事件 | |
| 78 | 74 | // |
| 79 | 75 | ghStatusMessageEvent = CreateEvent(NULL, FALSE, FALSE, NULL); |
| 80 | 76 | if (ghStatusMessageEvent == NULL) |
| 81 | 77 | ErrorReporter("CreateEvent (Status message event)"); |
| 82 | 78 | |
| 83 | 79 | // |
| 84 | - // thread exit event | |
| 80 | + //线程退出事件 | |
| 85 | 81 | // |
| 86 | 82 | ghThreadExitEvent = CreateEvent(NULL, TRUE, FALSE, NULL); |
| 87 | 83 | if (ghThreadExitEvent == NULL) |
| 88 | 84 | ErrorReporter("CreateEvent (Thread exit event)"); |
| 89 | 85 | |
| 90 | 86 | // |
| 91 | - // used in file transfer status bar | |
| 87 | + //用于文件传输状态栏 | |
| 92 | 88 | // |
| 93 | 89 | InitCommonControls(); |
| 94 | 90 | |
| 95 | 91 | // |
| 96 | - // font for status reporting control | |
| 92 | + // 字体控制 | |
| 97 | 93 | // |
| 98 | 94 | ghFontStatus = CreateStatusEditFont(); |
| 99 | 95 | |
| 100 | 96 | // |
| 101 | - // the following are used for sizing the tty window and dialog windows | |
| 97 | + //下面的内容用于调整tty窗口和对话框窗口的大小 | |
| 102 | 98 | // |
| 103 | 99 | gwBaseY = HIWORD(GetDialogBaseUnits()); |
| 104 | 100 | cyMenuHeight = GetSystemMetrics(SM_CYMENU); |
| ... | ... | @@ -116,7 +112,7 @@ void GlobalInitialize() |
| 116 | 112 | |
| 117 | 113 | FUNCTION: GlobalCleanup |
| 118 | 114 | |
| 119 | -PURPOSE: Cleans up any global variables | |
| 115 | +PURPOSE: 清除所有全局变量 | |
| 120 | 116 | |
| 121 | 117 | COMMENTS: Partner to GlobalInitialize |
| 122 | 118 | |
| ... | ... | @@ -141,7 +137,7 @@ void GlobalCleanup() |
| 141 | 137 | |
| 142 | 138 | FUNCTION: ClearTTYContents |
| 143 | 139 | |
| 144 | -PURPOSE: Clears the tty buffer | |
| 140 | +PURPOSE: 清除tty缓冲区 | |
| 145 | 141 | |
| 146 | 142 | RETURN: always TRUE |
| 147 | 143 | |
| ... | ... | @@ -151,7 +147,7 @@ HISTORY: Date: Author: Comment: |
| 151 | 147 | -----------------------------------------------------------------------------*/ |
| 152 | 148 | BOOL ClearTTYContents() |
| 153 | 149 | { |
| 154 | - FillMemory(SCREEN(TTYInfo), MAXCOLS*MAXROWS, ' '); | |
| 150 | + FillMemory(TTYInfo.Screen, MAXCOLS*MAXROWS, ' '); | |
| 155 | 151 | return TRUE; |
| 156 | 152 | } |
| 157 | 153 | |
| ... | ... | @@ -160,14 +156,13 @@ BOOL ClearTTYContents() |
| 160 | 156 | |
| 161 | 157 | FUNCTION: InitNewFont(LOGFONT, COLORREF) |
| 162 | 158 | |
| 163 | -PURPOSE: Prepares a font for use in the TTY screen | |
| 159 | +PURPOSE: 初始化在TTY窗口上使用的字体 | |
| 164 | 160 | |
| 165 | 161 | PARAMETERS: |
| 166 | - LogFont - New logical font for tty screen | |
| 167 | - rgbColor - New color for TTY painting | |
| 162 | + LogFont - 逻辑字体 | |
| 163 | + rgbColor - 字体颜色 | |
| 168 | 164 | |
| 169 | -COMMENTS: Called when a new connection is made, or the TTY font | |
| 170 | - is changed by the user. | |
| 165 | +COMMENTS: 当用户建立新连接或更改TTY字体时调用。 | |
| 171 | 166 | |
| 172 | 167 | HISTORY: Date: Author: Comment: |
| 173 | 168 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -179,38 +174,37 @@ void InitNewFont(LOGFONT LogFont, COLORREF rgbColor) |
| 179 | 174 | HDC hDC; |
| 180 | 175 | |
| 181 | 176 | // |
| 182 | - // if old one exists, then I should delete it | |
| 177 | + //如果旧字体存在,那么我应该删除它 | |
| 183 | 178 | // |
| 184 | - if (HTTYFONT(TTYInfo)) | |
| 185 | - DeleteObject(HTTYFONT(TTYInfo)); | |
| 179 | + if (TTYInfo.hTTYFont) | |
| 180 | + DeleteObject(TTYInfo.hTTYFont); | |
| 186 | 181 | |
| 187 | - LFTTYFONT(TTYInfo) = LogFont; | |
| 188 | - HTTYFONT(TTYInfo) = CreateFontIndirect(&(LFTTYFONT(TTYInfo))); | |
| 189 | - FGCOLOR(TTYInfo) = rgbColor; | |
| 182 | + TTYInfo.lfTTYFont = LogFont; | |
| 183 | + TTYInfo.hTTYFont = CreateFontIndirect(&(TTYInfo.lfTTYFont)); | |
| 184 | + TTYInfo.rgbFGColor = rgbColor; | |
| 190 | 185 | |
| 191 | 186 | hDC = GetDC( ghwndMain ) ; |
| 192 | - SelectObject( hDC, HTTYFONT( TTYInfo ) ) ; | |
| 187 | + SelectObject( hDC, TTYInfo.hTTYFont ) ; | |
| 193 | 188 | GetTextMetrics( hDC, &tm ) ; |
| 194 | 189 | ReleaseDC( ghwndMain, hDC ) ; |
| 195 | 190 | |
| 196 | 191 | // |
| 197 | - // character width and height | |
| 192 | + //字符的宽度和高度 | |
| 198 | 193 | // |
| 199 | - XCHAR( TTYInfo ) = tm.tmAveCharWidth ; | |
| 200 | - YCHAR( TTYInfo ) = tm.tmHeight + tm.tmExternalLeading ; | |
| 194 | + TTYInfo.xChar = tm.tmAveCharWidth ; | |
| 195 | + TTYInfo.yChar = tm.tmHeight + tm.tmExternalLeading ; | |
| 201 | 196 | |
| 202 | - XOFFSET( TTYInfo ) = 0 ; | |
| 203 | - YOFFSET( TTYInfo ) = YCHAR(TTYInfo) * ROW(TTYInfo); | |
| 197 | + TTYInfo.xOffset = 0 ; | |
| 198 | + TTYInfo.yOffset = TTYInfo.yChar * TTYInfo.nRow; | |
| 204 | 199 | } |
| 205 | 200 | |
| 206 | 201 | /*----------------------------------------------------------------------------- |
| 207 | 202 | |
| 208 | 203 | FUNCTION: InitTTYInfo |
| 209 | 204 | |
| 210 | -PURPOSE: Initializes TTY structure | |
| 205 | +PURPOSE: 初始化TTY数据 | |
| 211 | 206 | |
| 212 | -COMMENTS: This structure is a collection of TTY attributes | |
| 213 | - used by all parts of this program | |
| 207 | +COMMENTS: 这个结构是这个程序所有部分使用的TTY属性的集合 | |
| 214 | 208 | |
| 215 | 209 | HISTORY: Date: Author: Comment: |
| 216 | 210 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -222,79 +216,79 @@ BOOL InitTTYInfo() |
| 222 | 216 | // |
| 223 | 217 | // initialize generial TTY info |
| 224 | 218 | // |
| 225 | - COMDEV( TTYInfo ) = NULL ; | |
| 226 | - CONNECTED( TTYInfo ) = FALSE ; | |
| 227 | - LOCALECHO( TTYInfo ) = FALSE ; | |
| 228 | - CURSORSTATE( TTYInfo ) = CS_HIDE ; | |
| 229 | - PORT( TTYInfo ) = 1 ; | |
| 230 | - BAUDRATE( TTYInfo ) = 921600 ; | |
| 231 | - BYTESIZE( TTYInfo ) = 8 ; | |
| 232 | - PARITY( TTYInfo ) = NOPARITY ; | |
| 233 | - STOPBITS( TTYInfo ) = ONESTOPBIT ; | |
| 234 | - AUTOWRAP( TTYInfo ) = TRUE; | |
| 235 | - NEWLINE( TTYInfo ) = FALSE; | |
| 236 | - XSIZE( TTYInfo ) = 0 ; | |
| 237 | - YSIZE( TTYInfo ) = 0 ; | |
| 238 | - XSCROLL( TTYInfo ) = 0 ; | |
| 239 | - YSCROLL( TTYInfo ) = 0 ; | |
| 240 | - COLUMN( TTYInfo ) = 0 ; | |
| 241 | - ROW( TTYInfo ) = MAXROWS - 1 ; | |
| 242 | - DISPLAYERRORS( TTYInfo ) = TRUE ; | |
| 219 | + TTYInfo.hCommPort = NULL ; | |
| 220 | + TTYInfo.fConnected = FALSE ; | |
| 221 | + TTYInfo.fLocalEcho = FALSE ; | |
| 222 | + TTYInfo.wCursorState = CS_HIDE ; | |
| 223 | + TTYInfo.bPort = 1 ; | |
| 224 | + TTYInfo.dwBaudRate = 921600 ; | |
| 225 | + TTYInfo.bByteSize = 8 ; | |
| 226 | + TTYInfo.bParity = NOPARITY ; | |
| 227 | + TTYInfo.bStopBits = ONESTOPBIT ; | |
| 228 | + TTYInfo.fAutowrap = TRUE; | |
| 229 | + TTYInfo.fNewLine = FALSE; | |
| 230 | + TTYInfo.xSize = 0 ; | |
| 231 | + TTYInfo.ySize = 0 ; | |
| 232 | + TTYInfo.xScroll = 0 ; | |
| 233 | + TTYInfo.yScroll = 0 ; | |
| 234 | + TTYInfo.nColumn = 0 ; | |
| 235 | + TTYInfo.nRow = MAXROWS - 1 ; | |
| 236 | + TTYInfo.fDisplayErrors = TRUE ; | |
| 243 | 237 | |
| 244 | 238 | // |
| 245 | 239 | // timeouts |
| 246 | 240 | // |
| 247 | - TIMEOUTSNEW( TTYInfo ) = gTimeoutsDefault; | |
| 241 | + TTYInfo.timeoutsnew = gTimeoutsDefault; | |
| 248 | 242 | |
| 249 | 243 | // |
| 250 | 244 | // read state and status events |
| 251 | 245 | // |
| 252 | 246 | gdwReceiveState = RECEIVE_TTY; |
| 253 | - EVENTFLAGS( TTYInfo ) = EVENTFLAGS_DEFAULT; | |
| 254 | - FLAGCHAR( TTYInfo ) = FLAGCHAR_DEFAULT; | |
| 247 | + TTYInfo.dwEventFlags = EVENTFLAGS_DEFAULT; | |
| 248 | + TTYInfo.chFlag = FLAGCHAR_DEFAULT; | |
| 255 | 249 | |
| 256 | 250 | // |
| 257 | 251 | // Flow Control Settings |
| 258 | 252 | // |
| 259 | - DTRCONTROL( TTYInfo ) = DTR_CONTROL_ENABLE; | |
| 260 | - RTSCONTROL( TTYInfo ) = RTS_CONTROL_ENABLE; | |
| 261 | - XONCHAR( TTYInfo ) = ASCII_XON; | |
| 262 | - XOFFCHAR( TTYInfo ) = ASCII_XOFF; | |
| 263 | - XONLIMIT( TTYInfo ) = 0; | |
| 264 | - XOFFLIMIT( TTYInfo ) = 0; | |
| 265 | - CTSOUTFLOW( TTYInfo ) = FALSE; | |
| 266 | - DSROUTFLOW( TTYInfo ) = FALSE; | |
| 267 | - DSRINFLOW( TTYInfo ) = FALSE; | |
| 268 | - XONXOFFOUTFLOW(TTYInfo) = FALSE; | |
| 269 | - XONXOFFINFLOW(TTYInfo) = FALSE; | |
| 270 | - TXAFTERXOFFSENT(TTYInfo) = FALSE; | |
| 271 | - | |
| 272 | - NOREADING(TTYInfo) = FALSE; | |
| 273 | - NOWRITING(TTYInfo) = FALSE; | |
| 274 | - NOEVENTS(TTYInfo) = FALSE; | |
| 275 | - NOSTATUS(TTYInfo) = FALSE; | |
| 276 | - SHOWTIMEOUTS(TTYInfo) = FALSE; | |
| 253 | + TTYInfo.fDtrControl = DTR_CONTROL_ENABLE; | |
| 254 | + TTYInfo.fRtsControl = RTS_CONTROL_ENABLE; | |
| 255 | + TTYInfo.chXON = ASCII_XON; | |
| 256 | + TTYInfo.chXOFF = ASCII_XOFF; | |
| 257 | + TTYInfo.wXONLimit = 0; | |
| 258 | + TTYInfo.wXOFFLimit = 0; | |
| 259 | + TTYInfo.fCTSOutFlow = FALSE; | |
| 260 | + TTYInfo.fDSROutFlow = FALSE; | |
| 261 | + TTYInfo.fDSRInFlow = FALSE; | |
| 262 | + TTYInfo.fXonXoffOutFlow = FALSE; | |
| 263 | + TTYInfo.fXonXoffInFlow = FALSE; | |
| 264 | + TTYInfo.fTXafterXoffSent = FALSE; | |
| 265 | + | |
| 266 | + TTYInfo.fNoReading = FALSE; | |
| 267 | + TTYInfo.fNoWriting = FALSE; | |
| 268 | + TTYInfo.fNoEvents = FALSE; | |
| 269 | + TTYInfo.fNoStatus = FALSE; | |
| 270 | + TTYInfo.fDisplayTimeouts = FALSE; | |
| 277 | 271 | |
| 278 | 272 | // |
| 279 | 273 | // setup default font information |
| 280 | 274 | // |
| 281 | - LFTTYFONT( TTYInfo ).lfHeight = 20 ; | |
| 282 | - LFTTYFONT( TTYInfo ).lfWidth = 0 ; | |
| 283 | - LFTTYFONT( TTYInfo ).lfEscapement = 0 ; | |
| 284 | - LFTTYFONT( TTYInfo ).lfOrientation = 0 ; | |
| 285 | - LFTTYFONT( TTYInfo ).lfWeight = 0 ; | |
| 286 | - LFTTYFONT( TTYInfo ).lfItalic = 0 ; | |
| 287 | - LFTTYFONT( TTYInfo ).lfUnderline = 0 ; | |
| 288 | - LFTTYFONT( TTYInfo ).lfStrikeOut = 0 ; | |
| 289 | - LFTTYFONT( TTYInfo ).lfCharSet = OEM_CHARSET ; | |
| 290 | - LFTTYFONT( TTYInfo ).lfOutPrecision = OUT_DEFAULT_PRECIS ; | |
| 291 | - LFTTYFONT( TTYInfo ).lfClipPrecision = CLIP_DEFAULT_PRECIS ; | |
| 292 | - LFTTYFONT( TTYInfo ).lfQuality = DEFAULT_QUALITY ; | |
| 293 | - LFTTYFONT( TTYInfo ).lfPitchAndFamily = FIXED_PITCH | FF_MODERN ; | |
| 294 | - strcpy( LFTTYFONT( TTYInfo ).lfFaceName, "宋体" ) ; | |
| 275 | + TTYInfo.lfTTYFont.lfHeight = 20 ; | |
| 276 | + TTYInfo.lfTTYFont.lfWidth = 0 ; | |
| 277 | + TTYInfo.lfTTYFont.lfEscapement = 0 ; | |
| 278 | + TTYInfo.lfTTYFont.lfOrientation = 0 ; | |
| 279 | + TTYInfo.lfTTYFont.lfWeight = 0 ; | |
| 280 | + TTYInfo.lfTTYFont.lfItalic = 0 ; | |
| 281 | + TTYInfo.lfTTYFont.lfUnderline = 0 ; | |
| 282 | + TTYInfo.lfTTYFont.lfStrikeOut = 0 ; | |
| 283 | + TTYInfo.lfTTYFont.lfCharSet = OEM_CHARSET ; | |
| 284 | + TTYInfo.lfTTYFont.lfOutPrecision = OUT_DEFAULT_PRECIS ; | |
| 285 | + TTYInfo.lfTTYFont.lfClipPrecision = CLIP_DEFAULT_PRECIS ; | |
| 286 | + TTYInfo.lfTTYFont.lfQuality = DEFAULT_QUALITY ; | |
| 287 | + TTYInfo.lfTTYFont.lfPitchAndFamily = FIXED_PITCH | FF_MODERN ; | |
| 288 | + strcpy( TTYInfo.lfTTYFont.lfFaceName, "宋体" ) ; | |
| 295 | 289 | TTYInfo.DownloadReday = FALSE; |
| 296 | 290 | |
| 297 | - InitNewFont( LFTTYFONT(TTYInfo), RGB(0,0,0)); | |
| 291 | + InitNewFont( TTYInfo.lfTTYFont, RGB(0,0,0)); | |
| 298 | 292 | |
| 299 | 293 | ClearTTYContents(); |
| 300 | 294 | |
| ... | ... | @@ -305,7 +299,7 @@ BOOL InitTTYInfo() |
| 305 | 299 | |
| 306 | 300 | FUNCTION: DestroyTTYInfo |
| 307 | 301 | |
| 308 | -PURPOSE: Frees objects associated with the TTYInfo structure | |
| 302 | +PURPOSE: 释放与TTYInfo结构体相关的对象 | |
| 309 | 303 | |
| 310 | 304 | HISTORY: Date: Author: Comment: |
| 311 | 305 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -314,14 +308,14 @@ HISTORY: Date: Author: Comment: |
| 314 | 308 | -----------------------------------------------------------------------------*/ |
| 315 | 309 | void DestroyTTYInfo() |
| 316 | 310 | { |
| 317 | - DeleteObject(HTTYFONT(TTYInfo)); | |
| 311 | + DeleteObject(TTYInfo.hTTYFont); | |
| 318 | 312 | } |
| 319 | 313 | |
| 320 | 314 | /*----------------------------------------------------------------------------- |
| 321 | 315 | |
| 322 | 316 | FUNCTION: StartThreads |
| 323 | 317 | |
| 324 | -PURPOSE: Creates the Reader/Status and Writer threads | |
| 318 | +PURPOSE:创建读取/状态和写入线程 | |
| 325 | 319 | |
| 326 | 320 | HISTORY: Date: Author: Comment: |
| 327 | 321 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -329,43 +323,27 @@ HISTORY: Date: Author: Comment: |
| 329 | 323 | -----------------------------------------------------------------------------*/ |
| 330 | 324 | void StartThreads(void) |
| 331 | 325 | { |
| 332 | - DWORD dwReadStatId; | |
| 333 | - DWORD dwWriterId; | |
| 334 | - | |
| 335 | - READSTATTHREAD(TTYInfo) = | |
| 336 | - CreateThread( NULL, | |
| 337 | - 0, | |
| 338 | - (LPTHREAD_START_ROUTINE) ReaderAndStatusProc, | |
| 339 | - (LPVOID) ghWndTTY, | |
| 340 | - 0, | |
| 341 | - &dwReadStatId); | |
| 342 | - | |
| 343 | - if (READSTATTHREAD(TTYInfo) == NULL) | |
| 344 | - ErrorInComm("CreateThread(Reader/Status)"); | |
| 345 | - | |
| 346 | - WRITERTHREAD(TTYInfo) = | |
| 347 | - CreateThread( NULL, | |
| 348 | - 0, | |
| 349 | - (LPTHREAD_START_ROUTINE) WriterProc, | |
| 350 | - (LPVOID) NULL, | |
| 351 | - 0, | |
| 352 | - &dwWriterId ); | |
| 353 | - | |
| 354 | - if (WRITERTHREAD(TTYInfo) == NULL) | |
| 355 | - ErrorInComm("CreateThread (Writer)"); | |
| 356 | - | |
| 357 | - return; | |
| 326 | + DWORD dwReadStatId; | |
| 327 | + DWORD dwWriterId; | |
| 328 | + TTYInfo.hReaderStatus = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ReaderAndStatusProc, (LPVOID) ghWndTTY, 0, &dwReadStatId); | |
| 329 | + if (TTYInfo.hReaderStatus == NULL) | |
| 330 | + ErrorInComm("CreateThread(Reader/Status)"); | |
| 331 | + TTYInfo.hWriter = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) WriterProc, (LPVOID) NULL, 0, &dwWriterId); | |
| 332 | + if (TTYInfo.hWriter == NULL) | |
| 333 | + ErrorInComm("CreateThread (Writer)"); | |
| 334 | + return; | |
| 358 | 335 | } |
| 359 | 336 | |
| 337 | + | |
| 338 | + | |
| 360 | 339 | /*----------------------------------------------------------------------------- |
| 361 | 340 | |
| 362 | 341 | FUNCTION: SetupCommPort( void ) |
| 363 | 342 | |
| 364 | -PURPOSE: Setup Communication Port with our settings | |
| 343 | +PURPOSE: 配置串口 | |
| 365 | 344 | |
| 366 | 345 | RETURN: |
| 367 | - Handle of comm port is successful | |
| 368 | - NULL is error occurs | |
| 346 | + 如果成功返回串口句柄, 否则返回NULL | |
| 369 | 347 | |
| 370 | 348 | HISTORY: Date: Author: Comment: |
| 371 | 349 | 10/27/95 AllenD Wrote it |
| ... | ... | @@ -375,17 +353,16 @@ HANDLE SetupCommPort() |
| 375 | 353 | { |
| 376 | 354 | int myintPort; |
| 377 | 355 | // |
| 378 | - // get tty settings from settings dialog | |
| 379 | - | |
| 380 | - // | |
| 356 | + //从设置对话框获取tty设置 | |
| 357 | + // | |
| 381 | 358 | UpdateTTYInfo(); |
| 382 | 359 | myintPort = atoi(gszPort+3); |
| 383 | 360 | |
| 384 | 361 | // |
| 385 | - // open communication port handle | |
| 362 | + //打开通信端口句柄 | |
| 386 | 363 | // |
| 387 | 364 | sprintf(gszPort, "\\\\.\\COM%d", myintPort);///可以显示COM10以上端口//add by itas109 2014-01-09 |
| 388 | - COMDEV( TTYInfo ) = CreateFile( gszPort, | |
| 365 | + TTYInfo.hCommPort = CreateFile( gszPort, | |
| 389 | 366 | GENERIC_READ | GENERIC_WRITE, |
| 390 | 367 | 0, |
| 391 | 368 | 0, |
| ... | ... | @@ -393,15 +370,13 @@ HANDLE SetupCommPort() |
| 393 | 370 | FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, |
| 394 | 371 | 0); |
| 395 | 372 | |
| 396 | - if (COMDEV(TTYInfo) == INVALID_HANDLE_VALUE) { | |
| 373 | + if (TTYInfo.hCommPort == INVALID_HANDLE_VALUE) { | |
| 397 | 374 | ErrorReporter("CreateFile"); |
| 398 | 375 | return NULL; |
| 399 | 376 | } |
| 400 | 377 | |
| 401 | - // | |
| 402 | - // Save original comm timeouts and set new ones | |
| 403 | - // | |
| 404 | - if (!GetCommTimeouts( COMDEV(TTYInfo), &(TIMEOUTSORIG(TTYInfo)))) | |
| 378 | + //设置新的超时参数 | |
| 379 | + if (!GetCommTimeouts( TTYInfo.hCommPort, &(TTYInfo.timeoutsorig))) | |
| 405 | 380 | ErrorReporter("GetCommTimeouts"); |
| 406 | 381 | |
| 407 | 382 | // |
| ... | ... | @@ -412,12 +387,12 @@ HANDLE SetupCommPort() |
| 412 | 387 | // |
| 413 | 388 | // set comm buffer sizes |
| 414 | 389 | // |
| 415 | - SetupComm(COMDEV(TTYInfo), MAX_READ_BUFFER, MAX_WRITE_BUFFER); | |
| 390 | + SetupComm(TTYInfo.hCommPort, MAX_READ_BUFFER, MAX_WRITE_BUFFER); | |
| 416 | 391 | |
| 417 | 392 | // |
| 418 | 393 | // raise DTR |
| 419 | 394 | // |
| 420 | - if (!EscapeCommFunction(COMDEV(TTYInfo), SETDTR)) | |
| 395 | + if (!EscapeCommFunction(TTYInfo.hCommPort, SETDTR)) | |
| 421 | 396 | ErrorReporter("EscapeCommFunction (SETDTR)"); |
| 422 | 397 | |
| 423 | 398 | // |
| ... | ... | @@ -428,9 +403,9 @@ HANDLE SetupCommPort() |
| 428 | 403 | // |
| 429 | 404 | // set overall connect flag |
| 430 | 405 | // |
| 431 | - CONNECTED( TTYInfo ) = TRUE ; | |
| 406 | + TTYInfo.fConnected = TRUE ; | |
| 432 | 407 | |
| 433 | - return COMDEV(TTYInfo); | |
| 408 | + return TTYInfo.hCommPort; | |
| 434 | 409 | } |
| 435 | 410 | |
| 436 | 411 | /*----------------------------------------------------------------------------- |
| ... | ... | @@ -456,8 +431,8 @@ DWORD WaitForThreads(DWORD dwTimeout) |
| 456 | 431 | HANDLE hThreads[2]; |
| 457 | 432 | DWORD dwRes; |
| 458 | 433 | |
| 459 | - hThreads[0] = READSTATTHREAD(TTYInfo); | |
| 460 | - hThreads[1] = WRITERTHREAD(TTYInfo); | |
| 434 | + hThreads[0] = TTYInfo.hReaderStatus; | |
| 435 | + hThreads[1] = TTYInfo.hWriter; | |
| 461 | 436 | |
| 462 | 437 | // |
| 463 | 438 | // set thread exit event here |
| ... | ... | @@ -474,10 +449,10 @@ DWORD WaitForThreads(DWORD dwTimeout) |
| 474 | 449 | |
| 475 | 450 | case WAIT_TIMEOUT: |
| 476 | 451 | |
| 477 | - if (WaitForSingleObject(READSTATTHREAD(TTYInfo), 0) == WAIT_TIMEOUT) | |
| 452 | + if (WaitForSingleObject(TTYInfo.hReaderStatus, 0) == WAIT_TIMEOUT) | |
| 478 | 453 | OutputDebugString("Reader/Status Thread didn't exit.\n\r"); |
| 479 | 454 | |
| 480 | - if (WaitForSingleObject(WRITERTHREAD(TTYInfo), 0) == WAIT_TIMEOUT) | |
| 455 | + if (WaitForSingleObject(TTYInfo.hWriter, 0) == WAIT_TIMEOUT) | |
| 481 | 456 | OutputDebugString("Writer Thread didn't exit.\n\r"); |
| 482 | 457 | |
| 483 | 458 | break; |
| ... | ... | @@ -515,10 +490,10 @@ HISTORY: Date: Author: Comment: |
| 515 | 490 | -----------------------------------------------------------------------------*/ |
| 516 | 491 | BOOL BreakDownCommPort() |
| 517 | 492 | { |
| 518 | - if (!CONNECTED(TTYInfo)) | |
| 493 | + if (!TTYInfo.fConnected) | |
| 519 | 494 | return FALSE; |
| 520 | 495 | |
| 521 | - CONNECTED( TTYInfo ) = FALSE; | |
| 496 | + TTYInfo.fConnected = FALSE; | |
| 522 | 497 | |
| 523 | 498 | // |
| 524 | 499 | // wait for the threads for a small period |
| ... | ... | @@ -534,24 +509,24 @@ BOOL BreakDownCommPort() |
| 534 | 509 | // |
| 535 | 510 | // lower DTR |
| 536 | 511 | // |
| 537 | - if (!EscapeCommFunction(COMDEV(TTYInfo), CLRDTR)) | |
| 512 | + if (!EscapeCommFunction(TTYInfo.hCommPort, CLRDTR)) | |
| 538 | 513 | ErrorReporter("EscapeCommFunction(CLRDTR)"); |
| 539 | 514 | |
| 540 | 515 | // |
| 541 | 516 | // restore original comm timeouts |
| 542 | 517 | // |
| 543 | - if (!SetCommTimeouts(COMDEV(TTYInfo), &(TIMEOUTSORIG(TTYInfo)))) | |
| 518 | + if (!SetCommTimeouts(TTYInfo.hCommPort, &(TTYInfo.timeoutsorig))) | |
| 544 | 519 | ErrorReporter("SetCommTimeouts (Restoration to original)"); |
| 545 | 520 | |
| 546 | 521 | // |
| 547 | 522 | // Purge reads/writes, input buffer and output buffer |
| 548 | 523 | // |
| 549 | - if (!PurgeComm(COMDEV(TTYInfo), PURGE_FLAGS)) | |
| 524 | + if (!PurgeComm(TTYInfo.hCommPort, PURGE_FLAGS)) | |
| 550 | 525 | ErrorReporter("PurgeComm"); |
| 551 | 526 | |
| 552 | - CloseHandle(COMDEV(TTYInfo)); | |
| 553 | - CloseHandle(READSTATTHREAD(TTYInfo)); | |
| 554 | - CloseHandle(WRITERTHREAD(TTYInfo)); | |
| 527 | + CloseHandle(TTYInfo.hCommPort); | |
| 528 | + CloseHandle(TTYInfo.hReaderStatus); | |
| 529 | + CloseHandle(TTYInfo.hWriter); | |
| 555 | 530 | |
| 556 | 531 | return TRUE; |
| 557 | 532 | } |
| ... | ... | @@ -572,7 +547,7 @@ HISTORY: Date: Author: Comment: |
| 572 | 547 | -----------------------------------------------------------------------------*/ |
| 573 | 548 | BOOL DisconnectOK() |
| 574 | 549 | { |
| 575 | - if (!CONNECTED(TTYInfo)) | |
| 550 | + if (!TTYInfo.fConnected) | |
| 576 | 551 | return TRUE; |
| 577 | 552 | |
| 578 | 553 | return ((MessageBox(ghwndMain, "OK to Disconnect?", gszPort, MB_YESNO)) == IDYES); | ... | ... |
| ... | ... | @@ -12,21 +12,20 @@ |
| 12 | 12 | PURPOSE: Program entry point and window management |
| 13 | 13 | |
| 14 | 14 | FUNCTIONS: |
| 15 | - WinMain - Program entry point | |
| 16 | - VersionCheck - Checks OS version to make sure we can run | |
| 17 | - InitializeApp - Global program initialization and window class | |
| 18 | - creation | |
| 19 | - MTTTYWndProc - main window procedure | |
| 20 | - CmdDispatch - Carries out menu commands | |
| 21 | - OpenTTYChildWindow - Creates the tty child window | |
| 22 | - ScrollTTYVert - Scroll TTY window vertically | |
| 23 | - ScrollTTYHorz - Scrolls TTY window horizontally | |
| 24 | - PaintTTY - Paints the TTY window | |
| 25 | - MoveTTYCursor - moves the tty cursor | |
| 26 | - SetTTYFocus - responds to tty window getting focus | |
| 27 | - KillTTYFocus - responds to tty window losing focus | |
| 28 | - SizeTTY - responds to tty window size changes | |
| 29 | - TTYChildProc - window procedure for TTY child window | |
| 15 | + WinMain - 程序入口点 | |
| 16 | + VersionCheck - 检查操作系统版本以确保我们可以运行 | |
| 17 | + InitializeApp - 全局程序初始化和窗口类创建 | |
| 18 | + MTTTYWndProc - 主窗口程序 | |
| 19 | + CmdDispatch - 执行菜单命令 | |
| 20 | + OpenTTYChildWindow - 创建tty子窗口 | |
| 21 | + ScrollTTYVert - 垂直滚动TTY窗口 | |
| 22 | + ScrollTTYHorz - 水平滚动TTY窗口 | |
| 23 | + PaintTTY - 在TTY窗口中绘制 | |
| 24 | + MoveTTYCursor - 移动tty光标 | |
| 25 | + SetTTYFocus - 响应tty窗口获得焦点 | |
| 26 | + KillTTYFocus - 响应tty窗口失去焦点 | |
| 27 | + SizeTTY - 响应tty窗口大小的变化 | |
| 28 | + TTYChildProc - 用于TTY子窗口的窗口程序 | |
| 30 | 29 | |
| 31 | 30 | -----------------------------------------------------------------------------*/ |
| 32 | 31 | |
| ... | ... | @@ -161,7 +160,7 @@ BOOL InitializeApp(HINSTANCE hInst, int nShowCmd) |
| 161 | 160 | } |
| 162 | 161 | |
| 163 | 162 | QuerySerialPortStatusEx(TTYInfo.unOpenedPortAry,2,255); |
| 164 | - BGCOLOR(TTYInfo) = RGB(255,255,255); | |
| 163 | + TTYInfo.rgbBGColor = RGB(255,255,255); | |
| 165 | 164 | |
| 166 | 165 | // |
| 167 | 166 | // setup program's tty child window class |
| ... | ... | @@ -236,7 +235,7 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) |
| 236 | 235 | OpenTTYChildWindow(hwnd); |
| 237 | 236 | OpenSettingsToolbar(hwnd); |
| 238 | 237 | OpenStatusToolbar(hwnd); |
| 239 | - ChangeConnection(hwnd, CONNECTED(TTYInfo)); | |
| 238 | + ChangeConnection(hwnd, TTYInfo.fConnected); | |
| 240 | 239 | break; |
| 241 | 240 | |
| 242 | 241 | case WM_DESTROY: |
| ... | ... | @@ -317,8 +316,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) |
| 317 | 316 | |
| 318 | 317 | case WM_CLOSE: |
| 319 | 318 | if (DisconnectOK()) { |
| 320 | - if (CONNECTED(TTYInfo)) { | |
| 321 | - if (TRANSFERRING(TTYInfo)) | |
| 319 | + if (TTYInfo.fConnected) { | |
| 320 | + if (TTYInfo.fTransferring) | |
| 322 | 321 | TransferFileTextEnd(); |
| 323 | 322 | BreakDownCommPort(); |
| 324 | 323 | } |
| ... | ... | @@ -406,7 +405,7 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam) |
| 406 | 405 | // was abort sent from the abort button? |
| 407 | 406 | if (LOWORD(lParam) == IDC_ABORTBTN) { |
| 408 | 407 | // am I in a transfer repeat? |
| 409 | - if (REPEATING(TTYInfo)) | |
| 408 | + if (TTYInfo.fRepeating) | |
| 410 | 409 | TransferRepeatDestroy(); |
| 411 | 410 | // am I in a normal recieve state, then stop sending |
| 412 | 411 | else if (gdwReceiveState == RECEIVE_TTY) |
| ... | ... | @@ -462,12 +461,12 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam) |
| 462 | 461 | |
| 463 | 462 | case ID_FILE_CONNECT: |
| 464 | 463 | if (SetupCommPort() != NULL) |
| 465 | - ChangeConnection(hwnd, CONNECTED(TTYInfo)); | |
| 464 | + ChangeConnection(hwnd, TTYInfo.fConnected); | |
| 466 | 465 | break; |
| 467 | 466 | |
| 468 | 467 | case ID_FILE_DISCONNECT: |
| 469 | 468 | if (BreakDownCommPort()) |
| 470 | - ChangeConnection(hwnd, CONNECTED(TTYInfo)); | |
| 469 | + ChangeConnection(hwnd, TTYInfo.fConnected); | |
| 471 | 470 | break; |
| 472 | 471 | |
| 473 | 472 | case ID_FILE_EXIT: |
| ... | ... | @@ -535,48 +534,48 @@ BOOL NEAR ScrollTTYVert( HWND hWnd, WORD wScrollCmd, WORD wScrollPos ) |
| 535 | 534 | switch (wScrollCmd) |
| 536 | 535 | { |
| 537 | 536 | case SB_TOP: |
| 538 | - nScrollAmt = -YOFFSET( TTYInfo ) ; | |
| 537 | + nScrollAmt = -TTYInfo.yOffset ; | |
| 539 | 538 | break ; |
| 540 | 539 | |
| 541 | 540 | case SB_BOTTOM: |
| 542 | - nScrollAmt = YSCROLL( TTYInfo ) - YOFFSET( TTYInfo ) ; | |
| 541 | + nScrollAmt = TTYInfo.yScroll - TTYInfo.yOffset ; | |
| 543 | 542 | break ; |
| 544 | 543 | |
| 545 | 544 | case SB_PAGEUP: |
| 546 | - nScrollAmt = -YSIZE( TTYInfo ) ; | |
| 545 | + nScrollAmt = -TTYInfo.ySize ; | |
| 547 | 546 | break ; |
| 548 | 547 | |
| 549 | 548 | case SB_PAGEDOWN: |
| 550 | - nScrollAmt = YSIZE( TTYInfo ) ; | |
| 549 | + nScrollAmt = TTYInfo.ySize ; | |
| 551 | 550 | break ; |
| 552 | 551 | |
| 553 | 552 | case SB_LINEUP: |
| 554 | - nScrollAmt = -YCHAR( TTYInfo ) ; | |
| 553 | + nScrollAmt = -TTYInfo.yChar ; | |
| 555 | 554 | break ; |
| 556 | 555 | |
| 557 | 556 | case SB_LINEDOWN: |
| 558 | - nScrollAmt = YCHAR( TTYInfo ) ; | |
| 557 | + nScrollAmt = TTYInfo.yChar ; | |
| 559 | 558 | break ; |
| 560 | 559 | |
| 561 | 560 | case SB_THUMBPOSITION: |
| 562 | - nScrollAmt = wScrollPos - YOFFSET( TTYInfo ) ; | |
| 561 | + nScrollAmt = wScrollPos - TTYInfo.yOffset ; | |
| 563 | 562 | break ; |
| 564 | 563 | |
| 565 | 564 | default: |
| 566 | 565 | return ( FALSE ) ; |
| 567 | 566 | } |
| 568 | 567 | |
| 569 | - if ((YOFFSET( TTYInfo ) + nScrollAmt) > YSCROLL( TTYInfo )) | |
| 570 | - nScrollAmt = YSCROLL( TTYInfo ) - YOFFSET( TTYInfo ) ; | |
| 568 | + if ((TTYInfo.yOffset + nScrollAmt) > TTYInfo.yScroll) | |
| 569 | + nScrollAmt = TTYInfo.yScroll - TTYInfo.yOffset ; | |
| 571 | 570 | |
| 572 | - if ((YOFFSET( TTYInfo ) + nScrollAmt) < 0) | |
| 573 | - nScrollAmt = -YOFFSET( TTYInfo ) ; | |
| 571 | + if ((TTYInfo.yOffset + nScrollAmt) < 0) | |
| 572 | + nScrollAmt = -TTYInfo.yOffset ; | |
| 574 | 573 | |
| 575 | 574 | ScrollWindowEx( hWnd, 0, -nScrollAmt, NULL, NULL, NULL, NULL, SW_INVALIDATE | SW_ERASE) ; |
| 576 | 575 | |
| 577 | - YOFFSET( TTYInfo ) = YOFFSET( TTYInfo ) + nScrollAmt ; | |
| 576 | + TTYInfo.yOffset = TTYInfo.yOffset + nScrollAmt ; | |
| 578 | 577 | |
| 579 | - SetScrollPos( hWnd, SB_VERT, YOFFSET( TTYInfo ), TRUE ) ; | |
| 578 | + SetScrollPos( hWnd, SB_VERT, TTYInfo.yOffset, TRUE ) ; | |
| 580 | 579 | |
| 581 | 580 | return ( TRUE ) ; |
| 582 | 581 | |
| ... | ... | @@ -610,43 +609,43 @@ BOOL NEAR ScrollTTYHorz( HWND hWnd, WORD wScrollCmd, WORD wScrollPos ) |
| 610 | 609 | switch (wScrollCmd) |
| 611 | 610 | { |
| 612 | 611 | case SB_TOP: |
| 613 | - nScrollAmt = -XOFFSET( TTYInfo ) ; | |
| 612 | + nScrollAmt = -TTYInfo.xOffset ; | |
| 614 | 613 | break ; |
| 615 | 614 | |
| 616 | 615 | case SB_BOTTOM: |
| 617 | - nScrollAmt = XSCROLL( TTYInfo ) - XOFFSET( TTYInfo ) ; | |
| 616 | + nScrollAmt = TTYInfo.xScroll - TTYInfo.xOffset ; | |
| 618 | 617 | break ; |
| 619 | 618 | |
| 620 | 619 | case SB_PAGEUP: |
| 621 | - nScrollAmt = -XSIZE( TTYInfo ) ; | |
| 620 | + nScrollAmt = -TTYInfo.xSize ; | |
| 622 | 621 | break ; |
| 623 | 622 | |
| 624 | 623 | case SB_PAGEDOWN: |
| 625 | - nScrollAmt = XSIZE( TTYInfo ) ; | |
| 624 | + nScrollAmt = TTYInfo.xSize ; | |
| 626 | 625 | break ; |
| 627 | 626 | |
| 628 | 627 | case SB_LINEUP: |
| 629 | - nScrollAmt = -XCHAR( TTYInfo ) ; | |
| 628 | + nScrollAmt = -TTYInfo.xChar ; | |
| 630 | 629 | break ; |
| 631 | 630 | |
| 632 | 631 | case SB_LINEDOWN: |
| 633 | - nScrollAmt = XCHAR( TTYInfo ) ; | |
| 632 | + nScrollAmt = TTYInfo.xChar ; | |
| 634 | 633 | break ; |
| 635 | 634 | |
| 636 | 635 | case SB_THUMBPOSITION: |
| 637 | - nScrollAmt = wScrollPos - XOFFSET( TTYInfo ) ; | |
| 636 | + nScrollAmt = wScrollPos - TTYInfo.xOffset ; | |
| 638 | 637 | break ; |
| 639 | 638 | |
| 640 | 639 | default: |
| 641 | 640 | return ( FALSE ) ; |
| 642 | 641 | } |
| 643 | - if ((XOFFSET( TTYInfo ) + nScrollAmt) > XSCROLL( TTYInfo )) | |
| 644 | - nScrollAmt = XSCROLL( TTYInfo ) - XOFFSET( TTYInfo ) ; | |
| 645 | - if ((XOFFSET( TTYInfo ) + nScrollAmt) < 0) | |
| 646 | - nScrollAmt = -XOFFSET( TTYInfo ) ; | |
| 642 | + if ((TTYInfo.xOffset + nScrollAmt) > TTYInfo.xScroll) | |
| 643 | + nScrollAmt = TTYInfo.xScroll - TTYInfo.xOffset ; | |
| 644 | + if ((TTYInfo.xOffset + nScrollAmt) < 0) | |
| 645 | + nScrollAmt = -TTYInfo.xOffset ; | |
| 647 | 646 | ScrollWindowEx( hWnd, -nScrollAmt, 0, NULL, NULL, NULL, NULL, SW_INVALIDATE | SW_ERASE) ; |
| 648 | - XOFFSET( TTYInfo ) = XOFFSET( TTYInfo ) + nScrollAmt ; | |
| 649 | - SetScrollPos( hWnd, SB_HORZ, XOFFSET( TTYInfo ), TRUE ) ; | |
| 647 | + TTYInfo.xOffset = TTYInfo.xOffset + nScrollAmt ; | |
| 648 | + SetScrollPos( hWnd, SB_HORZ, TTYInfo.xOffset, TRUE ) ; | |
| 650 | 649 | |
| 651 | 650 | return ( TRUE ) ; |
| 652 | 651 | |
| ... | ... | @@ -686,34 +685,34 @@ BOOL NEAR PaintTTY( HWND hWnd ) |
| 686 | 685 | int nCount, nHorzPos, nVertPos ; |
| 687 | 686 | |
| 688 | 687 | hDC = BeginPaint( hWnd, &ps ) ; |
| 689 | - hOldFont = SelectObject( hDC, HTTYFONT( TTYInfo ) ) ; | |
| 690 | - SetTextColor( hDC, FGCOLOR( TTYInfo ) ) ; | |
| 691 | - SetBkColor( hDC, BGCOLOR( TTYInfo ) ) ; | |
| 688 | + hOldFont = SelectObject( hDC, TTYInfo.hTTYFont ) ; | |
| 689 | + SetTextColor( hDC, TTYInfo.rgbFGColor ) ; | |
| 690 | + SetBkColor( hDC, TTYInfo.rgbBGColor ) ; | |
| 692 | 691 | rect = ps.rcPaint ; |
| 693 | 692 | nRow = |
| 694 | 693 | min( MAXROWS - 1, |
| 695 | - max( 0, (rect.top + YOFFSET( TTYInfo )) / YCHAR( TTYInfo ) ) ) ; | |
| 694 | + max( 0, (rect.top + TTYInfo.yOffset) / TTYInfo.yChar ) ) ; | |
| 696 | 695 | nEndRow = |
| 697 | 696 | min( MAXROWS - 1, |
| 698 | - ((rect.bottom + YOFFSET( TTYInfo ) - 1) / YCHAR( TTYInfo ) ) ) ; | |
| 697 | + ((rect.bottom + TTYInfo.yOffset - 1) / TTYInfo.yChar ) ) ; | |
| 699 | 698 | nCol = |
| 700 | 699 | min( MAXCOLS - 1, |
| 701 | - max( 0, (rect.left + XOFFSET( TTYInfo )) / XCHAR( TTYInfo ) ) ) ; | |
| 700 | + max( 0, (rect.left + TTYInfo.xOffset) / TTYInfo.xChar ) ) ; | |
| 702 | 701 | nEndCol = |
| 703 | 702 | min( MAXCOLS - 1, |
| 704 | - ((rect.right + XOFFSET( TTYInfo ) - 1) / XCHAR( TTYInfo ) ) ) ; | |
| 703 | + ((rect.right + TTYInfo.xOffset - 1) / TTYInfo.xChar ) ) ; | |
| 705 | 704 | nCount = nEndCol - nCol + 1 ; |
| 706 | 705 | for (; nRow <= nEndRow; nRow++) |
| 707 | 706 | { |
| 708 | - nVertPos = (nRow * YCHAR( TTYInfo )) - YOFFSET( TTYInfo ) ; | |
| 709 | - nHorzPos = (nCol * XCHAR( TTYInfo )) - XOFFSET( TTYInfo ) ; | |
| 707 | + nVertPos = (nRow * TTYInfo.yChar) - TTYInfo.yOffset ; | |
| 708 | + nHorzPos = (nCol * TTYInfo.xChar) - TTYInfo.xOffset ; | |
| 710 | 709 | rect.top = nVertPos ; |
| 711 | - rect.bottom = nVertPos + YCHAR( TTYInfo ) ; | |
| 710 | + rect.bottom = nVertPos + TTYInfo.yChar ; | |
| 712 | 711 | rect.left = nHorzPos ; |
| 713 | - rect.right = nHorzPos + XCHAR( TTYInfo ) * nCount ; | |
| 712 | + rect.right = nHorzPos + TTYInfo.xChar * nCount ; | |
| 714 | 713 | SetBkMode( hDC, TRANSPARENT ) ; |
| 715 | 714 | ExtTextOut( hDC, nHorzPos, nVertPos, ETO_OPAQUE | ETO_CLIPPED, &rect, |
| 716 | - (LPSTR)( SCREEN( TTYInfo ) + nRow * MAXCOLS + nCol ), | |
| 715 | + (LPSTR)( TTYInfo.Screen + nRow * MAXCOLS + nCol ), | |
| 717 | 716 | nCount, NULL ) ; |
| 718 | 717 | } |
| 719 | 718 | SelectObject( hDC, hOldFont ) ; |
| ... | ... | @@ -740,11 +739,11 @@ BOOL NEAR PaintTTY( HWND hWnd ) |
| 740 | 739 | //--------------------------------------------------------------------------- |
| 741 | 740 | BOOL NEAR MoveTTYCursor( HWND hWnd ) |
| 742 | 741 | { |
| 743 | - if (CONNECTED( TTYInfo ) && (CURSORSTATE( TTYInfo ) & CS_SHOW)) | |
| 744 | - SetCaretPos( (COLUMN( TTYInfo ) * XCHAR( TTYInfo )) - | |
| 745 | - XOFFSET( TTYInfo ), | |
| 746 | - (ROW( TTYInfo ) * YCHAR( TTYInfo )) - | |
| 747 | - YOFFSET( TTYInfo ) ) ; | |
| 742 | + if (TTYInfo.fConnected && (TTYInfo.wCursorState& CS_SHOW)) | |
| 743 | + SetCaretPos( (TTYInfo.nColumn * TTYInfo.xChar) - | |
| 744 | + TTYInfo.xOffset, | |
| 745 | + (TTYInfo.nRow * TTYInfo.yChar) - | |
| 746 | + TTYInfo.yOffset ) ; | |
| 748 | 747 | |
| 749 | 748 | return ( TRUE ) ; |
| 750 | 749 | |
| ... | ... | @@ -767,11 +766,11 @@ BOOL NEAR MoveTTYCursor( HWND hWnd ) |
| 767 | 766 | //--------------------------------------------------------------------------- |
| 768 | 767 | BOOL NEAR SetTTYFocus( HWND hWnd ) |
| 769 | 768 | { |
| 770 | - if (CONNECTED(TTYInfo) && (CURSORSTATE( TTYInfo ) != CS_SHOW) ) | |
| 769 | + if (TTYInfo.fConnected && (TTYInfo.wCursorState!= CS_SHOW) ) | |
| 771 | 770 | { |
| 772 | - CreateCaret( hWnd, NULL, XCHAR( TTYInfo ), YCHAR( TTYInfo ) ) ; | |
| 771 | + CreateCaret( hWnd, NULL, TTYInfo.xChar, TTYInfo.yChar ) ; | |
| 773 | 772 | ShowCaret( hWnd ) ; |
| 774 | - CURSORSTATE( TTYInfo ) = CS_SHOW ; | |
| 773 | + TTYInfo.wCursorState= CS_SHOW ; | |
| 775 | 774 | } |
| 776 | 775 | |
| 777 | 776 | MoveTTYCursor( hWnd ) ; |
| ... | ... | @@ -796,11 +795,11 @@ BOOL NEAR SetTTYFocus( HWND hWnd ) |
| 796 | 795 | //--------------------------------------------------------------------------- |
| 797 | 796 | BOOL NEAR KillTTYFocus( HWND hWnd ) |
| 798 | 797 | { |
| 799 | - if (CURSORSTATE( TTYInfo ) != CS_HIDE) | |
| 798 | + if (TTYInfo.wCursorState!= CS_HIDE) | |
| 800 | 799 | { |
| 801 | 800 | HideCaret( hWnd ) ; |
| 802 | 801 | DestroyCaret() ; |
| 803 | - CURSORSTATE( TTYInfo ) = CS_HIDE ; | |
| 802 | + TTYInfo.wCursorState= CS_HIDE ; | |
| 804 | 803 | } |
| 805 | 804 | return ( TRUE ) ; |
| 806 | 805 | |
| ... | ... | @@ -835,29 +834,29 @@ BOOL NEAR SizeTTY( HWND hWnd, WORD wWidth, WORD wHeight ) |
| 835 | 834 | // |
| 836 | 835 | // adjust vert settings |
| 837 | 836 | // |
| 838 | - YSIZE( TTYInfo ) = (int) wHeight ; | |
| 839 | - YSCROLL( TTYInfo ) = max( 0, (MAXROWS * YCHAR( TTYInfo )) - | |
| 840 | - YSIZE( TTYInfo ) ) ; | |
| 841 | - nScrollAmt = min( YSCROLL( TTYInfo ), YOFFSET( TTYInfo ) ) - | |
| 842 | - YOFFSET( TTYInfo ) ; | |
| 837 | + TTYInfo.ySize = (int) wHeight ; | |
| 838 | + TTYInfo.yScroll = max( 0, (MAXROWS * TTYInfo.yChar) - | |
| 839 | + TTYInfo.ySize ) ; | |
| 840 | + nScrollAmt = min( TTYInfo.yScroll, TTYInfo.yOffset ) - | |
| 841 | + TTYInfo.yOffset ; | |
| 843 | 842 | ScrollWindow( hWnd, 0, -nScrollAmt, NULL, NULL ) ; |
| 844 | 843 | |
| 845 | - YOFFSET( TTYInfo ) = YOFFSET( TTYInfo ) + nScrollAmt ; | |
| 846 | - SetScrollPos( hWnd, SB_VERT, YOFFSET( TTYInfo ), FALSE ) ; | |
| 847 | - SetScrollRange( hWnd, SB_VERT, 0, YSCROLL( TTYInfo ), TRUE ) ; | |
| 844 | + TTYInfo.yOffset = TTYInfo.yOffset + nScrollAmt ; | |
| 845 | + SetScrollPos( hWnd, SB_VERT, TTYInfo.yOffset, FALSE ) ; | |
| 846 | + SetScrollRange( hWnd, SB_VERT, 0, TTYInfo.yScroll, TRUE ) ; | |
| 848 | 847 | |
| 849 | 848 | // |
| 850 | 849 | // adjust horz settings |
| 851 | 850 | // |
| 852 | - XSIZE( TTYInfo ) = (int) wHeight ; | |
| 853 | - XSCROLL( TTYInfo ) = max( 0, (MAXCOLS * XCHAR( TTYInfo )) - | |
| 854 | - XSIZE( TTYInfo ) ) ; | |
| 855 | - nScrollAmt = min( XSCROLL( TTYInfo ), XOFFSET( TTYInfo )) - | |
| 856 | - XOFFSET( TTYInfo ) ; | |
| 851 | + TTYInfo.xSize = (int) wHeight ; | |
| 852 | + TTYInfo.xScroll = max( 0, (MAXCOLS * TTYInfo.xChar) - | |
| 853 | + TTYInfo.xSize ) ; | |
| 854 | + nScrollAmt = min( TTYInfo.xScroll, TTYInfo.xOffset) - | |
| 855 | + TTYInfo.xOffset ; | |
| 857 | 856 | ScrollWindow( hWnd, nScrollAmt, 0, NULL, NULL ); |
| 858 | - XOFFSET( TTYInfo ) = XOFFSET( TTYInfo ) + nScrollAmt ; | |
| 859 | - SetScrollRange( hWnd, SB_HORZ, 0, XSCROLL( TTYInfo ), FALSE ) ; | |
| 860 | - SetScrollPos( hWnd, SB_HORZ, XOFFSET( TTYInfo ), TRUE ) ; | |
| 857 | + TTYInfo.xOffset = TTYInfo.xOffset + nScrollAmt ; | |
| 858 | + SetScrollRange( hWnd, SB_HORZ, 0, TTYInfo.xScroll, FALSE ) ; | |
| 859 | + SetScrollPos( hWnd, SB_HORZ, TTYInfo.xOffset, TRUE ) ; | |
| 861 | 860 | |
| 862 | 861 | InvalidateRect( hWnd, NULL, FALSE ) ; // redraw entire window |
| 863 | 862 | |
| ... | ... | @@ -906,12 +905,12 @@ int WINAPI TTYChildProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) |
| 906 | 905 | // |
| 907 | 906 | // keyboard activity in TTY Window |
| 908 | 907 | // |
| 909 | - if (CONNECTED(TTYInfo)) { | |
| 908 | + if (TTYInfo.fConnected) { | |
| 910 | 909 | |
| 911 | 910 | if (!WriterAddNewNode(WRITE_CHAR, 0, (char) wParam, NULL, NULL, NULL)) |
| 912 | 911 | return FALSE; |
| 913 | 912 | |
| 914 | - if (LOCALECHO(TTYInfo)) | |
| 913 | + if (TTYInfo.fLocalEcho) | |
| 915 | 914 | OutputABufferToWindow(ghWndTTY, (CHAR *) &wParam, 1); |
| 916 | 915 | } |
| 917 | 916 | } | ... | ... |
| ... | ... | @@ -105,7 +105,7 @@ HANDLE ghFileCapture; |
| 105 | 105 | |
| 106 | 106 | // |
| 107 | 107 | // Status updating |
| 108 | -// | |
| 108 | +//ÁÙ½Ö×ÊÔ´, »¥³â·ÃÎÊ | |
| 109 | 109 | CRITICAL_SECTION gStatusCritical; |
| 110 | 110 | HANDLE ghStatusMessageEvent; |
| 111 | 111 | HANDLE ghStatusMessageHeap; |
| ... | ... | @@ -131,7 +131,7 @@ char gszPort[10]; |
| 131 | 131 | |
| 132 | 132 | // |
| 133 | 133 | // Writer heap variables |
| 134 | -// | |
| 134 | +// ÁÙ½Ö×ÊÔ´ | |
| 135 | 135 | CRITICAL_SECTION gcsWriterHeap; |
| 136 | 136 | CRITICAL_SECTION gcsDataHeap; |
| 137 | 137 | HANDLE ghWriterHeap; | ... | ... |
| ... | ... | @@ -64,13 +64,13 @@ void OutputABufferToWindow(HWND hTTY, char * lpBuf, DWORD dwBufLen) |
| 64 | 64 | break ; |
| 65 | 65 | |
| 66 | 66 | case ASCII_BS: // Backspace CHAR |
| 67 | - if (COLUMN( TTYInfo ) > 0) | |
| 68 | - COLUMN( TTYInfo ) -- ; | |
| 67 | + if (TTYInfo.nColumn > 0) | |
| 68 | + TTYInfo.nColumn -- ; | |
| 69 | 69 | break ; |
| 70 | 70 | |
| 71 | 71 | case ASCII_CR: // Carriage Return |
| 72 | - COLUMN( TTYInfo ) = 0 ; | |
| 73 | - if (!NEWLINE( TTYInfo )) | |
| 72 | + TTYInfo.nColumn = 0 ; | |
| 73 | + if (!TTYInfo.fNewLine) | |
| 74 | 74 | break; |
| 75 | 75 | |
| 76 | 76 | // |
| ... | ... | @@ -78,35 +78,35 @@ void OutputABufferToWindow(HWND hTTY, char * lpBuf, DWORD dwBufLen) |
| 78 | 78 | // |
| 79 | 79 | |
| 80 | 80 | case ASCII_LF: // Line Feed |
| 81 | - if (ROW( TTYInfo )++ == MAXROWS - 1) | |
| 81 | + if (TTYInfo.nRow++ == MAXROWS - 1) | |
| 82 | 82 | { |
| 83 | - MoveMemory( (LPSTR) (SCREEN( TTYInfo )), | |
| 84 | - (LPSTR) (SCREEN( TTYInfo ) + MAXCOLS), | |
| 83 | + MoveMemory( (LPSTR) (TTYInfo.Screen), | |
| 84 | + (LPSTR) (TTYInfo.Screen + MAXCOLS), | |
| 85 | 85 | (MAXROWS - 1) * MAXCOLS ) ; |
| 86 | - FillMemory((LPSTR) (SCREEN( TTYInfo ) + (MAXROWS - 1) * MAXCOLS), | |
| 86 | + FillMemory((LPSTR) (TTYInfo.Screen + (MAXROWS - 1) * MAXCOLS), | |
| 87 | 87 | MAXCOLS, ' ' ) ; |
| 88 | 88 | InvalidateRect( hTTY, NULL, FALSE ) ; |
| 89 | - ROW( TTYInfo )-- ; | |
| 89 | + TTYInfo.nRow-- ; | |
| 90 | 90 | } |
| 91 | 91 | break ; |
| 92 | 92 | |
| 93 | 93 | default: // standard character |
| 94 | - SCREENCHAR(TTYInfo, COLUMN(TTYInfo), ROW(TTYInfo)) = lpBuf[ i ]; | |
| 95 | - | |
| 96 | - rect.left = (COLUMN( TTYInfo ) * XCHAR( TTYInfo )) - | |
| 97 | - XOFFSET( TTYInfo ) ; | |
| 98 | - rect.right = rect.left + XCHAR( TTYInfo ) ; | |
| 99 | - rect.top = (ROW( TTYInfo ) * YCHAR( TTYInfo )) - | |
| 100 | - YOFFSET( TTYInfo ) ; | |
| 101 | - rect.bottom = rect.top + YCHAR( TTYInfo ) ; | |
| 94 | + TTYInfo.Screen[TTYInfo.nRow * MAXCOLS + TTYInfo.nColumn]= lpBuf[ i ]; | |
| 95 | + | |
| 96 | + rect.left = (TTYInfo.nColumn * TTYInfo.xChar) - | |
| 97 | + TTYInfo.xOffset ; | |
| 98 | + rect.right = rect.left + TTYInfo.xChar ; | |
| 99 | + rect.top = (TTYInfo.nRow * TTYInfo.yChar) - | |
| 100 | + TTYInfo.yOffset ; | |
| 101 | + rect.bottom = rect.top + TTYInfo.yChar ; | |
| 102 | 102 | InvalidateRect( hTTY, &rect, FALSE ) ; |
| 103 | 103 | |
| 104 | 104 | // |
| 105 | 105 | // Line wrap |
| 106 | 106 | // |
| 107 | - if (COLUMN( TTYInfo ) < MAXCOLS-1 ) | |
| 108 | - COLUMN( TTYInfo )++ ; | |
| 109 | - else if (AUTOWRAP( TTYInfo )) | |
| 107 | + if (TTYInfo.nColumn < MAXCOLS-1 ) | |
| 108 | + TTYInfo.nColumn++ ; | |
| 109 | + else if (TTYInfo.fAutowrap) | |
| 110 | 110 | OutputABufferToWindow(hTTY, "\r\n", 2 ) ; |
| 111 | 111 | |
| 112 | 112 | break; | ... | ... |
| ... | ... | @@ -100,21 +100,21 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) |
| 100 | 100 | // If no reading is allowed, then set flag to |
| 101 | 101 | // make it look like a read is already outstanding. |
| 102 | 102 | // |
| 103 | - if (NOREADING( TTYInfo )) | |
| 103 | + if (TTYInfo.fNoReading) | |
| 104 | 104 | fWaitingOnRead = TRUE; |
| 105 | 105 | |
| 106 | 106 | // |
| 107 | 107 | // if no read is outstanding, then issue another one |
| 108 | 108 | // |
| 109 | 109 | if (!fWaitingOnRead) { |
| 110 | - if (!ReadFile(COMDEV(TTYInfo), lpBuf_first, AMOUNT_TO_READ, &dwRead, &osReader)) { | |
| 110 | + if (!ReadFile(TTYInfo.hCommPort, lpBuf_first, AMOUNT_TO_READ, &dwRead, &osReader)) { | |
| 111 | 111 | if (GetLastError() != ERROR_IO_PENDING) // read not delayed? |
| 112 | 112 | ErrorInComm("ReadFile in ReaderAndStatusProc"); |
| 113 | 113 | |
| 114 | 114 | fWaitingOnRead = TRUE; |
| 115 | 115 | } |
| 116 | 116 | else { // read completed immediately |
| 117 | - if ((dwRead != MAX_READ_BUFFER) && SHOWTIMEOUTS(TTYInfo)) | |
| 117 | + if ((dwRead != MAX_READ_BUFFER) && TTYInfo.fDisplayTimeouts) | |
| 118 | 118 | UpdateStatus("Read timed out immediately.\r\n"); |
| 119 | 119 | |
| 120 | 120 | if (dwRead) |
| ... | ... | @@ -129,9 +129,9 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) |
| 129 | 129 | // This will cause a pending WaitCommEvent to complete |
| 130 | 130 | // and the resultant event flag will be NULL. |
| 131 | 131 | // |
| 132 | - if (dwStoredFlags != EVENTFLAGS(TTYInfo)) { | |
| 133 | - dwStoredFlags = EVENTFLAGS(TTYInfo); | |
| 134 | - if (!SetCommMask(COMDEV(TTYInfo), dwStoredFlags)) | |
| 132 | + if (dwStoredFlags != TTYInfo.dwEventFlags) { | |
| 133 | + dwStoredFlags = TTYInfo.dwEventFlags; | |
| 134 | + if (!SetCommMask(TTYInfo.hCommPort, dwStoredFlags)) | |
| 135 | 135 | ErrorReporter("SetCommMask"); |
| 136 | 136 | } |
| 137 | 137 | |
| ... | ... | @@ -139,16 +139,16 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) |
| 139 | 139 | // If event checks are not allowed, then make it look |
| 140 | 140 | // like an event check operation is outstanding |
| 141 | 141 | // |
| 142 | - if (NOEVENTS(TTYInfo)) | |
| 142 | + if (TTYInfo.fNoEvents) | |
| 143 | 143 | fWaitingOnStat = TRUE; |
| 144 | 144 | // |
| 145 | 145 | // if no status check is outstanding, then issue another one |
| 146 | 146 | // |
| 147 | 147 | if (!fWaitingOnStat) { |
| 148 | - if (NOEVENTS(TTYInfo)) | |
| 148 | + if (TTYInfo.fNoEvents) | |
| 149 | 149 | fWaitingOnStat = TRUE; |
| 150 | 150 | else { |
| 151 | - if (!WaitCommEvent(COMDEV(TTYInfo), &dwCommEvent, &osStatus)) { | |
| 151 | + if (!WaitCommEvent(TTYInfo.hCommPort, &dwCommEvent, &osStatus)) { | |
| 152 | 152 | if (GetLastError() != ERROR_IO_PENDING) // Wait not delayed? |
| 153 | 153 | ErrorReporter("WaitCommEvent"); |
| 154 | 154 | else |
| ... | ... | @@ -171,14 +171,14 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) |
| 171 | 171 | // read completed |
| 172 | 172 | // |
| 173 | 173 | case WAIT_OBJECT_0: |
| 174 | - if (!GetOverlappedResult(COMDEV(TTYInfo), &osReader, &dwRead, FALSE)) { | |
| 174 | + if (!GetOverlappedResult(TTYInfo.hCommPort, &osReader, &dwRead, FALSE)) { | |
| 175 | 175 | if (GetLastError() == ERROR_OPERATION_ABORTED) |
| 176 | 176 | UpdateStatus("Read aborted\r\n"); |
| 177 | 177 | else |
| 178 | 178 | ErrorInComm("GetOverlappedResult (in Reader)"); |
| 179 | 179 | } |
| 180 | 180 | else { // read completed successfully |
| 181 | - if ((dwRead != MAX_READ_BUFFER) && SHOWTIMEOUTS(TTYInfo)) | |
| 181 | + if ((dwRead != MAX_READ_BUFFER) && TTYInfo.fDisplayTimeouts) | |
| 182 | 182 | UpdateStatus("Read timed out overlapped.\r\n"); |
| 183 | 183 | |
| 184 | 184 | if (dwRead) |
| ... | ... | @@ -259,7 +259,7 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) |
| 259 | 259 | // status completed |
| 260 | 260 | // |
| 261 | 261 | case WAIT_OBJECT_0 + 1: |
| 262 | - if (!GetOverlappedResult(COMDEV(TTYInfo), &osStatus, &dwOvRes, FALSE)) { | |
| 262 | + if (!GetOverlappedResult(TTYInfo.hCommPort, &osStatus, &dwOvRes, FALSE)) { | |
| 263 | 263 | if (GetLastError() == ERROR_OPERATION_ABORTED) |
| 264 | 264 | UpdateStatus("WaitCommEvent aborted\r\n"); |
| 265 | 265 | else |
| ... | ... | @@ -295,7 +295,7 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) |
| 295 | 295 | // if status checks are not allowed, then don't issue the |
| 296 | 296 | // modem status check nor the com stat check |
| 297 | 297 | // |
| 298 | - if (!NOSTATUS(TTYInfo)) { | |
| 298 | + if (!TTYInfo.fNoStatus) { | |
| 299 | 299 | CheckModemStatus(FALSE); // take this opportunity to do |
| 300 | 300 | CheckComStat(FALSE); // a modem status check and |
| 301 | 301 | // a comm status check | ... | ... |
| ... | ... | @@ -260,36 +260,36 @@ void UpdateTTYInfo() |
| 260 | 260 | // |
| 261 | 261 | GetDlgItemText(ghWndToolbarDlg, IDC_PORTCOMBO, gszPort, sizeof(gszPort)); |
| 262 | 262 | |
| 263 | - BAUDRATE(TTYInfo) = GetdwTTYItem( ghWndToolbarDlg, | |
| 263 | + TTYInfo.dwBaudRate = GetdwTTYItem( ghWndToolbarDlg, | |
| 264 | 264 | IDC_BAUDCOMBO, |
| 265 | 265 | szBaud, |
| 266 | 266 | BaudTable, |
| 267 | 267 | sizeof(BaudTable)/sizeof(BaudTable[0])); |
| 268 | 268 | |
| 269 | - PARITY(TTYInfo) = GetbTTYItem( ghWndToolbarDlg, | |
| 269 | + TTYInfo.bParity = GetbTTYItem( ghWndToolbarDlg, | |
| 270 | 270 | IDC_PARITYCOMBO, |
| 271 | 271 | szParity, |
| 272 | 272 | ParityTable, |
| 273 | 273 | sizeof(ParityTable)/sizeof(ParityTable[0])); |
| 274 | 274 | |
| 275 | - STOPBITS(TTYInfo) = GetbTTYItem( ghWndToolbarDlg, | |
| 275 | + TTYInfo.bStopBits = GetbTTYItem( ghWndToolbarDlg, | |
| 276 | 276 | IDC_STOPBITSCOMBO, |
| 277 | 277 | szStopBits, |
| 278 | 278 | StopBitsTable, |
| 279 | 279 | sizeof(StopBitsTable)/sizeof(StopBitsTable[0])); |
| 280 | 280 | |
| 281 | - LOCALECHO(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_LOCALECHOCHK); | |
| 282 | - BYTESIZE(TTYInfo) = GetDlgItemInt(ghWndToolbarDlg, IDC_DATABITSCOMBO, NULL, FALSE); | |
| 283 | - NEWLINE(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_LFBTN); | |
| 284 | - AUTOWRAP(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_AUTOWRAPCHK); | |
| 285 | - DISPLAYERRORS(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_DISPLAYERRORSCHK); | |
| 281 | + TTYInfo.fLocalEcho = IsDlgButtonChecked(ghWndToolbarDlg, IDC_LOCALECHOCHK); | |
| 282 | + TTYInfo.bByteSize = GetDlgItemInt(ghWndToolbarDlg, IDC_DATABITSCOMBO, NULL, FALSE); | |
| 283 | + TTYInfo.fNewLine = IsDlgButtonChecked(ghWndToolbarDlg, IDC_LFBTN); | |
| 284 | + TTYInfo.fAutowrap = IsDlgButtonChecked(ghWndToolbarDlg, IDC_AUTOWRAPCHK); | |
| 285 | + TTYInfo.fDisplayErrors = IsDlgButtonChecked(ghWndToolbarDlg, IDC_DISPLAYERRORSCHK); | |
| 286 | 286 | |
| 287 | - NOREADING(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOREADINGCHK); | |
| 288 | - NOWRITING(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOWRITINGCHK); | |
| 289 | - NOEVENTS(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOEVENTSCHK); | |
| 290 | - NOSTATUS(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOSTATUSCHK); | |
| 287 | + TTYInfo.fNoReading = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOREADINGCHK); | |
| 288 | + TTYInfo.fNoWriting = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOWRITINGCHK); | |
| 289 | + TTYInfo.fNoEvents = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOEVENTSCHK); | |
| 290 | + TTYInfo.fNoStatus = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOSTATUSCHK); | |
| 291 | 291 | |
| 292 | - if (CONNECTED(TTYInfo)) // if connected, then update port state | |
| 292 | + if (TTYInfo.fConnected) // if connected, then update port state | |
| 293 | 293 | UpdateConnection(); |
| 294 | 294 | |
| 295 | 295 | return; |
| ... | ... | @@ -317,21 +317,21 @@ BOOL UpdateConnection() |
| 317 | 317 | // |
| 318 | 318 | // get current DCB settings |
| 319 | 319 | // |
| 320 | - if (!GetCommState(COMDEV(TTYInfo), &dcb)) | |
| 320 | + if (!GetCommState(TTYInfo.hCommPort, &dcb)) | |
| 321 | 321 | ErrorReporter("GetCommState"); |
| 322 | 322 | |
| 323 | 323 | // |
| 324 | 324 | // update DCB rate, byte size, parity, and stop bits size |
| 325 | 325 | // |
| 326 | - dcb.BaudRate = BAUDRATE(TTYInfo); | |
| 327 | - dcb.ByteSize = BYTESIZE(TTYInfo); | |
| 328 | - dcb.Parity = PARITY(TTYInfo); | |
| 329 | - dcb.StopBits = STOPBITS(TTYInfo); | |
| 326 | + dcb.BaudRate = TTYInfo.dwBaudRate; | |
| 327 | + dcb.ByteSize = TTYInfo.bByteSize; | |
| 328 | + dcb.Parity = TTYInfo.bParity; | |
| 329 | + dcb.StopBits = TTYInfo.bStopBits; | |
| 330 | 330 | |
| 331 | 331 | // |
| 332 | 332 | // update event flags |
| 333 | 333 | // |
| 334 | - if (EVENTFLAGS(TTYInfo) & EV_RXFLAG) | |
| 334 | + if (TTYInfo.dwEventFlags & EV_RXFLAG) | |
| 335 | 335 | dcb.EvtChar = TTYInfo.chFlag; |
| 336 | 336 | else |
| 337 | 337 | dcb.EvtChar = '\0'; |
| ... | ... | @@ -339,19 +339,19 @@ BOOL UpdateConnection() |
| 339 | 339 | // |
| 340 | 340 | // update flow control settings |
| 341 | 341 | // |
| 342 | - dcb.fDtrControl = DTRCONTROL(TTYInfo); | |
| 343 | - dcb.fRtsControl = RTSCONTROL(TTYInfo); | |
| 342 | + dcb.fDtrControl = TTYInfo.fDtrControl; | |
| 343 | + dcb.fRtsControl = TTYInfo.fRtsControl; | |
| 344 | 344 | |
| 345 | - dcb.fOutxCtsFlow = CTSOUTFLOW(TTYInfo); | |
| 346 | - dcb.fOutxDsrFlow = DSROUTFLOW(TTYInfo); | |
| 347 | - dcb.fDsrSensitivity = DSRINFLOW(TTYInfo); | |
| 348 | - dcb.fOutX = XONXOFFOUTFLOW(TTYInfo); | |
| 349 | - dcb.fInX = XONXOFFINFLOW(TTYInfo); | |
| 350 | - dcb.fTXContinueOnXoff = TXAFTERXOFFSENT(TTYInfo); | |
| 351 | - dcb.XonChar = XONCHAR(TTYInfo); | |
| 352 | - dcb.XoffChar = XOFFCHAR(TTYInfo); | |
| 353 | - dcb.XonLim = XONLIMIT(TTYInfo); | |
| 354 | - dcb.XoffLim = XOFFLIMIT(TTYInfo); | |
| 345 | + dcb.fOutxCtsFlow = TTYInfo.fCTSOutFlow; | |
| 346 | + dcb.fOutxDsrFlow = TTYInfo.fDSROutFlow; | |
| 347 | + dcb.fDsrSensitivity = TTYInfo.fDSRInFlow; | |
| 348 | + dcb.fOutX = TTYInfo.fXonXoffOutFlow; | |
| 349 | + dcb.fInX = TTYInfo.fXonXoffInFlow; | |
| 350 | + dcb.fTXContinueOnXoff = TTYInfo.fTXafterXoffSent; | |
| 351 | + dcb.XonChar = TTYInfo.chXON; | |
| 352 | + dcb.XoffChar = TTYInfo.chXOFF; | |
| 353 | + dcb.XonLim = TTYInfo.wXONLimit; | |
| 354 | + dcb.XoffLim = TTYInfo.wXOFFLimit; | |
| 355 | 355 | |
| 356 | 356 | // |
| 357 | 357 | // DCB settings not in the user's control |
| ... | ... | @@ -361,13 +361,13 @@ BOOL UpdateConnection() |
| 361 | 361 | // |
| 362 | 362 | // set new state |
| 363 | 363 | // |
| 364 | - if (!SetCommState(COMDEV(TTYInfo), &dcb)) | |
| 364 | + if (!SetCommState(TTYInfo.hCommPort, &dcb)) | |
| 365 | 365 | ErrorReporter("SetCommState"); |
| 366 | 366 | |
| 367 | 367 | // |
| 368 | 368 | // set new timeouts |
| 369 | 369 | // |
| 370 | - if (!SetCommTimeouts(COMDEV(TTYInfo), &(TIMEOUTSNEW(TTYInfo)))) | |
| 370 | + if (!SetCommTimeouts(TTYInfo.hCommPort, &(TTYInfo.timeoutsnew))) | |
| 371 | 371 | ErrorReporter("SetCommTimeouts"); |
| 372 | 372 | |
| 373 | 373 | return TRUE; |
| ... | ... | @@ -487,7 +487,7 @@ BOOL SettingsDlgInit( HWND hDlg ) |
| 487 | 487 | } |
| 488 | 488 | |
| 489 | 489 | SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_SETCURSEL, |
| 490 | - (WPARAM) (PORT( TTYInfo ) - 1), 0L ) ; | |
| 490 | + (WPARAM) (TTYInfo.bPort - 1), 0L ) ; | |
| 491 | 491 | |
| 492 | 492 | GetDlgItemText(hDlg, IDC_PORTCOMBO, gszPort, sizeof(gszPort)); |
| 493 | 493 | |
| ... | ... | @@ -497,7 +497,7 @@ BOOL SettingsDlgInit( HWND hDlg ) |
| 497 | 497 | FillComboBox( GetDlgItem( hDlg, IDC_BAUDCOMBO ), |
| 498 | 498 | szBaud, BaudTable, |
| 499 | 499 | sizeof( BaudTable ) / sizeof( BaudTable[ 0 ] ), |
| 500 | - BAUDRATE( TTYInfo ) ) ; | |
| 500 | + TTYInfo.dwBaudRate ) ; | |
| 501 | 501 | |
| 502 | 502 | // |
| 503 | 503 | // fill data bits combo box and make initial selection |
| ... | ... | @@ -511,7 +511,7 @@ BOOL SettingsDlgInit( HWND hDlg ) |
| 511 | 511 | // |
| 512 | 512 | // if wCount is current selection, tell the combo box |
| 513 | 513 | // |
| 514 | - if (wCount == BYTESIZE( TTYInfo )) | |
| 514 | + if (wCount == TTYInfo.bByteSize) | |
| 515 | 515 | SendDlgItemMessage( hDlg, IDC_DATABITSCOMBO, CB_SETCURSEL, |
| 516 | 516 | (WPARAM) wPosition, 0L ) ; |
| 517 | 517 | } |
| ... | ... | @@ -522,7 +522,7 @@ BOOL SettingsDlgInit( HWND hDlg ) |
| 522 | 522 | FillComboBox( GetDlgItem( hDlg, IDC_PARITYCOMBO ), |
| 523 | 523 | szParity, ParityTable, |
| 524 | 524 | sizeof( ParityTable ) / sizeof( ParityTable[ 0 ] ), |
| 525 | - PARITY( TTYInfo ) ) ; | |
| 525 | + TTYInfo.bParity ) ; | |
| 526 | 526 | |
| 527 | 527 | // |
| 528 | 528 | // fill stop bits combo box and make initial selection |
| ... | ... | @@ -530,19 +530,19 @@ BOOL SettingsDlgInit( HWND hDlg ) |
| 530 | 530 | FillComboBox( GetDlgItem( hDlg, IDC_STOPBITSCOMBO ), |
| 531 | 531 | szStopBits, StopBitsTable, |
| 532 | 532 | sizeof( StopBitsTable ) / sizeof ( StopBitsTable[ 0 ] ), |
| 533 | - STOPBITS( TTYInfo ) ) ; | |
| 533 | + TTYInfo.bStopBits ) ; | |
| 534 | 534 | // |
| 535 | 535 | // set check marks based on TTY data |
| 536 | 536 | // |
| 537 | - CheckDlgButton( hDlg, IDC_LOCALECHOCHK, LOCALECHO( TTYInfo ) ) ; | |
| 538 | - CheckDlgButton( hDlg, IDC_DISPLAYERRORSCHK, DISPLAYERRORS( TTYInfo ) ); | |
| 539 | - CheckDlgButton( hDlg, IDC_LFBTN, NEWLINE( TTYInfo ) ); | |
| 540 | - CheckDlgButton( hDlg, IDC_AUTOWRAPCHK, AUTOWRAP( TTYInfo ) ); | |
| 537 | + CheckDlgButton( hDlg, IDC_LOCALECHOCHK, TTYInfo.fLocalEcho ) ; | |
| 538 | + CheckDlgButton( hDlg, IDC_DISPLAYERRORSCHK, TTYInfo.fDisplayErrors ); | |
| 539 | + CheckDlgButton( hDlg, IDC_LFBTN, TTYInfo.fNewLine ); | |
| 540 | + CheckDlgButton( hDlg, IDC_AUTOWRAPCHK, TTYInfo.fAutowrap ); | |
| 541 | 541 | |
| 542 | - CheckDlgButton( hDlg, IDC_NOWRITINGCHK, NOWRITING( TTYInfo ) ); | |
| 543 | - CheckDlgButton( hDlg, IDC_NOREADINGCHK, NOREADING( TTYInfo ) ); | |
| 544 | - CheckDlgButton( hDlg, IDC_NOSTATUSCHK, NOSTATUS( TTYInfo ) ); | |
| 545 | - CheckDlgButton( hDlg, IDC_NOEVENTSCHK, NOEVENTS( TTYInfo ) ); | |
| 542 | + CheckDlgButton( hDlg, IDC_NOWRITINGCHK, TTYInfo.fNoWriting ); | |
| 543 | + CheckDlgButton( hDlg, IDC_NOREADINGCHK, TTYInfo.fNoReading ); | |
| 544 | + CheckDlgButton( hDlg, IDC_NOSTATUSCHK, TTYInfo.fNoStatus ); | |
| 545 | + CheckDlgButton( hDlg, IDC_NOEVENTSCHK, TTYInfo.fNoEvents ); | |
| 546 | 546 | |
| 547 | 547 | return ( TRUE ) ; |
| 548 | 548 | |
| ... | ... | @@ -706,11 +706,11 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 706 | 706 | break; |
| 707 | 707 | case IDC_BUTTON_CONNECT_UART: // font button pressed |
| 708 | 708 | { |
| 709 | - if (!CONNECTED(TTYInfo)) | |
| 709 | + if (!TTYInfo.fConnected) | |
| 710 | 710 | { |
| 711 | 711 | if (SetupCommPort() != NULL) |
| 712 | 712 | { |
| 713 | - ChangeConnection(hWndDlg, CONNECTED(TTYInfo)); | |
| 713 | + ChangeConnection(hWndDlg, TTYInfo.fConnected); | |
| 714 | 714 | SetWindowText(GetDlgItem(hWndDlg, IDC_BUTTON_CONNECT_UART), "断开夹具"); |
| 715 | 715 | } |
| 716 | 716 | } |
| ... | ... | @@ -718,7 +718,7 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 718 | 718 | { |
| 719 | 719 | if (BreakDownCommPort()) |
| 720 | 720 | { |
| 721 | - ChangeConnection(hWndDlg, CONNECTED(TTYInfo)); | |
| 721 | + ChangeConnection(hWndDlg, TTYInfo.fConnected); | |
| 722 | 722 | SetWindowText(GetDlgItem(hWndDlg, IDC_BUTTON_CONNECT_UART), "连接夹具"); |
| 723 | 723 | } |
| 724 | 724 | |
| ... | ... | @@ -731,11 +731,11 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 731 | 731 | CHOOSEFONT cf = {0}; |
| 732 | 732 | LOGFONT lf; |
| 733 | 733 | |
| 734 | - lf = LFTTYFONT(TTYInfo); | |
| 734 | + lf = TTYInfo.lfTTYFont; | |
| 735 | 735 | cf.lStructSize = sizeof(CHOOSEFONT); |
| 736 | 736 | cf.hwndOwner = hWndDlg; |
| 737 | 737 | cf.lpLogFont = &lf; |
| 738 | - cf.rgbColors = FGCOLOR(TTYInfo); | |
| 738 | + cf.rgbColors = TTYInfo.rgbFGColor; | |
| 739 | 739 | cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_FIXEDPITCHONLY | \ |
| 740 | 740 | CF_EFFECTS; |
| 741 | 741 | |
| ... | ... | @@ -748,7 +748,7 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 748 | 748 | // fix scroll bar sizes since we may have more or less pixels per |
| 749 | 749 | // character now |
| 750 | 750 | // |
| 751 | - SizeTTY(ghWndTTY, (WORD)XSIZE(TTYInfo), (WORD)YSIZE(TTYInfo)); | |
| 751 | + SizeTTY(ghWndTTY, (WORD)TTYInfo.xSize, (WORD)TTYInfo.ySize); | |
| 752 | 752 | |
| 753 | 753 | // |
| 754 | 754 | // repaint screen contents |
| ... | ... | @@ -784,7 +784,7 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 784 | 784 | break; |
| 785 | 785 | |
| 786 | 786 | default: // some other control has been modified |
| 787 | - if (CONNECTED(TTYInfo)) | |
| 787 | + if (TTYInfo.fConnected) | |
| 788 | 788 | UpdateTTYInfo(); |
| 789 | 789 | break; |
| 790 | 790 | } |
| ... | ... | @@ -911,7 +911,7 @@ void InitCommEventsDlg(HWND hdlg, DWORD dwEventFlags) |
| 911 | 911 | for (i = IDC_EVBREAKBTN, j = 0; i <= IDC_EVTXEMPTYBTN; i++, j++) |
| 912 | 912 | CheckDlgButton( hdlg, i, dwEventFlags & EventFlagsTable[j]) ; |
| 913 | 913 | |
| 914 | - InitHexControl(hdlg, IDC_FLAGEDIT, IDC_FLAGCHAR, FLAGCHAR(TTYInfo)); | |
| 914 | + InitHexControl(hdlg, IDC_FLAGEDIT, IDC_FLAGCHAR, TTYInfo.chFlag); | |
| 915 | 915 | |
| 916 | 916 | EnableWindow(GetDlgItem(hdlg, IDC_FLAGEDIT), dwEventFlags & EV_RXFLAG); |
| 917 | 917 | EnableWindow(GetDlgItem(hdlg, IDC_FLAGCHAR), dwEventFlags & EV_RXFLAG); |
| ... | ... | @@ -954,17 +954,17 @@ void SaveCommEventsDlg(HWND hdlg) |
| 954 | 954 | // get current flag character from dialog |
| 955 | 955 | // |
| 956 | 956 | chNewFlag = GetHexControl(hdlg, IDC_FLAGEDIT, IDC_FLAGCHAR); |
| 957 | - fChangingRXFLAG = (EVENTFLAGS(TTYInfo) & EV_RXFLAG) != (dwNew & EV_RXFLAG); | |
| 958 | - if (chNewFlag != FLAGCHAR(TTYInfo) || fChangingRXFLAG) { | |
| 959 | - FLAGCHAR(TTYInfo) = chNewFlag; | |
| 957 | + fChangingRXFLAG = (TTYInfo.dwEventFlags & EV_RXFLAG) != (dwNew & EV_RXFLAG); | |
| 958 | + if (chNewFlag != TTYInfo.chFlag || fChangingRXFLAG) { | |
| 959 | + TTYInfo.chFlag = chNewFlag; | |
| 960 | 960 | UpdateTTYInfo(); |
| 961 | 961 | } |
| 962 | 962 | |
| 963 | 963 | // |
| 964 | 964 | // if new flags have been selected, or |
| 965 | 965 | // |
| 966 | - if (dwNew != EVENTFLAGS(TTYInfo)) | |
| 967 | - EVENTFLAGS(TTYInfo) = dwNew; | |
| 966 | + if (dwNew != TTYInfo.dwEventFlags) | |
| 967 | + TTYInfo.dwEventFlags = dwNew; | |
| 968 | 968 | |
| 969 | 969 | return; |
| 970 | 970 | } |
| ... | ... | @@ -995,7 +995,7 @@ BOOL CALLBACK CommEventsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lpa |
| 995 | 995 | switch(uMessage) |
| 996 | 996 | { |
| 997 | 997 | case WM_INITDIALOG: // init controls |
| 998 | - InitCommEventsDlg(hdlg, EVENTFLAGS(TTYInfo)); | |
| 998 | + InitCommEventsDlg(hdlg, TTYInfo.dwEventFlags); | |
| 999 | 999 | break; |
| 1000 | 1000 | |
| 1001 | 1001 | case WM_COMMAND: |
| ... | ... | @@ -1064,10 +1064,10 @@ void SaveFlowControlDlg(HWND hdlg) |
| 1064 | 1064 | dwNewRTSControl = GetdwTTYItem( hdlg, IDC_RTSCONTROLCOMBO, |
| 1065 | 1065 | szRTSControlStrings, RTSControlTable, |
| 1066 | 1066 | sizeof(RTSControlTable)/sizeof(RTSControlTable[0])); |
| 1067 | - if (dwNewRTSControl != RTSCONTROL(TTYInfo) || | |
| 1068 | - dwNewDTRControl != DTRCONTROL(TTYInfo)) { | |
| 1069 | - RTSCONTROL(TTYInfo) = dwNewRTSControl; | |
| 1070 | - DTRCONTROL(TTYInfo) = dwNewDTRControl; | |
| 1067 | + if (dwNewRTSControl != TTYInfo.fRtsControl || | |
| 1068 | + dwNewDTRControl != TTYInfo.fDtrControl) { | |
| 1069 | + TTYInfo.fRtsControl = dwNewRTSControl; | |
| 1070 | + TTYInfo.fDtrControl = dwNewDTRControl; | |
| 1071 | 1071 | fUpdateDCB = TRUE; |
| 1072 | 1072 | } |
| 1073 | 1073 | |
| ... | ... | @@ -1076,10 +1076,10 @@ void SaveFlowControlDlg(HWND hdlg) |
| 1076 | 1076 | // |
| 1077 | 1077 | wNewXONLimit = GetDlgItemInt(hdlg, IDC_XONLIMITEDIT, &fSuccess, FALSE); |
| 1078 | 1078 | wNewXOFFLimit = GetDlgItemInt(hdlg, IDC_XOFFLIMITEDIT, &fSuccess, FALSE); |
| 1079 | - if (wNewXOFFLimit != XOFFLIMIT(TTYInfo) || | |
| 1080 | - wNewXONLimit != XONLIMIT(TTYInfo)) { | |
| 1081 | - XOFFLIMIT(TTYInfo) = wNewXOFFLimit; | |
| 1082 | - XONLIMIT(TTYInfo) = wNewXONLimit; | |
| 1079 | + if (wNewXOFFLimit != TTYInfo.wXOFFLimit || | |
| 1080 | + wNewXONLimit != TTYInfo.wXONLimit) { | |
| 1081 | + TTYInfo.wXOFFLimit = wNewXOFFLimit; | |
| 1082 | + TTYInfo.wXONLimit = wNewXONLimit; | |
| 1083 | 1083 | fUpdateDCB = TRUE; |
| 1084 | 1084 | } |
| 1085 | 1085 | |
| ... | ... | @@ -1088,10 +1088,10 @@ void SaveFlowControlDlg(HWND hdlg) |
| 1088 | 1088 | // |
| 1089 | 1089 | chNewXON = GetHexControl(hdlg, IDC_XONCHAREDIT, IDC_XONCHARDISP); |
| 1090 | 1090 | chNewXOFF = GetHexControl(hdlg, IDC_XOFFCHAREDIT, IDC_XOFFCHARDISP); |
| 1091 | - if (chNewXOFF != XOFFCHAR(TTYInfo) || | |
| 1092 | - chNewXON != XONCHAR(TTYInfo)) { | |
| 1093 | - XOFFCHAR(TTYInfo) = chNewXOFF; | |
| 1094 | - XONCHAR(TTYInfo) = chNewXON; | |
| 1091 | + if (chNewXOFF != TTYInfo.chXOFF || | |
| 1092 | + chNewXON != TTYInfo.chXON) { | |
| 1093 | + TTYInfo.chXOFF = chNewXOFF; | |
| 1094 | + TTYInfo.chXON = chNewXON; | |
| 1095 | 1095 | fUpdateDCB = TRUE; |
| 1096 | 1096 | } |
| 1097 | 1097 | |
| ... | ... | @@ -1105,18 +1105,18 @@ void SaveFlowControlDlg(HWND hdlg) |
| 1105 | 1105 | fNewXOut = IsDlgButtonChecked(hdlg, IDC_XONXOFFOUTCHK); |
| 1106 | 1106 | fNewXIn = IsDlgButtonChecked(hdlg, IDC_XONXOFFINCHK); |
| 1107 | 1107 | |
| 1108 | - if (fNewTXafterXoffSent != TXAFTERXOFFSENT(TTYInfo) || | |
| 1109 | - fNewCTSOut != CTSOUTFLOW(TTYInfo) || | |
| 1110 | - fNewDSROut != DSROUTFLOW(TTYInfo) || | |
| 1111 | - fNewDSRIn != DSRINFLOW(TTYInfo) || | |
| 1112 | - fNewXOut != XONXOFFOUTFLOW(TTYInfo) || | |
| 1113 | - fNewXIn != XONXOFFINFLOW(TTYInfo) ) { | |
| 1114 | - CTSOUTFLOW(TTYInfo) = fNewCTSOut; | |
| 1115 | - DSROUTFLOW(TTYInfo) = fNewDSROut; | |
| 1116 | - DSRINFLOW(TTYInfo) = fNewDSRIn; | |
| 1117 | - XONXOFFOUTFLOW(TTYInfo) = fNewXOut; | |
| 1118 | - XONXOFFINFLOW(TTYInfo) = fNewXIn; | |
| 1119 | - TXAFTERXOFFSENT(TTYInfo) = fNewTXafterXoffSent; | |
| 1108 | + if (fNewTXafterXoffSent != TTYInfo.fTXafterXoffSent || | |
| 1109 | + fNewCTSOut != TTYInfo.fCTSOutFlow || | |
| 1110 | + fNewDSROut != TTYInfo.fDSROutFlow || | |
| 1111 | + fNewDSRIn != TTYInfo.fDSRInFlow || | |
| 1112 | + fNewXOut != TTYInfo.fXonXoffOutFlow || | |
| 1113 | + fNewXIn != TTYInfo.fXonXoffInFlow ) { | |
| 1114 | + TTYInfo.fCTSOutFlow = fNewCTSOut; | |
| 1115 | + TTYInfo.fDSROutFlow = fNewDSROut; | |
| 1116 | + TTYInfo.fDSRInFlow = fNewDSRIn; | |
| 1117 | + TTYInfo.fXonXoffOutFlow = fNewXOut; | |
| 1118 | + TTYInfo.fXonXoffInFlow = fNewXIn; | |
| 1119 | + TTYInfo.fTXafterXoffSent = fNewTXafterXoffSent; | |
| 1120 | 1120 | fUpdateDCB = TRUE; |
| 1121 | 1121 | } |
| 1122 | 1122 | |
| ... | ... | @@ -1150,7 +1150,7 @@ void InitFlowControlDlg(HWND hdlg) |
| 1150 | 1150 | FillComboBox( GetDlgItem( hdlg, IDC_DTRCONTROLCOMBO ), |
| 1151 | 1151 | szDTRControlStrings, DTRControlTable, |
| 1152 | 1152 | sizeof( DTRControlTable) / sizeof( DTRControlTable[0] ), |
| 1153 | - DTRCONTROL( TTYInfo ) ); | |
| 1153 | + TTYInfo.fDtrControl ); | |
| 1154 | 1154 | |
| 1155 | 1155 | // |
| 1156 | 1156 | // fill and init RTS control combo |
| ... | ... | @@ -1158,29 +1158,29 @@ void InitFlowControlDlg(HWND hdlg) |
| 1158 | 1158 | FillComboBox( GetDlgItem( hdlg, IDC_RTSCONTROLCOMBO ), |
| 1159 | 1159 | szRTSControlStrings, RTSControlTable, |
| 1160 | 1160 | sizeof( RTSControlTable) / sizeof( RTSControlTable[0] ), |
| 1161 | - RTSCONTROL( TTYInfo ) ); | |
| 1161 | + TTYInfo.fRtsControl ); | |
| 1162 | 1162 | |
| 1163 | 1163 | // |
| 1164 | 1164 | // XON/XOFF characters |
| 1165 | 1165 | // |
| 1166 | - InitHexControl(hdlg, IDC_XONCHAREDIT, IDC_XONCHARDISP, XONCHAR(TTYInfo)); | |
| 1167 | - InitHexControl(hdlg, IDC_XOFFCHAREDIT, IDC_XOFFCHARDISP, XOFFCHAR(TTYInfo)); | |
| 1166 | + InitHexControl(hdlg, IDC_XONCHAREDIT, IDC_XONCHARDISP, TTYInfo.chXON); | |
| 1167 | + InitHexControl(hdlg, IDC_XOFFCHAREDIT, IDC_XOFFCHARDISP, TTYInfo.chXOFF); | |
| 1168 | 1168 | |
| 1169 | 1169 | // |
| 1170 | 1170 | // XON/XOFF limits |
| 1171 | 1171 | // |
| 1172 | - SetDlgItemInt(hdlg, IDC_XONLIMITEDIT, XONLIMIT(TTYInfo), FALSE); | |
| 1173 | - SetDlgItemInt(hdlg, IDC_XOFFLIMITEDIT, XOFFLIMIT(TTYInfo), FALSE); | |
| 1172 | + SetDlgItemInt(hdlg, IDC_XONLIMITEDIT, TTYInfo.wXONLimit, FALSE); | |
| 1173 | + SetDlgItemInt(hdlg, IDC_XOFFLIMITEDIT, TTYInfo.wXOFFLimit, FALSE); | |
| 1174 | 1174 | |
| 1175 | 1175 | // |
| 1176 | 1176 | // check boxes |
| 1177 | 1177 | // |
| 1178 | - CheckDlgButton(hdlg, IDC_CTSOUTCHK, CTSOUTFLOW(TTYInfo)); | |
| 1179 | - CheckDlgButton(hdlg, IDC_DSROUTCHK, DSROUTFLOW(TTYInfo)); | |
| 1180 | - CheckDlgButton(hdlg, IDC_DSRINCHK, DSRINFLOW(TTYInfo)); | |
| 1181 | - CheckDlgButton(hdlg, IDC_XONXOFFOUTCHK, XONXOFFOUTFLOW(TTYInfo)); | |
| 1182 | - CheckDlgButton(hdlg, IDC_XONXOFFINCHK, XONXOFFINFLOW(TTYInfo)); | |
| 1183 | - CheckDlgButton(hdlg, IDC_TXAFTERXOFFSENTCHK, TXAFTERXOFFSENT(TTYInfo)); | |
| 1178 | + CheckDlgButton(hdlg, IDC_CTSOUTCHK, TTYInfo.fCTSOutFlow); | |
| 1179 | + CheckDlgButton(hdlg, IDC_DSROUTCHK, TTYInfo.fDSROutFlow); | |
| 1180 | + CheckDlgButton(hdlg, IDC_DSRINCHK, TTYInfo.fDSRInFlow); | |
| 1181 | + CheckDlgButton(hdlg, IDC_XONXOFFOUTCHK, TTYInfo.fXonXoffOutFlow); | |
| 1182 | + CheckDlgButton(hdlg, IDC_XONXOFFINCHK, TTYInfo.fXonXoffInFlow); | |
| 1183 | + CheckDlgButton(hdlg, IDC_TXAFTERXOFFSENTCHK, TTYInfo.fTXafterXoffSent); | |
| 1184 | 1184 | |
| 1185 | 1185 | return; |
| 1186 | 1186 | } |
| ... | ... | @@ -1335,7 +1335,7 @@ void InitTimeoutsDlg(HWND hdlg, COMMTIMEOUTS ct) |
| 1335 | 1335 | SetDlgItemInt(hdlg, IDC_READCONSTANTEDIT, ct.ReadTotalTimeoutConstant, FALSE); |
| 1336 | 1336 | SetDlgItemInt(hdlg, IDC_WRITEMULTIPLIEREDIT, ct.WriteTotalTimeoutMultiplier, FALSE); |
| 1337 | 1337 | SetDlgItemInt(hdlg, IDC_WRITECONSTANTEDIT, ct.WriteTotalTimeoutConstant, FALSE); |
| 1338 | - CheckDlgButton(hdlg, IDC_DISPLAYTIMEOUTS, SHOWTIMEOUTS(TTYInfo)); | |
| 1338 | + CheckDlgButton(hdlg, IDC_DISPLAYTIMEOUTS, TTYInfo.fDisplayTimeouts); | |
| 1339 | 1339 | return; |
| 1340 | 1340 | } |
| 1341 | 1341 | |
| ... | ... | @@ -1365,29 +1365,29 @@ void SaveTimeoutsDlg(HWND hdlg) |
| 1365 | 1365 | ctNew.WriteTotalTimeoutMultiplier = GetDlgItemInt(hdlg, IDC_WRITEMULTIPLIEREDIT, NULL, FALSE); |
| 1366 | 1366 | ctNew.WriteTotalTimeoutConstant = GetDlgItemInt(hdlg, IDC_WRITECONSTANTEDIT, NULL, FALSE); |
| 1367 | 1367 | |
| 1368 | - SHOWTIMEOUTS(TTYInfo) = IsDlgButtonChecked(hdlg, IDC_DISPLAYTIMEOUTS); | |
| 1368 | + TTYInfo.fDisplayTimeouts = IsDlgButtonChecked(hdlg, IDC_DISPLAYTIMEOUTS); | |
| 1369 | 1369 | |
| 1370 | 1370 | // |
| 1371 | 1371 | // set new timeouts if they are different |
| 1372 | 1372 | // |
| 1373 | - if (memcmp(&ctNew, &(TIMEOUTSNEW(TTYInfo)), sizeof(COMMTIMEOUTS))) { | |
| 1373 | + if (memcmp(&ctNew, &(TTYInfo.timeoutsnew), sizeof(COMMTIMEOUTS))) { | |
| 1374 | 1374 | // |
| 1375 | 1375 | // if connected, set new time outs and purge pending operations |
| 1376 | 1376 | // |
| 1377 | - if (CONNECTED(TTYInfo)) { | |
| 1378 | - if (!SetCommTimeouts(COMDEV(TTYInfo), &ctNew)) { | |
| 1377 | + if (TTYInfo.fConnected) { | |
| 1378 | + if (!SetCommTimeouts(TTYInfo.hCommPort, &ctNew)) { | |
| 1379 | 1379 | ErrorReporter("SetCommTimeouts"); |
| 1380 | 1380 | return; |
| 1381 | 1381 | } |
| 1382 | 1382 | |
| 1383 | - if (!PurgeComm(COMDEV(TTYInfo), PURGE_TXABORT | PURGE_RXABORT)) | |
| 1383 | + if (!PurgeComm(TTYInfo.hCommPort, PURGE_TXABORT | PURGE_RXABORT)) | |
| 1384 | 1384 | ErrorReporter("PurgeComm"); |
| 1385 | 1385 | } |
| 1386 | 1386 | |
| 1387 | 1387 | // |
| 1388 | 1388 | // save timeouts in the tty info structure |
| 1389 | 1389 | // |
| 1390 | - TIMEOUTSNEW(TTYInfo) = ctNew; | |
| 1390 | + TTYInfo.timeoutsnew = ctNew; | |
| 1391 | 1391 | } |
| 1392 | 1392 | |
| 1393 | 1393 | return; |
| ... | ... | @@ -1419,7 +1419,7 @@ BOOL CALLBACK TimeoutsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lpara |
| 1419 | 1419 | switch(uMessage) |
| 1420 | 1420 | { |
| 1421 | 1421 | case WM_INITDIALOG: // init controls |
| 1422 | - InitTimeoutsDlg(hdlg, TIMEOUTSNEW(TTYInfo)); | |
| 1422 | + InitTimeoutsDlg(hdlg, TTYInfo.timeoutsnew); | |
| 1423 | 1423 | break; |
| 1424 | 1424 | |
| 1425 | 1425 | case WM_COMMAND: | ... | ... |
| ... | ... | @@ -411,7 +411,7 @@ void CheckModemStatus( BOOL bUpdateNow ) |
| 411 | 411 | |
| 412 | 412 | DWORD dwNewModemStatus; |
| 413 | 413 | |
| 414 | - if (!GetCommModemStatus(COMDEV(TTYInfo), &dwNewModemStatus)) | |
| 414 | + if (!GetCommModemStatus(TTYInfo.hCommPort, &dwNewModemStatus)) | |
| 415 | 415 | ErrorReporter("GetCommModemStatus"); |
| 416 | 416 | |
| 417 | 417 | // |
| ... | ... | @@ -483,7 +483,7 @@ void CheckComStat(BOOL bUpdateNow) |
| 483 | 483 | |
| 484 | 484 | BOOL bReport = bUpdateNow; |
| 485 | 485 | |
| 486 | - if (!ClearCommError(COMDEV(TTYInfo), &dwErrors, &ComStatNew)) | |
| 486 | + if (!ClearCommError(TTYInfo.hCommPort, &dwErrors, &ComStatNew)) | |
| 487 | 487 | ErrorReporter("ClearCommError"); |
| 488 | 488 | |
| 489 | 489 | if (dwErrors != dwErrorsOld) { |
| ... | ... | @@ -529,7 +529,7 @@ void ReportCommError() |
| 529 | 529 | // |
| 530 | 530 | // Get and clear current errors on the port |
| 531 | 531 | // |
| 532 | - if (!ClearCommError(COMDEV(TTYInfo), &dwErrors, &comStat)) | |
| 532 | + if (!ClearCommError(TTYInfo.hCommPort, &dwErrors, &comStat)) | |
| 533 | 533 | ErrorReporter("ClearCommError"); |
| 534 | 534 | |
| 535 | 535 | // | ... | ... |
| ... | ... | @@ -138,7 +138,7 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency) |
| 138 | 138 | TransferRepeatDestroy(); |
| 139 | 139 | } |
| 140 | 140 | else { |
| 141 | - REPEATING(TTYInfo) = TRUE; | |
| 141 | + TTYInfo.fRepeating = TRUE; | |
| 142 | 142 | OutputDebugString("Timer setup.\n"); |
| 143 | 143 | } |
| 144 | 144 | |
| ... | ... | @@ -181,7 +181,7 @@ void TransferRepeatDestroy() |
| 181 | 181 | if (!HeapFree(ghWriterHeap, 0, lpBuf)) |
| 182 | 182 | ErrorReporter("HeapFree (data block from writer heap)"); |
| 183 | 183 | |
| 184 | - REPEATING(TTYInfo) = FALSE; | |
| 184 | + TTYInfo.fRepeating = FALSE; | |
| 185 | 185 | OutputDebugString("Repeated transfer destroyed.\r\n"); |
| 186 | 186 | |
| 187 | 187 | // |
| ... | ... | @@ -284,7 +284,7 @@ void TransferFileTextStart(LPCTSTR lpstrFileName) |
| 284 | 284 | TransferFileTextEnd(); |
| 285 | 285 | } |
| 286 | 286 | else |
| 287 | - TRANSFERRING(TTYInfo) = TRUE; | |
| 287 | + TTYInfo.fTransferring = TRUE; | |
| 288 | 288 | |
| 289 | 289 | return; |
| 290 | 290 | } |
| ... | ... | @@ -321,7 +321,7 @@ void TransferFileTextEnd() |
| 321 | 321 | CloseHandle(hTransferAbortEvent); |
| 322 | 322 | CloseHandle(hTransferThread); |
| 323 | 323 | |
| 324 | - TRANSFERRING(TTYInfo) = FALSE; | |
| 324 | + TTYInfo.fTransferring = FALSE; | |
| 325 | 325 | |
| 326 | 326 | // |
| 327 | 327 | // enable transfer menu |
| ... | ... | @@ -407,7 +407,7 @@ void ReceiveFileText(LPCTSTR lpstrFileName) |
| 407 | 407 | // |
| 408 | 408 | hMenu = GetMenu(ghwndMain); |
| 409 | 409 | MenuFlags = MF_ENABLED; |
| 410 | - ChangeConnection(ghwndMain, CONNECTED(TTYInfo)); | |
| 410 | + ChangeConnection(ghwndMain, TTYInfo.fConnected); | |
| 411 | 411 | |
| 412 | 412 | // |
| 413 | 413 | // enable transfer menu | ... | ... |
| ... | ... | @@ -87,61 +87,63 @@ struct TTYInfoStruct |
| 87 | 87 | // |
| 88 | 88 | // macros ( for easier readability ) |
| 89 | 89 | // |
| 90 | -#define COMDEV( x ) (x.hCommPort) | |
| 91 | -#define CURSORSTATE( x ) (x.wCursorState) | |
| 92 | -#define PORT( x ) (x.bPort) | |
| 93 | -#define SCREEN( x ) (x.Screen) | |
| 94 | -#define CONNECTED( x ) (x.fConnected) | |
| 95 | -#define TRANSFERRING( x ) (x.fTransferring) | |
| 96 | -#define REPEATING( x ) (x.fRepeating) | |
| 97 | -#define LOCALECHO( x ) (x.fLocalEcho) | |
| 98 | -#define NEWLINE( x ) (x.fNewLine) | |
| 99 | -#define AUTOWRAP( x ) (x.fAutowrap) | |
| 100 | -#define BYTESIZE( x ) (x.bByteSize) | |
| 101 | -#define PARITY( x ) (x.bParity) | |
| 102 | -#define STOPBITS( x ) (x.bStopBits) | |
| 103 | -#define BAUDRATE( x ) (x.dwBaudRate) | |
| 104 | -#define HTTYFONT( x ) (x.hTTYFont) | |
| 105 | -#define LFTTYFONT( x ) (x.lfTTYFont) | |
| 106 | -#define FGCOLOR( x ) (x.rgbFGColor) | |
| 107 | -#define BGCOLOR( x ) (x.rgbBGColor) | |
| 108 | -#define XSIZE( x ) (x.xSize) | |
| 109 | -#define YSIZE( x ) (x.ySize) | |
| 110 | -#define XSCROLL( x ) (x.xScroll) | |
| 111 | -#define YSCROLL( x ) (x.yScroll) | |
| 112 | -#define XOFFSET( x ) (x.xOffset) | |
| 113 | -#define YOFFSET( x ) (x.yOffset) | |
| 114 | -#define COLUMN( x ) (x.nColumn) | |
| 115 | -#define ROW( x ) (x.nRow) | |
| 116 | -#define XCHAR( x ) (x.xChar) | |
| 117 | -#define YCHAR( x ) (x.yChar) | |
| 118 | -#define DISPLAYERRORS( x ) (x.fDisplayErrors) | |
| 119 | -#define TIMEOUTSORIG( x ) (x.timeoutsorig) | |
| 120 | -#define TIMEOUTSNEW( x ) (x.timeoutsnew) | |
| 121 | -#define WRITERTHREAD( x ) (x.hWriter) | |
| 122 | -#define READSTATTHREAD( x ) (x.hReaderStatus) | |
| 123 | -#define EVENTFLAGS( x ) (x.dwEventFlags) | |
| 124 | -#define FLAGCHAR( x ) (x.chFlag) | |
| 125 | -#define SCREENCHAR( x, col, row ) (x.Screen[row * MAXCOLS + col]) | |
| 126 | - | |
| 127 | -#define DTRCONTROL( x ) (x.fDtrControl) | |
| 128 | -#define RTSCONTROL( x ) (x.fRtsControl) | |
| 129 | -#define XONCHAR( x ) (x.chXON) | |
| 130 | -#define XOFFCHAR( x ) (x.chXOFF) | |
| 131 | -#define XONLIMIT( x ) (x.wXONLimit) | |
| 132 | -#define XOFFLIMIT( x ) (x.wXOFFLimit) | |
| 133 | -#define CTSOUTFLOW( x ) (x.fCTSOutFlow) | |
| 134 | -#define DSROUTFLOW( x ) (x.fDSROutFlow) | |
| 135 | -#define DSRINFLOW( x ) (x.fDSRInFlow) | |
| 136 | -#define XONXOFFOUTFLOW( x ) (x.fXonXoffOutFlow) | |
| 137 | -#define XONXOFFINFLOW( x ) (x.fXonXoffInFlow) | |
| 138 | -#define TXAFTERXOFFSENT(x) (x.fTXafterXoffSent) | |
| 139 | - | |
| 140 | -#define NOREADING( x ) (x.fNoReading) | |
| 141 | -#define NOWRITING( x ) (x.fNoWriting) | |
| 142 | -#define NOEVENTS( x ) (x.fNoEvents) | |
| 143 | -#define NOSTATUS( x ) (x.fNoStatus) | |
| 144 | -#define SHOWTIMEOUTS( x ) (x.fDisplayTimeouts) | |
| 90 | +//#define COMDEV(TTYInfo) (TTYInfo.hCommPort) | |
| 91 | +//#define CURSORSTATE(TTYInfo) (TTYInfo.wCursorState) | |
| 92 | +//#define PORT(TTYInfo) (TTYInfo.bPort) | |
| 93 | +//#define TTYInfo.Screen (TTYInfo.Screen) | |
| 94 | +//#define CONNECTED(TTYInfo) (TTYInfo.fConnected) | |
| 95 | +//#define TTYInfo.fTransferring (TTYInfo.fTransferring) | |
| 96 | +//#define TTYInfo.fRepeating (TTYInfo.fRepeating) | |
| 97 | +//#define TTYInfo.fLocalEcho (TTYInfo.fLocalEcho) | |
| 98 | +//#define TTYInfo.fNewLine (TTYInfo.fNewLine) | |
| 99 | +//#define TTYInfo.fAutowrap TTYInfo.fAutowrap | |
| 100 | +//#define TTYInfo.bByteSize TTYInfo.bByteSize | |
| 101 | +//#define TTYInfo.bParity TTYInfo.bParity | |
| 102 | +//#define TTYInfo.bStopBits TTYInfo.bStopBits | |
| 103 | +//#define TTYInfo.dwBaudRate TTYInfo.dwBaudRate | |
| 104 | +//#define TTYInfo.hTTYFont TTYInfo.hTTYFont | |
| 105 | +//#define TTYInfo.lfTTYFont TTYInfo.lfTTYFont | |
| 106 | +//#define TTYInfo.rgbFGColor TTYInfo.rgbFGColor | |
| 107 | +//#define TTYInfo.rgbBGColor TTYInfo.rgbBGColor | |
| 108 | +//#define TTYInfo.xSize TTYInfo.xSize | |
| 109 | +//#define TTYInfo.ySize TTYInfo.ySize | |
| 110 | +//#define TTYInfo.xScroll TTYInfo.xScroll | |
| 111 | +//#define TTYInfo.yScroll TTYInfo.yScroll | |
| 112 | +//#define TTYInfo.xOffset TTYInfo.xOffset | |
| 113 | +//#define TTYInfo.yOffset TTYInfo.yOffset | |
| 114 | +//#define TTYInfo.nColumn TTYInfo.nColumn | |
| 115 | +//#define TTYInfo.nRow TTYInfo.nRow | |
| 116 | +//#define TTYInfo.xChar TTYInfo.xChar | |
| 117 | +//#define TTYInfo.yChar TTYInfo.yChar | |
| 118 | +//#define TTYInfo.fDisplayErrors TTYInfo.fDisplayErrors | |
| 119 | +//#define TTYInfo.timeoutsorig TTYInfo.timeoutsorig | |
| 120 | +//#define TTYInfo.timeoutsnew TTYInfo.timeoutsnew | |
| 121 | +//#define TTYInfo.hWriter TTYInfo.hWriter | |
| 122 | +//#define TTYInfo.hReaderStatus TTYInfo.hReaderStatus | |
| 123 | +//#define TTYInfo.dwEventFlags TTYInfo.dwEventFlags | |
| 124 | +//#define TTYInfo.chFlag TTYInfo.chFlag | |
| 125 | +//#define SCREENCHAR( x, col, row ) TTYInfo.Screen[row * MAXCOLS + col] | |
| 126 | + | |
| 127 | +//#define TTYInfo.fDtrControl TTYInfo.fDtrControl | |
| 128 | +//#define TTYInfo.fRtsControl TTYInfo.fRtsControl | |
| 129 | +//#define TTYInfo.chXON TTYInfo.chXON | |
| 130 | +//#define TTYInfo.chXOFF TTYInfo.chXOFF | |
| 131 | +//#define TTYInfo.wXONLimit TTYInfo.wXONLimit | |
| 132 | +//#define TTYInfo.wXOFFLimit TTYInfo.wXOFFLimit | |
| 133 | +//#define TTYInfo.fCTSOutFlow TTYInfo.fCTSOutFlow | |
| 134 | +//#define TTYInfo.fDSROutFlow TTYInfo.fDSROutFlow | |
| 135 | +//#define TTYInfo.fDSRInFlow TTYInfo.fDSRInFlow | |
| 136 | +//#define TTYInfo.fXonXoffOutFlow TTYInfo.fXonXoffOutFlow | |
| 137 | +//#define TTYInfo.fXonXoffInFlow TTYInfo.fXonXoffInFlow | |
| 138 | +//#define TTYInfo.fTXafterXoffSent TTYInfo.fTXafterXoffSent | |
| 139 | +// | |
| 140 | +//#define TTYInfo.fNoReading TTYInfo.fNoReading | |
| 141 | +//#define TTYInfo.fNoWriting TTYInfo.fNoWriting | |
| 142 | +//#define TTYInfo.fNoEvents TTYInfo.fNoEvents | |
| 143 | +//#define TTYInfo.fNoStatus TTYInfo.fNoStatus | |
| 144 | +//#define TTYInfo.fDisplayTimeouts TTYInfo.fDisplayTimeouts) | |
| 145 | + | |
| 146 | + | |
| 145 | 147 | |
| 146 | 148 | //--------------------------------------------------------------------------- |
| 147 | 149 | // End of File: ttyinfo.h | ... | ... |
| ... | ... | @@ -432,7 +432,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) |
| 432 | 432 | // |
| 433 | 433 | // If no writing is allowed, then just return |
| 434 | 434 | // |
| 435 | - if (NOWRITING(TTYInfo)) | |
| 435 | + if (TTYInfo.fNoWriting) | |
| 436 | 436 | return ; |
| 437 | 437 | |
| 438 | 438 | // |
| ... | ... | @@ -448,7 +448,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) |
| 448 | 448 | // |
| 449 | 449 | // issue write |
| 450 | 450 | // |
| 451 | - if (!WriteFile(COMDEV(TTYInfo), lpBuf, dwToWrite, &dwWritten, &osWrite)) { | |
| 451 | + if (!WriteFile(TTYInfo.hCommPort, lpBuf, dwToWrite, &dwWritten, &osWrite)) { | |
| 452 | 452 | if (GetLastError() == ERROR_IO_PENDING) { |
| 453 | 453 | // |
| 454 | 454 | // write is delayed |
| ... | ... | @@ -461,7 +461,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) |
| 461 | 461 | // |
| 462 | 462 | case WAIT_OBJECT_0: |
| 463 | 463 | SetLastError(ERROR_SUCCESS); |
| 464 | - if (!GetOverlappedResult(COMDEV(TTYInfo), &osWrite, &dwWritten, FALSE)) { | |
| 464 | + if (!GetOverlappedResult(TTYInfo.hCommPort, &osWrite, &dwWritten, FALSE)) { | |
| 465 | 465 | if (GetLastError() == ERROR_OPERATION_ABORTED) |
| 466 | 466 | UpdateStatus("Write aborted\r\n"); |
| 467 | 467 | else |
| ... | ... | @@ -469,7 +469,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) |
| 469 | 469 | } |
| 470 | 470 | |
| 471 | 471 | if (dwWritten != dwToWrite) { |
| 472 | - if ((GetLastError() == ERROR_SUCCESS) && SHOWTIMEOUTS(TTYInfo)) | |
| 472 | + if ((GetLastError() == ERROR_SUCCESS) && TTYInfo.fDisplayTimeouts) | |
| 473 | 473 | UpdateStatus("Write timed out. (overlapped)\r\n"); |
| 474 | 474 | else |
| 475 | 475 | ErrorReporter("Error writing data to port (overlapped)"); | ... | ... |
Please
register
or
login
to post a comment