Showing
12 changed files
with
464 additions
and
495 deletions
| @@ -13,9 +13,9 @@ | @@ -13,9 +13,9 @@ | ||
| 13 | PURPOSE: Implement the About dialog box for the program. | 13 | PURPOSE: Implement the About dialog box for the program. |
| 14 | 14 | ||
| 15 | FUNCTIONS: | 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,7 +24,7 @@ | ||
| 24 | #include "mttty.h" | 24 | #include "mttty.h" |
| 25 | 25 | ||
| 26 | /* | 26 | /* |
| 27 | - Prototypes for functions called only in this file | 27 | + 仅在此文件中调用的函数原型 |
| 28 | */ | 28 | */ |
| 29 | BOOL CALLBACK AboutDlgProc( HWND, UINT, WPARAM, LPARAM ); | 29 | BOOL CALLBACK AboutDlgProc( HWND, UINT, WPARAM, LPARAM ); |
| 30 | UINT InitAboutDlg( HWND ); | 30 | UINT InitAboutDlg( HWND ); |
| @@ -33,10 +33,10 @@ UINT InitAboutDlg( HWND ); | @@ -33,10 +33,10 @@ UINT InitAboutDlg( HWND ); | ||
| 33 | 33 | ||
| 34 | FUNCTION: CmdAbout( HWND ) | 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 | BOOL CmdAbout(HWND hwnd) | 42 | BOOL CmdAbout(HWND hwnd) |
| @@ -49,12 +49,10 @@ BOOL CmdAbout(HWND hwnd) | @@ -49,12 +49,10 @@ BOOL CmdAbout(HWND hwnd) | ||
| 49 | 49 | ||
| 50 | FUNCTION: InitAboutDlg( HWND ) | 50 | FUNCTION: InitAboutDlg( HWND ) |
| 51 | 51 | ||
| 52 | -PURPOSE: Initializes the modal About dialog | ||
| 53 | - | 52 | +初始化modal About对话框 |
| 54 | PARMATETERS: | 53 | PARMATETERS: |
| 55 | hDlg - Dialog window handle | 54 | hDlg - Dialog window handle |
| 56 | - | ||
| 57 | -COMMENTS: Sets the icon animation timer and the version info. | 55 | +设置图标动画计时器和版本信息。 |
| 58 | 56 | ||
| 59 | HISTORY: Date: Author: Comment: | 57 | HISTORY: Date: Author: Comment: |
| 60 | 10/27/95 AllenD Wrote it | 58 | 10/27/95 AllenD Wrote it |
| @@ -89,15 +87,12 @@ UINT InitAboutDlg(HWND hDlg) | @@ -89,15 +87,12 @@ UINT InitAboutDlg(HWND hDlg) | ||
| 89 | /*----------------------------------------------------------------------------- | 87 | /*----------------------------------------------------------------------------- |
| 90 | 88 | ||
| 91 | FUNCTION: AboutDlgProc(HWND, UINT, WPARAM, LPARAM) | 89 | FUNCTION: AboutDlgProc(HWND, UINT, WPARAM, LPARAM) |
| 92 | - | ||
| 93 | -PURPOSE: Dialog procedure for the "About Box" | ||
| 94 | - | 90 | +关于对话框的对话程序 |
| 95 | PARAMETERS: | 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 | HISTORY: Date: Author: Comment: | 96 | HISTORY: Date: Author: Comment: |
| 102 | 10/27/95 AllenD Wrote it | 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,7 +111,7 @@ BOOL CALLBACK AboutDlgProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lpara | ||
| 116 | 111 | ||
| 117 | case WM_TIMER: | 112 | case WM_TIMER: |
| 118 | /* | 113 | /* |
| 119 | - when timer goes off, then change to next icon | 114 | + 当计时器停止,然后改变到下一个图标 |
| 120 | */ | 115 | */ |
| 121 | { | 116 | { |
| 122 | HICON hIcon; | 117 | HICON hIcon; |
| @@ -15,11 +15,10 @@ | @@ -15,11 +15,10 @@ | ||
| 15 | called to report errors. | 15 | called to report errors. |
| 16 | 16 | ||
| 17 | FUNCTIONS: | 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,13 +70,12 @@ DWORD ErrorExtender(DWORD dwError, char ** szBuffer) | ||
| 71 | /*----------------------------------------------------------------------------- | 70 | /*----------------------------------------------------------------------------- |
| 72 | 71 | ||
| 73 | FUNCTION: ErrorReporter(char *) | 72 | FUNCTION: ErrorReporter(char *) |
| 74 | - | ||
| 75 | -PURPOSE: Report error to user | 73 | +向用户报告错误 |
| 76 | 74 | ||
| 77 | PARAMETERS: | 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 | HISTORY: Date: Author: Comment: | 80 | HISTORY: Date: Author: Comment: |
| 83 | 10/27/95 AllenD Wrote it | 81 | 10/27/95 AllenD Wrote it |
| @@ -94,13 +92,13 @@ void ErrorReporter(char * szMessage) | @@ -94,13 +92,13 @@ void ErrorReporter(char * szMessage) | ||
| 94 | dwErr = GetLastError(); | 92 | dwErr = GetLastError(); |
| 95 | 93 | ||
| 96 | /* | 94 | /* |
| 97 | - Get error string from system | 95 | + 从系统获取错误字符串 |
| 98 | */ | 96 | */ |
| 99 | dwExtSize = ErrorExtender(dwErr, &szExtended); | 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 | szFinal = LocalAlloc(LPTR, strlen(szMessage) + dwExtSize + 30); | 103 | szFinal = LocalAlloc(LPTR, strlen(szMessage) + dwExtSize + 30); |
| 106 | 104 | ||
| @@ -111,14 +109,14 @@ void ErrorReporter(char * szMessage) | @@ -111,14 +109,14 @@ void ErrorReporter(char * szMessage) | ||
| 111 | 109 | ||
| 112 | OutputDebugString(szFinal); | 110 | OutputDebugString(szFinal); |
| 113 | 111 | ||
| 114 | - if (DISPLAYERRORS(TTYInfo)) | 112 | + if (TTYInfo.fDisplayErrors) |
| 115 | MessageBox(ghwndMain, szFinal, NULL, MB_OK); | 113 | MessageBox(ghwndMain, szFinal, NULL, MB_OK); |
| 116 | 114 | ||
| 117 | LocalFree(szFinal); // free final buffer | 115 | LocalFree(szFinal); // free final buffer |
| 118 | } | 116 | } |
| 119 | 117 | ||
| 120 | /* | 118 | /* |
| 121 | - free extended string buffer | 119 | + 释放扩展字符串缓冲区 |
| 122 | */ | 120 | */ |
| 123 | LocalFree(szExtended); | 121 | LocalFree(szExtended); |
| 124 | 122 | ||
| @@ -130,10 +128,10 @@ void ErrorReporter(char * szMessage) | @@ -130,10 +128,10 @@ void ErrorReporter(char * szMessage) | ||
| 130 | 128 | ||
| 131 | FUNCTION: ErrorHandler( char * ) | 129 | FUNCTION: ErrorHandler( char * ) |
| 132 | 130 | ||
| 133 | -PURPOSE: Handle a fatal error (before comm port is opened) | 131 | +PURPOSE: 处理一个致命错误(在comm端口打开之前) |
| 134 | 132 | ||
| 135 | PARAMETERS: | 133 | PARAMETERS: |
| 136 | - szMessage - Error message from app | 134 | + szMessage - 来自app的错误消息 |
| 137 | 135 | ||
| 138 | HISTORY: Date: Author: Comment: | 136 | HISTORY: Date: Author: Comment: |
| 139 | 10/27/95 AllenD Wrote it | 137 | 10/27/95 AllenD Wrote it |
| @@ -150,10 +148,10 @@ void ErrorHandler(char * szMessage) | @@ -150,10 +148,10 @@ void ErrorHandler(char * szMessage) | ||
| 150 | 148 | ||
| 151 | FUNCTION: ErrorInComm( char * ) | 149 | FUNCTION: ErrorInComm( char * ) |
| 152 | 150 | ||
| 153 | -PURPOSE: Handle a fatal error after comm port is opened | 151 | +PURPOSE: 在comm端口打开后处理一个致命错误 |
| 154 | 152 | ||
| 155 | PARAMETERS: | 153 | PARAMETERS: |
| 156 | - szMessage - Error message from app | 154 | + szMessage - 来自app的错误消息 |
| 157 | 155 | ||
| 158 | HISTORY: Date: Author: Comment: | 156 | HISTORY: Date: Author: Comment: |
| 159 | 10/27/95 AllenD Wrote it | 157 | 10/27/95 AllenD Wrote it |
| @@ -10,23 +10,20 @@ | @@ -10,23 +10,20 @@ | ||
| 10 | 10 | ||
| 11 | MODULE: Init.c | 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 | FUNCTIONS: | 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,10 +39,9 @@ DWORD WaitForThreads( DWORD ); | ||
| 42 | 39 | ||
| 43 | /* | 40 | /* |
| 44 | TimeoutsDefault | 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 | COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 }; | 46 | COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 }; |
| 51 | 47 | ||
| @@ -54,9 +50,9 @@ COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 }; | @@ -54,9 +50,9 @@ COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 }; | ||
| 54 | 50 | ||
| 55 | FUNCTION: GlobalInitialize | 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 | HISTORY: Date: Author: Comment: | 57 | HISTORY: Date: Author: Comment: |
| 62 | 10/27/95 AllenD Wrote it | 58 | 10/27/95 AllenD Wrote it |
| @@ -68,37 +64,37 @@ void GlobalInitialize() | @@ -68,37 +64,37 @@ void GlobalInitialize() | ||
| 68 | 64 | ||
| 69 | // | 65 | // |
| 70 | // critical sections in status reporting & node management | 66 | // critical sections in status reporting & node management |
| 71 | - // | 67 | + // 初始化互斥对象 |
| 72 | InitializeCriticalSection(&gStatusCritical); | 68 | InitializeCriticalSection(&gStatusCritical); |
| 73 | InitializeCriticalSection(&gcsWriterHeap); | 69 | InitializeCriticalSection(&gcsWriterHeap); |
| 74 | InitializeCriticalSection(&gcsDataHeap); | 70 | InitializeCriticalSection(&gcsDataHeap); |
| 75 | 71 | ||
| 76 | // | 72 | // |
| 77 | - // status message event | 73 | + // 状态消息事件 |
| 78 | // | 74 | // |
| 79 | ghStatusMessageEvent = CreateEvent(NULL, FALSE, FALSE, NULL); | 75 | ghStatusMessageEvent = CreateEvent(NULL, FALSE, FALSE, NULL); |
| 80 | if (ghStatusMessageEvent == NULL) | 76 | if (ghStatusMessageEvent == NULL) |
| 81 | ErrorReporter("CreateEvent (Status message event)"); | 77 | ErrorReporter("CreateEvent (Status message event)"); |
| 82 | 78 | ||
| 83 | // | 79 | // |
| 84 | - // thread exit event | 80 | + //线程退出事件 |
| 85 | // | 81 | // |
| 86 | ghThreadExitEvent = CreateEvent(NULL, TRUE, FALSE, NULL); | 82 | ghThreadExitEvent = CreateEvent(NULL, TRUE, FALSE, NULL); |
| 87 | if (ghThreadExitEvent == NULL) | 83 | if (ghThreadExitEvent == NULL) |
| 88 | ErrorReporter("CreateEvent (Thread exit event)"); | 84 | ErrorReporter("CreateEvent (Thread exit event)"); |
| 89 | 85 | ||
| 90 | // | 86 | // |
| 91 | - // used in file transfer status bar | 87 | + //用于文件传输状态栏 |
| 92 | // | 88 | // |
| 93 | InitCommonControls(); | 89 | InitCommonControls(); |
| 94 | 90 | ||
| 95 | // | 91 | // |
| 96 | - // font for status reporting control | 92 | + // 字体控制 |
| 97 | // | 93 | // |
| 98 | ghFontStatus = CreateStatusEditFont(); | 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 | gwBaseY = HIWORD(GetDialogBaseUnits()); | 99 | gwBaseY = HIWORD(GetDialogBaseUnits()); |
| 104 | cyMenuHeight = GetSystemMetrics(SM_CYMENU); | 100 | cyMenuHeight = GetSystemMetrics(SM_CYMENU); |
| @@ -116,7 +112,7 @@ void GlobalInitialize() | @@ -116,7 +112,7 @@ void GlobalInitialize() | ||
| 116 | 112 | ||
| 117 | FUNCTION: GlobalCleanup | 113 | FUNCTION: GlobalCleanup |
| 118 | 114 | ||
| 119 | -PURPOSE: Cleans up any global variables | 115 | +PURPOSE: 清除所有全局变量 |
| 120 | 116 | ||
| 121 | COMMENTS: Partner to GlobalInitialize | 117 | COMMENTS: Partner to GlobalInitialize |
| 122 | 118 | ||
| @@ -141,7 +137,7 @@ void GlobalCleanup() | @@ -141,7 +137,7 @@ void GlobalCleanup() | ||
| 141 | 137 | ||
| 142 | FUNCTION: ClearTTYContents | 138 | FUNCTION: ClearTTYContents |
| 143 | 139 | ||
| 144 | -PURPOSE: Clears the tty buffer | 140 | +PURPOSE: 清除tty缓冲区 |
| 145 | 141 | ||
| 146 | RETURN: always TRUE | 142 | RETURN: always TRUE |
| 147 | 143 | ||
| @@ -151,7 +147,7 @@ HISTORY: Date: Author: Comment: | @@ -151,7 +147,7 @@ HISTORY: Date: Author: Comment: | ||
| 151 | -----------------------------------------------------------------------------*/ | 147 | -----------------------------------------------------------------------------*/ |
| 152 | BOOL ClearTTYContents() | 148 | BOOL ClearTTYContents() |
| 153 | { | 149 | { |
| 154 | - FillMemory(SCREEN(TTYInfo), MAXCOLS*MAXROWS, ' '); | 150 | + FillMemory(TTYInfo.Screen, MAXCOLS*MAXROWS, ' '); |
| 155 | return TRUE; | 151 | return TRUE; |
| 156 | } | 152 | } |
| 157 | 153 | ||
| @@ -160,14 +156,13 @@ BOOL ClearTTYContents() | @@ -160,14 +156,13 @@ BOOL ClearTTYContents() | ||
| 160 | 156 | ||
| 161 | FUNCTION: InitNewFont(LOGFONT, COLORREF) | 157 | FUNCTION: InitNewFont(LOGFONT, COLORREF) |
| 162 | 158 | ||
| 163 | -PURPOSE: Prepares a font for use in the TTY screen | 159 | +PURPOSE: 初始化在TTY窗口上使用的字体 |
| 164 | 160 | ||
| 165 | PARAMETERS: | 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 | HISTORY: Date: Author: Comment: | 167 | HISTORY: Date: Author: Comment: |
| 173 | 10/27/95 AllenD Wrote it | 168 | 10/27/95 AllenD Wrote it |
| @@ -179,38 +174,37 @@ void InitNewFont(LOGFONT LogFont, COLORREF rgbColor) | @@ -179,38 +174,37 @@ void InitNewFont(LOGFONT LogFont, COLORREF rgbColor) | ||
| 179 | HDC hDC; | 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 | hDC = GetDC( ghwndMain ) ; | 186 | hDC = GetDC( ghwndMain ) ; |
| 192 | - SelectObject( hDC, HTTYFONT( TTYInfo ) ) ; | 187 | + SelectObject( hDC, TTYInfo.hTTYFont ) ; |
| 193 | GetTextMetrics( hDC, &tm ) ; | 188 | GetTextMetrics( hDC, &tm ) ; |
| 194 | ReleaseDC( ghwndMain, hDC ) ; | 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 | FUNCTION: InitTTYInfo | 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 | HISTORY: Date: Author: Comment: | 209 | HISTORY: Date: Author: Comment: |
| 216 | 10/27/95 AllenD Wrote it | 210 | 10/27/95 AllenD Wrote it |
| @@ -222,79 +216,79 @@ BOOL InitTTYInfo() | @@ -222,79 +216,79 @@ BOOL InitTTYInfo() | ||
| 222 | // | 216 | // |
| 223 | // initialize generial TTY info | 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 | // timeouts | 239 | // timeouts |
| 246 | // | 240 | // |
| 247 | - TIMEOUTSNEW( TTYInfo ) = gTimeoutsDefault; | 241 | + TTYInfo.timeoutsnew = gTimeoutsDefault; |
| 248 | 242 | ||
| 249 | // | 243 | // |
| 250 | // read state and status events | 244 | // read state and status events |
| 251 | // | 245 | // |
| 252 | gdwReceiveState = RECEIVE_TTY; | 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 | // Flow Control Settings | 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 | // setup default font information | 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 | TTYInfo.DownloadReday = FALSE; | 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 | ClearTTYContents(); | 293 | ClearTTYContents(); |
| 300 | 294 | ||
| @@ -305,7 +299,7 @@ BOOL InitTTYInfo() | @@ -305,7 +299,7 @@ BOOL InitTTYInfo() | ||
| 305 | 299 | ||
| 306 | FUNCTION: DestroyTTYInfo | 300 | FUNCTION: DestroyTTYInfo |
| 307 | 301 | ||
| 308 | -PURPOSE: Frees objects associated with the TTYInfo structure | 302 | +PURPOSE: 释放与TTYInfo结构体相关的对象 |
| 309 | 303 | ||
| 310 | HISTORY: Date: Author: Comment: | 304 | HISTORY: Date: Author: Comment: |
| 311 | 10/27/95 AllenD Wrote it | 305 | 10/27/95 AllenD Wrote it |
| @@ -314,14 +308,14 @@ HISTORY: Date: Author: Comment: | @@ -314,14 +308,14 @@ HISTORY: Date: Author: Comment: | ||
| 314 | -----------------------------------------------------------------------------*/ | 308 | -----------------------------------------------------------------------------*/ |
| 315 | void DestroyTTYInfo() | 309 | void DestroyTTYInfo() |
| 316 | { | 310 | { |
| 317 | - DeleteObject(HTTYFONT(TTYInfo)); | 311 | + DeleteObject(TTYInfo.hTTYFont); |
| 318 | } | 312 | } |
| 319 | 313 | ||
| 320 | /*----------------------------------------------------------------------------- | 314 | /*----------------------------------------------------------------------------- |
| 321 | 315 | ||
| 322 | FUNCTION: StartThreads | 316 | FUNCTION: StartThreads |
| 323 | 317 | ||
| 324 | -PURPOSE: Creates the Reader/Status and Writer threads | 318 | +PURPOSE:创建读取/状态和写入线程 |
| 325 | 319 | ||
| 326 | HISTORY: Date: Author: Comment: | 320 | HISTORY: Date: Author: Comment: |
| 327 | 10/27/95 AllenD Wrote it | 321 | 10/27/95 AllenD Wrote it |
| @@ -329,43 +323,27 @@ HISTORY: Date: Author: Comment: | @@ -329,43 +323,27 @@ HISTORY: Date: Author: Comment: | ||
| 329 | -----------------------------------------------------------------------------*/ | 323 | -----------------------------------------------------------------------------*/ |
| 330 | void StartThreads(void) | 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 | FUNCTION: SetupCommPort( void ) | 341 | FUNCTION: SetupCommPort( void ) |
| 363 | 342 | ||
| 364 | -PURPOSE: Setup Communication Port with our settings | 343 | +PURPOSE: 配置串口 |
| 365 | 344 | ||
| 366 | RETURN: | 345 | RETURN: |
| 367 | - Handle of comm port is successful | ||
| 368 | - NULL is error occurs | 346 | + 如果成功返回串口句柄, 否则返回NULL |
| 369 | 347 | ||
| 370 | HISTORY: Date: Author: Comment: | 348 | HISTORY: Date: Author: Comment: |
| 371 | 10/27/95 AllenD Wrote it | 349 | 10/27/95 AllenD Wrote it |
| @@ -375,17 +353,16 @@ HANDLE SetupCommPort() | @@ -375,17 +353,16 @@ HANDLE SetupCommPort() | ||
| 375 | { | 353 | { |
| 376 | int myintPort; | 354 | int myintPort; |
| 377 | // | 355 | // |
| 378 | - // get tty settings from settings dialog | ||
| 379 | - | ||
| 380 | - // | 356 | + //从设置对话框获取tty设置 |
| 357 | + // | ||
| 381 | UpdateTTYInfo(); | 358 | UpdateTTYInfo(); |
| 382 | myintPort = atoi(gszPort+3); | 359 | myintPort = atoi(gszPort+3); |
| 383 | 360 | ||
| 384 | // | 361 | // |
| 385 | - // open communication port handle | 362 | + //打开通信端口句柄 |
| 386 | // | 363 | // |
| 387 | sprintf(gszPort, "\\\\.\\COM%d", myintPort);///可以显示COM10以上端口//add by itas109 2014-01-09 | 364 | sprintf(gszPort, "\\\\.\\COM%d", myintPort);///可以显示COM10以上端口//add by itas109 2014-01-09 |
| 388 | - COMDEV( TTYInfo ) = CreateFile( gszPort, | 365 | + TTYInfo.hCommPort = CreateFile( gszPort, |
| 389 | GENERIC_READ | GENERIC_WRITE, | 366 | GENERIC_READ | GENERIC_WRITE, |
| 390 | 0, | 367 | 0, |
| 391 | 0, | 368 | 0, |
| @@ -393,15 +370,13 @@ HANDLE SetupCommPort() | @@ -393,15 +370,13 @@ HANDLE SetupCommPort() | ||
| 393 | FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, | 370 | FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, |
| 394 | 0); | 371 | 0); |
| 395 | 372 | ||
| 396 | - if (COMDEV(TTYInfo) == INVALID_HANDLE_VALUE) { | 373 | + if (TTYInfo.hCommPort == INVALID_HANDLE_VALUE) { |
| 397 | ErrorReporter("CreateFile"); | 374 | ErrorReporter("CreateFile"); |
| 398 | return NULL; | 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 | ErrorReporter("GetCommTimeouts"); | 380 | ErrorReporter("GetCommTimeouts"); |
| 406 | 381 | ||
| 407 | // | 382 | // |
| @@ -412,12 +387,12 @@ HANDLE SetupCommPort() | @@ -412,12 +387,12 @@ HANDLE SetupCommPort() | ||
| 412 | // | 387 | // |
| 413 | // set comm buffer sizes | 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 | // raise DTR | 393 | // raise DTR |
| 419 | // | 394 | // |
| 420 | - if (!EscapeCommFunction(COMDEV(TTYInfo), SETDTR)) | 395 | + if (!EscapeCommFunction(TTYInfo.hCommPort, SETDTR)) |
| 421 | ErrorReporter("EscapeCommFunction (SETDTR)"); | 396 | ErrorReporter("EscapeCommFunction (SETDTR)"); |
| 422 | 397 | ||
| 423 | // | 398 | // |
| @@ -428,9 +403,9 @@ HANDLE SetupCommPort() | @@ -428,9 +403,9 @@ HANDLE SetupCommPort() | ||
| 428 | // | 403 | // |
| 429 | // set overall connect flag | 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,8 +431,8 @@ DWORD WaitForThreads(DWORD dwTimeout) | ||
| 456 | HANDLE hThreads[2]; | 431 | HANDLE hThreads[2]; |
| 457 | DWORD dwRes; | 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 | // set thread exit event here | 438 | // set thread exit event here |
| @@ -474,10 +449,10 @@ DWORD WaitForThreads(DWORD dwTimeout) | @@ -474,10 +449,10 @@ DWORD WaitForThreads(DWORD dwTimeout) | ||
| 474 | 449 | ||
| 475 | case WAIT_TIMEOUT: | 450 | case WAIT_TIMEOUT: |
| 476 | 451 | ||
| 477 | - if (WaitForSingleObject(READSTATTHREAD(TTYInfo), 0) == WAIT_TIMEOUT) | 452 | + if (WaitForSingleObject(TTYInfo.hReaderStatus, 0) == WAIT_TIMEOUT) |
| 478 | OutputDebugString("Reader/Status Thread didn't exit.\n\r"); | 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 | OutputDebugString("Writer Thread didn't exit.\n\r"); | 456 | OutputDebugString("Writer Thread didn't exit.\n\r"); |
| 482 | 457 | ||
| 483 | break; | 458 | break; |
| @@ -515,10 +490,10 @@ HISTORY: Date: Author: Comment: | @@ -515,10 +490,10 @@ HISTORY: Date: Author: Comment: | ||
| 515 | -----------------------------------------------------------------------------*/ | 490 | -----------------------------------------------------------------------------*/ |
| 516 | BOOL BreakDownCommPort() | 491 | BOOL BreakDownCommPort() |
| 517 | { | 492 | { |
| 518 | - if (!CONNECTED(TTYInfo)) | 493 | + if (!TTYInfo.fConnected) |
| 519 | return FALSE; | 494 | return FALSE; |
| 520 | 495 | ||
| 521 | - CONNECTED( TTYInfo ) = FALSE; | 496 | + TTYInfo.fConnected = FALSE; |
| 522 | 497 | ||
| 523 | // | 498 | // |
| 524 | // wait for the threads for a small period | 499 | // wait for the threads for a small period |
| @@ -534,24 +509,24 @@ BOOL BreakDownCommPort() | @@ -534,24 +509,24 @@ BOOL BreakDownCommPort() | ||
| 534 | // | 509 | // |
| 535 | // lower DTR | 510 | // lower DTR |
| 536 | // | 511 | // |
| 537 | - if (!EscapeCommFunction(COMDEV(TTYInfo), CLRDTR)) | 512 | + if (!EscapeCommFunction(TTYInfo.hCommPort, CLRDTR)) |
| 538 | ErrorReporter("EscapeCommFunction(CLRDTR)"); | 513 | ErrorReporter("EscapeCommFunction(CLRDTR)"); |
| 539 | 514 | ||
| 540 | // | 515 | // |
| 541 | // restore original comm timeouts | 516 | // restore original comm timeouts |
| 542 | // | 517 | // |
| 543 | - if (!SetCommTimeouts(COMDEV(TTYInfo), &(TIMEOUTSORIG(TTYInfo)))) | 518 | + if (!SetCommTimeouts(TTYInfo.hCommPort, &(TTYInfo.timeoutsorig))) |
| 544 | ErrorReporter("SetCommTimeouts (Restoration to original)"); | 519 | ErrorReporter("SetCommTimeouts (Restoration to original)"); |
| 545 | 520 | ||
| 546 | // | 521 | // |
| 547 | // Purge reads/writes, input buffer and output buffer | 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 | ErrorReporter("PurgeComm"); | 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 | return TRUE; | 531 | return TRUE; |
| 557 | } | 532 | } |
| @@ -572,7 +547,7 @@ HISTORY: Date: Author: Comment: | @@ -572,7 +547,7 @@ HISTORY: Date: Author: Comment: | ||
| 572 | -----------------------------------------------------------------------------*/ | 547 | -----------------------------------------------------------------------------*/ |
| 573 | BOOL DisconnectOK() | 548 | BOOL DisconnectOK() |
| 574 | { | 549 | { |
| 575 | - if (!CONNECTED(TTYInfo)) | 550 | + if (!TTYInfo.fConnected) |
| 576 | return TRUE; | 551 | return TRUE; |
| 577 | 552 | ||
| 578 | return ((MessageBox(ghwndMain, "OK to Disconnect?", gszPort, MB_YESNO)) == IDYES); | 553 | return ((MessageBox(ghwndMain, "OK to Disconnect?", gszPort, MB_YESNO)) == IDYES); |
| @@ -12,21 +12,20 @@ | @@ -12,21 +12,20 @@ | ||
| 12 | PURPOSE: Program entry point and window management | 12 | PURPOSE: Program entry point and window management |
| 13 | 13 | ||
| 14 | FUNCTIONS: | 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,7 +160,7 @@ BOOL InitializeApp(HINSTANCE hInst, int nShowCmd) | ||
| 161 | } | 160 | } |
| 162 | 161 | ||
| 163 | QuerySerialPortStatusEx(TTYInfo.unOpenedPortAry,2,255); | 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 | // setup program's tty child window class | 166 | // setup program's tty child window class |
| @@ -236,7 +235,7 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) | @@ -236,7 +235,7 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) | ||
| 236 | OpenTTYChildWindow(hwnd); | 235 | OpenTTYChildWindow(hwnd); |
| 237 | OpenSettingsToolbar(hwnd); | 236 | OpenSettingsToolbar(hwnd); |
| 238 | OpenStatusToolbar(hwnd); | 237 | OpenStatusToolbar(hwnd); |
| 239 | - ChangeConnection(hwnd, CONNECTED(TTYInfo)); | 238 | + ChangeConnection(hwnd, TTYInfo.fConnected); |
| 240 | break; | 239 | break; |
| 241 | 240 | ||
| 242 | case WM_DESTROY: | 241 | case WM_DESTROY: |
| @@ -317,8 +316,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) | @@ -317,8 +316,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) | ||
| 317 | 316 | ||
| 318 | case WM_CLOSE: | 317 | case WM_CLOSE: |
| 319 | if (DisconnectOK()) { | 318 | if (DisconnectOK()) { |
| 320 | - if (CONNECTED(TTYInfo)) { | ||
| 321 | - if (TRANSFERRING(TTYInfo)) | 319 | + if (TTYInfo.fConnected) { |
| 320 | + if (TTYInfo.fTransferring) | ||
| 322 | TransferFileTextEnd(); | 321 | TransferFileTextEnd(); |
| 323 | BreakDownCommPort(); | 322 | BreakDownCommPort(); |
| 324 | } | 323 | } |
| @@ -406,7 +405,7 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam) | @@ -406,7 +405,7 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam) | ||
| 406 | // was abort sent from the abort button? | 405 | // was abort sent from the abort button? |
| 407 | if (LOWORD(lParam) == IDC_ABORTBTN) { | 406 | if (LOWORD(lParam) == IDC_ABORTBTN) { |
| 408 | // am I in a transfer repeat? | 407 | // am I in a transfer repeat? |
| 409 | - if (REPEATING(TTYInfo)) | 408 | + if (TTYInfo.fRepeating) |
| 410 | TransferRepeatDestroy(); | 409 | TransferRepeatDestroy(); |
| 411 | // am I in a normal recieve state, then stop sending | 410 | // am I in a normal recieve state, then stop sending |
| 412 | else if (gdwReceiveState == RECEIVE_TTY) | 411 | else if (gdwReceiveState == RECEIVE_TTY) |
| @@ -462,12 +461,12 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam) | @@ -462,12 +461,12 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam) | ||
| 462 | 461 | ||
| 463 | case ID_FILE_CONNECT: | 462 | case ID_FILE_CONNECT: |
| 464 | if (SetupCommPort() != NULL) | 463 | if (SetupCommPort() != NULL) |
| 465 | - ChangeConnection(hwnd, CONNECTED(TTYInfo)); | 464 | + ChangeConnection(hwnd, TTYInfo.fConnected); |
| 466 | break; | 465 | break; |
| 467 | 466 | ||
| 468 | case ID_FILE_DISCONNECT: | 467 | case ID_FILE_DISCONNECT: |
| 469 | if (BreakDownCommPort()) | 468 | if (BreakDownCommPort()) |
| 470 | - ChangeConnection(hwnd, CONNECTED(TTYInfo)); | 469 | + ChangeConnection(hwnd, TTYInfo.fConnected); |
| 471 | break; | 470 | break; |
| 472 | 471 | ||
| 473 | case ID_FILE_EXIT: | 472 | case ID_FILE_EXIT: |
| @@ -535,48 +534,48 @@ BOOL NEAR ScrollTTYVert( HWND hWnd, WORD wScrollCmd, WORD wScrollPos ) | @@ -535,48 +534,48 @@ BOOL NEAR ScrollTTYVert( HWND hWnd, WORD wScrollCmd, WORD wScrollPos ) | ||
| 535 | switch (wScrollCmd) | 534 | switch (wScrollCmd) |
| 536 | { | 535 | { |
| 537 | case SB_TOP: | 536 | case SB_TOP: |
| 538 | - nScrollAmt = -YOFFSET( TTYInfo ) ; | 537 | + nScrollAmt = -TTYInfo.yOffset ; |
| 539 | break ; | 538 | break ; |
| 540 | 539 | ||
| 541 | case SB_BOTTOM: | 540 | case SB_BOTTOM: |
| 542 | - nScrollAmt = YSCROLL( TTYInfo ) - YOFFSET( TTYInfo ) ; | 541 | + nScrollAmt = TTYInfo.yScroll - TTYInfo.yOffset ; |
| 543 | break ; | 542 | break ; |
| 544 | 543 | ||
| 545 | case SB_PAGEUP: | 544 | case SB_PAGEUP: |
| 546 | - nScrollAmt = -YSIZE( TTYInfo ) ; | 545 | + nScrollAmt = -TTYInfo.ySize ; |
| 547 | break ; | 546 | break ; |
| 548 | 547 | ||
| 549 | case SB_PAGEDOWN: | 548 | case SB_PAGEDOWN: |
| 550 | - nScrollAmt = YSIZE( TTYInfo ) ; | 549 | + nScrollAmt = TTYInfo.ySize ; |
| 551 | break ; | 550 | break ; |
| 552 | 551 | ||
| 553 | case SB_LINEUP: | 552 | case SB_LINEUP: |
| 554 | - nScrollAmt = -YCHAR( TTYInfo ) ; | 553 | + nScrollAmt = -TTYInfo.yChar ; |
| 555 | break ; | 554 | break ; |
| 556 | 555 | ||
| 557 | case SB_LINEDOWN: | 556 | case SB_LINEDOWN: |
| 558 | - nScrollAmt = YCHAR( TTYInfo ) ; | 557 | + nScrollAmt = TTYInfo.yChar ; |
| 559 | break ; | 558 | break ; |
| 560 | 559 | ||
| 561 | case SB_THUMBPOSITION: | 560 | case SB_THUMBPOSITION: |
| 562 | - nScrollAmt = wScrollPos - YOFFSET( TTYInfo ) ; | 561 | + nScrollAmt = wScrollPos - TTYInfo.yOffset ; |
| 563 | break ; | 562 | break ; |
| 564 | 563 | ||
| 565 | default: | 564 | default: |
| 566 | return ( FALSE ) ; | 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 | ScrollWindowEx( hWnd, 0, -nScrollAmt, NULL, NULL, NULL, NULL, SW_INVALIDATE | SW_ERASE) ; | 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 | return ( TRUE ) ; | 580 | return ( TRUE ) ; |
| 582 | 581 | ||
| @@ -610,43 +609,43 @@ BOOL NEAR ScrollTTYHorz( HWND hWnd, WORD wScrollCmd, WORD wScrollPos ) | @@ -610,43 +609,43 @@ BOOL NEAR ScrollTTYHorz( HWND hWnd, WORD wScrollCmd, WORD wScrollPos ) | ||
| 610 | switch (wScrollCmd) | 609 | switch (wScrollCmd) |
| 611 | { | 610 | { |
| 612 | case SB_TOP: | 611 | case SB_TOP: |
| 613 | - nScrollAmt = -XOFFSET( TTYInfo ) ; | 612 | + nScrollAmt = -TTYInfo.xOffset ; |
| 614 | break ; | 613 | break ; |
| 615 | 614 | ||
| 616 | case SB_BOTTOM: | 615 | case SB_BOTTOM: |
| 617 | - nScrollAmt = XSCROLL( TTYInfo ) - XOFFSET( TTYInfo ) ; | 616 | + nScrollAmt = TTYInfo.xScroll - TTYInfo.xOffset ; |
| 618 | break ; | 617 | break ; |
| 619 | 618 | ||
| 620 | case SB_PAGEUP: | 619 | case SB_PAGEUP: |
| 621 | - nScrollAmt = -XSIZE( TTYInfo ) ; | 620 | + nScrollAmt = -TTYInfo.xSize ; |
| 622 | break ; | 621 | break ; |
| 623 | 622 | ||
| 624 | case SB_PAGEDOWN: | 623 | case SB_PAGEDOWN: |
| 625 | - nScrollAmt = XSIZE( TTYInfo ) ; | 624 | + nScrollAmt = TTYInfo.xSize ; |
| 626 | break ; | 625 | break ; |
| 627 | 626 | ||
| 628 | case SB_LINEUP: | 627 | case SB_LINEUP: |
| 629 | - nScrollAmt = -XCHAR( TTYInfo ) ; | 628 | + nScrollAmt = -TTYInfo.xChar ; |
| 630 | break ; | 629 | break ; |
| 631 | 630 | ||
| 632 | case SB_LINEDOWN: | 631 | case SB_LINEDOWN: |
| 633 | - nScrollAmt = XCHAR( TTYInfo ) ; | 632 | + nScrollAmt = TTYInfo.xChar ; |
| 634 | break ; | 633 | break ; |
| 635 | 634 | ||
| 636 | case SB_THUMBPOSITION: | 635 | case SB_THUMBPOSITION: |
| 637 | - nScrollAmt = wScrollPos - XOFFSET( TTYInfo ) ; | 636 | + nScrollAmt = wScrollPos - TTYInfo.xOffset ; |
| 638 | break ; | 637 | break ; |
| 639 | 638 | ||
| 640 | default: | 639 | default: |
| 641 | return ( FALSE ) ; | 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 | ScrollWindowEx( hWnd, -nScrollAmt, 0, NULL, NULL, NULL, NULL, SW_INVALIDATE | SW_ERASE) ; | 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 | return ( TRUE ) ; | 650 | return ( TRUE ) ; |
| 652 | 651 | ||
| @@ -686,34 +685,34 @@ BOOL NEAR PaintTTY( HWND hWnd ) | @@ -686,34 +685,34 @@ BOOL NEAR PaintTTY( HWND hWnd ) | ||
| 686 | int nCount, nHorzPos, nVertPos ; | 685 | int nCount, nHorzPos, nVertPos ; |
| 687 | 686 | ||
| 688 | hDC = BeginPaint( hWnd, &ps ) ; | 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 | rect = ps.rcPaint ; | 691 | rect = ps.rcPaint ; |
| 693 | nRow = | 692 | nRow = |
| 694 | min( MAXROWS - 1, | 693 | min( MAXROWS - 1, |
| 695 | - max( 0, (rect.top + YOFFSET( TTYInfo )) / YCHAR( TTYInfo ) ) ) ; | 694 | + max( 0, (rect.top + TTYInfo.yOffset) / TTYInfo.yChar ) ) ; |
| 696 | nEndRow = | 695 | nEndRow = |
| 697 | min( MAXROWS - 1, | 696 | min( MAXROWS - 1, |
| 698 | - ((rect.bottom + YOFFSET( TTYInfo ) - 1) / YCHAR( TTYInfo ) ) ) ; | 697 | + ((rect.bottom + TTYInfo.yOffset - 1) / TTYInfo.yChar ) ) ; |
| 699 | nCol = | 698 | nCol = |
| 700 | min( MAXCOLS - 1, | 699 | min( MAXCOLS - 1, |
| 701 | - max( 0, (rect.left + XOFFSET( TTYInfo )) / XCHAR( TTYInfo ) ) ) ; | 700 | + max( 0, (rect.left + TTYInfo.xOffset) / TTYInfo.xChar ) ) ; |
| 702 | nEndCol = | 701 | nEndCol = |
| 703 | min( MAXCOLS - 1, | 702 | min( MAXCOLS - 1, |
| 704 | - ((rect.right + XOFFSET( TTYInfo ) - 1) / XCHAR( TTYInfo ) ) ) ; | 703 | + ((rect.right + TTYInfo.xOffset - 1) / TTYInfo.xChar ) ) ; |
| 705 | nCount = nEndCol - nCol + 1 ; | 704 | nCount = nEndCol - nCol + 1 ; |
| 706 | for (; nRow <= nEndRow; nRow++) | 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 | rect.top = nVertPos ; | 709 | rect.top = nVertPos ; |
| 711 | - rect.bottom = nVertPos + YCHAR( TTYInfo ) ; | 710 | + rect.bottom = nVertPos + TTYInfo.yChar ; |
| 712 | rect.left = nHorzPos ; | 711 | rect.left = nHorzPos ; |
| 713 | - rect.right = nHorzPos + XCHAR( TTYInfo ) * nCount ; | 712 | + rect.right = nHorzPos + TTYInfo.xChar * nCount ; |
| 714 | SetBkMode( hDC, TRANSPARENT ) ; | 713 | SetBkMode( hDC, TRANSPARENT ) ; |
| 715 | ExtTextOut( hDC, nHorzPos, nVertPos, ETO_OPAQUE | ETO_CLIPPED, &rect, | 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 | nCount, NULL ) ; | 716 | nCount, NULL ) ; |
| 718 | } | 717 | } |
| 719 | SelectObject( hDC, hOldFont ) ; | 718 | SelectObject( hDC, hOldFont ) ; |
| @@ -740,11 +739,11 @@ BOOL NEAR PaintTTY( HWND hWnd ) | @@ -740,11 +739,11 @@ BOOL NEAR PaintTTY( HWND hWnd ) | ||
| 740 | //--------------------------------------------------------------------------- | 739 | //--------------------------------------------------------------------------- |
| 741 | BOOL NEAR MoveTTYCursor( HWND hWnd ) | 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 | return ( TRUE ) ; | 748 | return ( TRUE ) ; |
| 750 | 749 | ||
| @@ -767,11 +766,11 @@ BOOL NEAR MoveTTYCursor( HWND hWnd ) | @@ -767,11 +766,11 @@ BOOL NEAR MoveTTYCursor( HWND hWnd ) | ||
| 767 | //--------------------------------------------------------------------------- | 766 | //--------------------------------------------------------------------------- |
| 768 | BOOL NEAR SetTTYFocus( HWND hWnd ) | 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 | ShowCaret( hWnd ) ; | 772 | ShowCaret( hWnd ) ; |
| 774 | - CURSORSTATE( TTYInfo ) = CS_SHOW ; | 773 | + TTYInfo.wCursorState= CS_SHOW ; |
| 775 | } | 774 | } |
| 776 | 775 | ||
| 777 | MoveTTYCursor( hWnd ) ; | 776 | MoveTTYCursor( hWnd ) ; |
| @@ -796,11 +795,11 @@ BOOL NEAR SetTTYFocus( HWND hWnd ) | @@ -796,11 +795,11 @@ BOOL NEAR SetTTYFocus( HWND hWnd ) | ||
| 796 | //--------------------------------------------------------------------------- | 795 | //--------------------------------------------------------------------------- |
| 797 | BOOL NEAR KillTTYFocus( HWND hWnd ) | 796 | BOOL NEAR KillTTYFocus( HWND hWnd ) |
| 798 | { | 797 | { |
| 799 | - if (CURSORSTATE( TTYInfo ) != CS_HIDE) | 798 | + if (TTYInfo.wCursorState!= CS_HIDE) |
| 800 | { | 799 | { |
| 801 | HideCaret( hWnd ) ; | 800 | HideCaret( hWnd ) ; |
| 802 | DestroyCaret() ; | 801 | DestroyCaret() ; |
| 803 | - CURSORSTATE( TTYInfo ) = CS_HIDE ; | 802 | + TTYInfo.wCursorState= CS_HIDE ; |
| 804 | } | 803 | } |
| 805 | return ( TRUE ) ; | 804 | return ( TRUE ) ; |
| 806 | 805 | ||
| @@ -835,29 +834,29 @@ BOOL NEAR SizeTTY( HWND hWnd, WORD wWidth, WORD wHeight ) | @@ -835,29 +834,29 @@ BOOL NEAR SizeTTY( HWND hWnd, WORD wWidth, WORD wHeight ) | ||
| 835 | // | 834 | // |
| 836 | // adjust vert settings | 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 | ScrollWindow( hWnd, 0, -nScrollAmt, NULL, NULL ) ; | 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 | // adjust horz settings | 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 | ScrollWindow( hWnd, nScrollAmt, 0, NULL, NULL ); | 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 | InvalidateRect( hWnd, NULL, FALSE ) ; // redraw entire window | 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,12 +905,12 @@ int WINAPI TTYChildProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) | ||
| 906 | // | 905 | // |
| 907 | // keyboard activity in TTY Window | 906 | // keyboard activity in TTY Window |
| 908 | // | 907 | // |
| 909 | - if (CONNECTED(TTYInfo)) { | 908 | + if (TTYInfo.fConnected) { |
| 910 | 909 | ||
| 911 | if (!WriterAddNewNode(WRITE_CHAR, 0, (char) wParam, NULL, NULL, NULL)) | 910 | if (!WriterAddNewNode(WRITE_CHAR, 0, (char) wParam, NULL, NULL, NULL)) |
| 912 | return FALSE; | 911 | return FALSE; |
| 913 | 912 | ||
| 914 | - if (LOCALECHO(TTYInfo)) | 913 | + if (TTYInfo.fLocalEcho) |
| 915 | OutputABufferToWindow(ghWndTTY, (CHAR *) &wParam, 1); | 914 | OutputABufferToWindow(ghWndTTY, (CHAR *) &wParam, 1); |
| 916 | } | 915 | } |
| 917 | } | 916 | } |
| @@ -105,7 +105,7 @@ HANDLE ghFileCapture; | @@ -105,7 +105,7 @@ HANDLE ghFileCapture; | ||
| 105 | 105 | ||
| 106 | // | 106 | // |
| 107 | // Status updating | 107 | // Status updating |
| 108 | -// | 108 | +//ÁÙ½Ö×ÊÔ´, »¥³â·ÃÎÊ |
| 109 | CRITICAL_SECTION gStatusCritical; | 109 | CRITICAL_SECTION gStatusCritical; |
| 110 | HANDLE ghStatusMessageEvent; | 110 | HANDLE ghStatusMessageEvent; |
| 111 | HANDLE ghStatusMessageHeap; | 111 | HANDLE ghStatusMessageHeap; |
| @@ -131,7 +131,7 @@ char gszPort[10]; | @@ -131,7 +131,7 @@ char gszPort[10]; | ||
| 131 | 131 | ||
| 132 | // | 132 | // |
| 133 | // Writer heap variables | 133 | // Writer heap variables |
| 134 | -// | 134 | +// ÁÙ½Ö×ÊÔ´ |
| 135 | CRITICAL_SECTION gcsWriterHeap; | 135 | CRITICAL_SECTION gcsWriterHeap; |
| 136 | CRITICAL_SECTION gcsDataHeap; | 136 | CRITICAL_SECTION gcsDataHeap; |
| 137 | HANDLE ghWriterHeap; | 137 | HANDLE ghWriterHeap; |
| @@ -64,13 +64,13 @@ void OutputABufferToWindow(HWND hTTY, char * lpBuf, DWORD dwBufLen) | @@ -64,13 +64,13 @@ void OutputABufferToWindow(HWND hTTY, char * lpBuf, DWORD dwBufLen) | ||
| 64 | break ; | 64 | break ; |
| 65 | 65 | ||
| 66 | case ASCII_BS: // Backspace CHAR | 66 | case ASCII_BS: // Backspace CHAR |
| 67 | - if (COLUMN( TTYInfo ) > 0) | ||
| 68 | - COLUMN( TTYInfo ) -- ; | 67 | + if (TTYInfo.nColumn > 0) |
| 68 | + TTYInfo.nColumn -- ; | ||
| 69 | break ; | 69 | break ; |
| 70 | 70 | ||
| 71 | case ASCII_CR: // Carriage Return | 71 | case ASCII_CR: // Carriage Return |
| 72 | - COLUMN( TTYInfo ) = 0 ; | ||
| 73 | - if (!NEWLINE( TTYInfo )) | 72 | + TTYInfo.nColumn = 0 ; |
| 73 | + if (!TTYInfo.fNewLine) | ||
| 74 | break; | 74 | break; |
| 75 | 75 | ||
| 76 | // | 76 | // |
| @@ -78,35 +78,35 @@ void OutputABufferToWindow(HWND hTTY, char * lpBuf, DWORD dwBufLen) | @@ -78,35 +78,35 @@ void OutputABufferToWindow(HWND hTTY, char * lpBuf, DWORD dwBufLen) | ||
| 78 | // | 78 | // |
| 79 | 79 | ||
| 80 | case ASCII_LF: // Line Feed | 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 | (MAXROWS - 1) * MAXCOLS ) ; | 85 | (MAXROWS - 1) * MAXCOLS ) ; |
| 86 | - FillMemory((LPSTR) (SCREEN( TTYInfo ) + (MAXROWS - 1) * MAXCOLS), | 86 | + FillMemory((LPSTR) (TTYInfo.Screen + (MAXROWS - 1) * MAXCOLS), |
| 87 | MAXCOLS, ' ' ) ; | 87 | MAXCOLS, ' ' ) ; |
| 88 | InvalidateRect( hTTY, NULL, FALSE ) ; | 88 | InvalidateRect( hTTY, NULL, FALSE ) ; |
| 89 | - ROW( TTYInfo )-- ; | 89 | + TTYInfo.nRow-- ; |
| 90 | } | 90 | } |
| 91 | break ; | 91 | break ; |
| 92 | 92 | ||
| 93 | default: // standard character | 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 | InvalidateRect( hTTY, &rect, FALSE ) ; | 102 | InvalidateRect( hTTY, &rect, FALSE ) ; |
| 103 | 103 | ||
| 104 | // | 104 | // |
| 105 | // Line wrap | 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 | OutputABufferToWindow(hTTY, "\r\n", 2 ) ; | 110 | OutputABufferToWindow(hTTY, "\r\n", 2 ) ; |
| 111 | 111 | ||
| 112 | break; | 112 | break; |
| @@ -100,21 +100,21 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | @@ -100,21 +100,21 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | ||
| 100 | // If no reading is allowed, then set flag to | 100 | // If no reading is allowed, then set flag to |
| 101 | // make it look like a read is already outstanding. | 101 | // make it look like a read is already outstanding. |
| 102 | // | 102 | // |
| 103 | - if (NOREADING( TTYInfo )) | 103 | + if (TTYInfo.fNoReading) |
| 104 | fWaitingOnRead = TRUE; | 104 | fWaitingOnRead = TRUE; |
| 105 | 105 | ||
| 106 | // | 106 | // |
| 107 | // if no read is outstanding, then issue another one | 107 | // if no read is outstanding, then issue another one |
| 108 | // | 108 | // |
| 109 | if (!fWaitingOnRead) { | 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 | if (GetLastError() != ERROR_IO_PENDING) // read not delayed? | 111 | if (GetLastError() != ERROR_IO_PENDING) // read not delayed? |
| 112 | ErrorInComm("ReadFile in ReaderAndStatusProc"); | 112 | ErrorInComm("ReadFile in ReaderAndStatusProc"); |
| 113 | 113 | ||
| 114 | fWaitingOnRead = TRUE; | 114 | fWaitingOnRead = TRUE; |
| 115 | } | 115 | } |
| 116 | else { // read completed immediately | 116 | else { // read completed immediately |
| 117 | - if ((dwRead != MAX_READ_BUFFER) && SHOWTIMEOUTS(TTYInfo)) | 117 | + if ((dwRead != MAX_READ_BUFFER) && TTYInfo.fDisplayTimeouts) |
| 118 | UpdateStatus("Read timed out immediately.\r\n"); | 118 | UpdateStatus("Read timed out immediately.\r\n"); |
| 119 | 119 | ||
| 120 | if (dwRead) | 120 | if (dwRead) |
| @@ -129,9 +129,9 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | @@ -129,9 +129,9 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | ||
| 129 | // This will cause a pending WaitCommEvent to complete | 129 | // This will cause a pending WaitCommEvent to complete |
| 130 | // and the resultant event flag will be NULL. | 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 | ErrorReporter("SetCommMask"); | 135 | ErrorReporter("SetCommMask"); |
| 136 | } | 136 | } |
| 137 | 137 | ||
| @@ -139,16 +139,16 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | @@ -139,16 +139,16 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | ||
| 139 | // If event checks are not allowed, then make it look | 139 | // If event checks are not allowed, then make it look |
| 140 | // like an event check operation is outstanding | 140 | // like an event check operation is outstanding |
| 141 | // | 141 | // |
| 142 | - if (NOEVENTS(TTYInfo)) | 142 | + if (TTYInfo.fNoEvents) |
| 143 | fWaitingOnStat = TRUE; | 143 | fWaitingOnStat = TRUE; |
| 144 | // | 144 | // |
| 145 | // if no status check is outstanding, then issue another one | 145 | // if no status check is outstanding, then issue another one |
| 146 | // | 146 | // |
| 147 | if (!fWaitingOnStat) { | 147 | if (!fWaitingOnStat) { |
| 148 | - if (NOEVENTS(TTYInfo)) | 148 | + if (TTYInfo.fNoEvents) |
| 149 | fWaitingOnStat = TRUE; | 149 | fWaitingOnStat = TRUE; |
| 150 | else { | 150 | else { |
| 151 | - if (!WaitCommEvent(COMDEV(TTYInfo), &dwCommEvent, &osStatus)) { | 151 | + if (!WaitCommEvent(TTYInfo.hCommPort, &dwCommEvent, &osStatus)) { |
| 152 | if (GetLastError() != ERROR_IO_PENDING) // Wait not delayed? | 152 | if (GetLastError() != ERROR_IO_PENDING) // Wait not delayed? |
| 153 | ErrorReporter("WaitCommEvent"); | 153 | ErrorReporter("WaitCommEvent"); |
| 154 | else | 154 | else |
| @@ -171,14 +171,14 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | @@ -171,14 +171,14 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | ||
| 171 | // read completed | 171 | // read completed |
| 172 | // | 172 | // |
| 173 | case WAIT_OBJECT_0: | 173 | case WAIT_OBJECT_0: |
| 174 | - if (!GetOverlappedResult(COMDEV(TTYInfo), &osReader, &dwRead, FALSE)) { | 174 | + if (!GetOverlappedResult(TTYInfo.hCommPort, &osReader, &dwRead, FALSE)) { |
| 175 | if (GetLastError() == ERROR_OPERATION_ABORTED) | 175 | if (GetLastError() == ERROR_OPERATION_ABORTED) |
| 176 | UpdateStatus("Read aborted\r\n"); | 176 | UpdateStatus("Read aborted\r\n"); |
| 177 | else | 177 | else |
| 178 | ErrorInComm("GetOverlappedResult (in Reader)"); | 178 | ErrorInComm("GetOverlappedResult (in Reader)"); |
| 179 | } | 179 | } |
| 180 | else { // read completed successfully | 180 | else { // read completed successfully |
| 181 | - if ((dwRead != MAX_READ_BUFFER) && SHOWTIMEOUTS(TTYInfo)) | 181 | + if ((dwRead != MAX_READ_BUFFER) && TTYInfo.fDisplayTimeouts) |
| 182 | UpdateStatus("Read timed out overlapped.\r\n"); | 182 | UpdateStatus("Read timed out overlapped.\r\n"); |
| 183 | 183 | ||
| 184 | if (dwRead) | 184 | if (dwRead) |
| @@ -259,7 +259,7 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | @@ -259,7 +259,7 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | ||
| 259 | // status completed | 259 | // status completed |
| 260 | // | 260 | // |
| 261 | case WAIT_OBJECT_0 + 1: | 261 | case WAIT_OBJECT_0 + 1: |
| 262 | - if (!GetOverlappedResult(COMDEV(TTYInfo), &osStatus, &dwOvRes, FALSE)) { | 262 | + if (!GetOverlappedResult(TTYInfo.hCommPort, &osStatus, &dwOvRes, FALSE)) { |
| 263 | if (GetLastError() == ERROR_OPERATION_ABORTED) | 263 | if (GetLastError() == ERROR_OPERATION_ABORTED) |
| 264 | UpdateStatus("WaitCommEvent aborted\r\n"); | 264 | UpdateStatus("WaitCommEvent aborted\r\n"); |
| 265 | else | 265 | else |
| @@ -295,7 +295,7 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | @@ -295,7 +295,7 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) | ||
| 295 | // if status checks are not allowed, then don't issue the | 295 | // if status checks are not allowed, then don't issue the |
| 296 | // modem status check nor the com stat check | 296 | // modem status check nor the com stat check |
| 297 | // | 297 | // |
| 298 | - if (!NOSTATUS(TTYInfo)) { | 298 | + if (!TTYInfo.fNoStatus) { |
| 299 | CheckModemStatus(FALSE); // take this opportunity to do | 299 | CheckModemStatus(FALSE); // take this opportunity to do |
| 300 | CheckComStat(FALSE); // a modem status check and | 300 | CheckComStat(FALSE); // a modem status check and |
| 301 | // a comm status check | 301 | // a comm status check |
| @@ -260,36 +260,36 @@ void UpdateTTYInfo() | @@ -260,36 +260,36 @@ void UpdateTTYInfo() | ||
| 260 | // | 260 | // |
| 261 | GetDlgItemText(ghWndToolbarDlg, IDC_PORTCOMBO, gszPort, sizeof(gszPort)); | 261 | GetDlgItemText(ghWndToolbarDlg, IDC_PORTCOMBO, gszPort, sizeof(gszPort)); |
| 262 | 262 | ||
| 263 | - BAUDRATE(TTYInfo) = GetdwTTYItem( ghWndToolbarDlg, | 263 | + TTYInfo.dwBaudRate = GetdwTTYItem( ghWndToolbarDlg, |
| 264 | IDC_BAUDCOMBO, | 264 | IDC_BAUDCOMBO, |
| 265 | szBaud, | 265 | szBaud, |
| 266 | BaudTable, | 266 | BaudTable, |
| 267 | sizeof(BaudTable)/sizeof(BaudTable[0])); | 267 | sizeof(BaudTable)/sizeof(BaudTable[0])); |
| 268 | 268 | ||
| 269 | - PARITY(TTYInfo) = GetbTTYItem( ghWndToolbarDlg, | 269 | + TTYInfo.bParity = GetbTTYItem( ghWndToolbarDlg, |
| 270 | IDC_PARITYCOMBO, | 270 | IDC_PARITYCOMBO, |
| 271 | szParity, | 271 | szParity, |
| 272 | ParityTable, | 272 | ParityTable, |
| 273 | sizeof(ParityTable)/sizeof(ParityTable[0])); | 273 | sizeof(ParityTable)/sizeof(ParityTable[0])); |
| 274 | 274 | ||
| 275 | - STOPBITS(TTYInfo) = GetbTTYItem( ghWndToolbarDlg, | 275 | + TTYInfo.bStopBits = GetbTTYItem( ghWndToolbarDlg, |
| 276 | IDC_STOPBITSCOMBO, | 276 | IDC_STOPBITSCOMBO, |
| 277 | szStopBits, | 277 | szStopBits, |
| 278 | StopBitsTable, | 278 | StopBitsTable, |
| 279 | sizeof(StopBitsTable)/sizeof(StopBitsTable[0])); | 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 | UpdateConnection(); | 293 | UpdateConnection(); |
| 294 | 294 | ||
| 295 | return; | 295 | return; |
| @@ -317,21 +317,21 @@ BOOL UpdateConnection() | @@ -317,21 +317,21 @@ BOOL UpdateConnection() | ||
| 317 | // | 317 | // |
| 318 | // get current DCB settings | 318 | // get current DCB settings |
| 319 | // | 319 | // |
| 320 | - if (!GetCommState(COMDEV(TTYInfo), &dcb)) | 320 | + if (!GetCommState(TTYInfo.hCommPort, &dcb)) |
| 321 | ErrorReporter("GetCommState"); | 321 | ErrorReporter("GetCommState"); |
| 322 | 322 | ||
| 323 | // | 323 | // |
| 324 | // update DCB rate, byte size, parity, and stop bits size | 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 | // update event flags | 332 | // update event flags |
| 333 | // | 333 | // |
| 334 | - if (EVENTFLAGS(TTYInfo) & EV_RXFLAG) | 334 | + if (TTYInfo.dwEventFlags & EV_RXFLAG) |
| 335 | dcb.EvtChar = TTYInfo.chFlag; | 335 | dcb.EvtChar = TTYInfo.chFlag; |
| 336 | else | 336 | else |
| 337 | dcb.EvtChar = '\0'; | 337 | dcb.EvtChar = '\0'; |
| @@ -339,19 +339,19 @@ BOOL UpdateConnection() | @@ -339,19 +339,19 @@ BOOL UpdateConnection() | ||
| 339 | // | 339 | // |
| 340 | // update flow control settings | 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 | // DCB settings not in the user's control | 357 | // DCB settings not in the user's control |
| @@ -361,13 +361,13 @@ BOOL UpdateConnection() | @@ -361,13 +361,13 @@ BOOL UpdateConnection() | ||
| 361 | // | 361 | // |
| 362 | // set new state | 362 | // set new state |
| 363 | // | 363 | // |
| 364 | - if (!SetCommState(COMDEV(TTYInfo), &dcb)) | 364 | + if (!SetCommState(TTYInfo.hCommPort, &dcb)) |
| 365 | ErrorReporter("SetCommState"); | 365 | ErrorReporter("SetCommState"); |
| 366 | 366 | ||
| 367 | // | 367 | // |
| 368 | // set new timeouts | 368 | // set new timeouts |
| 369 | // | 369 | // |
| 370 | - if (!SetCommTimeouts(COMDEV(TTYInfo), &(TIMEOUTSNEW(TTYInfo)))) | 370 | + if (!SetCommTimeouts(TTYInfo.hCommPort, &(TTYInfo.timeoutsnew))) |
| 371 | ErrorReporter("SetCommTimeouts"); | 371 | ErrorReporter("SetCommTimeouts"); |
| 372 | 372 | ||
| 373 | return TRUE; | 373 | return TRUE; |
| @@ -487,7 +487,7 @@ BOOL SettingsDlgInit( HWND hDlg ) | @@ -487,7 +487,7 @@ BOOL SettingsDlgInit( HWND hDlg ) | ||
| 487 | } | 487 | } |
| 488 | 488 | ||
| 489 | SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_SETCURSEL, | 489 | SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_SETCURSEL, |
| 490 | - (WPARAM) (PORT( TTYInfo ) - 1), 0L ) ; | 490 | + (WPARAM) (TTYInfo.bPort - 1), 0L ) ; |
| 491 | 491 | ||
| 492 | GetDlgItemText(hDlg, IDC_PORTCOMBO, gszPort, sizeof(gszPort)); | 492 | GetDlgItemText(hDlg, IDC_PORTCOMBO, gszPort, sizeof(gszPort)); |
| 493 | 493 | ||
| @@ -497,7 +497,7 @@ BOOL SettingsDlgInit( HWND hDlg ) | @@ -497,7 +497,7 @@ BOOL SettingsDlgInit( HWND hDlg ) | ||
| 497 | FillComboBox( GetDlgItem( hDlg, IDC_BAUDCOMBO ), | 497 | FillComboBox( GetDlgItem( hDlg, IDC_BAUDCOMBO ), |
| 498 | szBaud, BaudTable, | 498 | szBaud, BaudTable, |
| 499 | sizeof( BaudTable ) / sizeof( BaudTable[ 0 ] ), | 499 | sizeof( BaudTable ) / sizeof( BaudTable[ 0 ] ), |
| 500 | - BAUDRATE( TTYInfo ) ) ; | 500 | + TTYInfo.dwBaudRate ) ; |
| 501 | 501 | ||
| 502 | // | 502 | // |
| 503 | // fill data bits combo box and make initial selection | 503 | // fill data bits combo box and make initial selection |
| @@ -511,7 +511,7 @@ BOOL SettingsDlgInit( HWND hDlg ) | @@ -511,7 +511,7 @@ BOOL SettingsDlgInit( HWND hDlg ) | ||
| 511 | // | 511 | // |
| 512 | // if wCount is current selection, tell the combo box | 512 | // if wCount is current selection, tell the combo box |
| 513 | // | 513 | // |
| 514 | - if (wCount == BYTESIZE( TTYInfo )) | 514 | + if (wCount == TTYInfo.bByteSize) |
| 515 | SendDlgItemMessage( hDlg, IDC_DATABITSCOMBO, CB_SETCURSEL, | 515 | SendDlgItemMessage( hDlg, IDC_DATABITSCOMBO, CB_SETCURSEL, |
| 516 | (WPARAM) wPosition, 0L ) ; | 516 | (WPARAM) wPosition, 0L ) ; |
| 517 | } | 517 | } |
| @@ -522,7 +522,7 @@ BOOL SettingsDlgInit( HWND hDlg ) | @@ -522,7 +522,7 @@ BOOL SettingsDlgInit( HWND hDlg ) | ||
| 522 | FillComboBox( GetDlgItem( hDlg, IDC_PARITYCOMBO ), | 522 | FillComboBox( GetDlgItem( hDlg, IDC_PARITYCOMBO ), |
| 523 | szParity, ParityTable, | 523 | szParity, ParityTable, |
| 524 | sizeof( ParityTable ) / sizeof( ParityTable[ 0 ] ), | 524 | sizeof( ParityTable ) / sizeof( ParityTable[ 0 ] ), |
| 525 | - PARITY( TTYInfo ) ) ; | 525 | + TTYInfo.bParity ) ; |
| 526 | 526 | ||
| 527 | // | 527 | // |
| 528 | // fill stop bits combo box and make initial selection | 528 | // fill stop bits combo box and make initial selection |
| @@ -530,19 +530,19 @@ BOOL SettingsDlgInit( HWND hDlg ) | @@ -530,19 +530,19 @@ BOOL SettingsDlgInit( HWND hDlg ) | ||
| 530 | FillComboBox( GetDlgItem( hDlg, IDC_STOPBITSCOMBO ), | 530 | FillComboBox( GetDlgItem( hDlg, IDC_STOPBITSCOMBO ), |
| 531 | szStopBits, StopBitsTable, | 531 | szStopBits, StopBitsTable, |
| 532 | sizeof( StopBitsTable ) / sizeof ( StopBitsTable[ 0 ] ), | 532 | sizeof( StopBitsTable ) / sizeof ( StopBitsTable[ 0 ] ), |
| 533 | - STOPBITS( TTYInfo ) ) ; | 533 | + TTYInfo.bStopBits ) ; |
| 534 | // | 534 | // |
| 535 | // set check marks based on TTY data | 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 | return ( TRUE ) ; | 547 | return ( TRUE ) ; |
| 548 | 548 | ||
| @@ -706,11 +706,11 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) | @@ -706,11 +706,11 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) | ||
| 706 | break; | 706 | break; |
| 707 | case IDC_BUTTON_CONNECT_UART: // font button pressed | 707 | case IDC_BUTTON_CONNECT_UART: // font button pressed |
| 708 | { | 708 | { |
| 709 | - if (!CONNECTED(TTYInfo)) | 709 | + if (!TTYInfo.fConnected) |
| 710 | { | 710 | { |
| 711 | if (SetupCommPort() != NULL) | 711 | if (SetupCommPort() != NULL) |
| 712 | { | 712 | { |
| 713 | - ChangeConnection(hWndDlg, CONNECTED(TTYInfo)); | 713 | + ChangeConnection(hWndDlg, TTYInfo.fConnected); |
| 714 | SetWindowText(GetDlgItem(hWndDlg, IDC_BUTTON_CONNECT_UART), "断开夹具"); | 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,7 +718,7 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) | ||
| 718 | { | 718 | { |
| 719 | if (BreakDownCommPort()) | 719 | if (BreakDownCommPort()) |
| 720 | { | 720 | { |
| 721 | - ChangeConnection(hWndDlg, CONNECTED(TTYInfo)); | 721 | + ChangeConnection(hWndDlg, TTYInfo.fConnected); |
| 722 | SetWindowText(GetDlgItem(hWndDlg, IDC_BUTTON_CONNECT_UART), "连接夹具"); | 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,11 +731,11 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) | ||
| 731 | CHOOSEFONT cf = {0}; | 731 | CHOOSEFONT cf = {0}; |
| 732 | LOGFONT lf; | 732 | LOGFONT lf; |
| 733 | 733 | ||
| 734 | - lf = LFTTYFONT(TTYInfo); | 734 | + lf = TTYInfo.lfTTYFont; |
| 735 | cf.lStructSize = sizeof(CHOOSEFONT); | 735 | cf.lStructSize = sizeof(CHOOSEFONT); |
| 736 | cf.hwndOwner = hWndDlg; | 736 | cf.hwndOwner = hWndDlg; |
| 737 | cf.lpLogFont = &lf; | 737 | cf.lpLogFont = &lf; |
| 738 | - cf.rgbColors = FGCOLOR(TTYInfo); | 738 | + cf.rgbColors = TTYInfo.rgbFGColor; |
| 739 | cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_FIXEDPITCHONLY | \ | 739 | cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_FIXEDPITCHONLY | \ |
| 740 | CF_EFFECTS; | 740 | CF_EFFECTS; |
| 741 | 741 | ||
| @@ -748,7 +748,7 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) | @@ -748,7 +748,7 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) | ||
| 748 | // fix scroll bar sizes since we may have more or less pixels per | 748 | // fix scroll bar sizes since we may have more or less pixels per |
| 749 | // character now | 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 | // repaint screen contents | 754 | // repaint screen contents |
| @@ -784,7 +784,7 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) | @@ -784,7 +784,7 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) | ||
| 784 | break; | 784 | break; |
| 785 | 785 | ||
| 786 | default: // some other control has been modified | 786 | default: // some other control has been modified |
| 787 | - if (CONNECTED(TTYInfo)) | 787 | + if (TTYInfo.fConnected) |
| 788 | UpdateTTYInfo(); | 788 | UpdateTTYInfo(); |
| 789 | break; | 789 | break; |
| 790 | } | 790 | } |
| @@ -911,7 +911,7 @@ void InitCommEventsDlg(HWND hdlg, DWORD dwEventFlags) | @@ -911,7 +911,7 @@ void InitCommEventsDlg(HWND hdlg, DWORD dwEventFlags) | ||
| 911 | for (i = IDC_EVBREAKBTN, j = 0; i <= IDC_EVTXEMPTYBTN; i++, j++) | 911 | for (i = IDC_EVBREAKBTN, j = 0; i <= IDC_EVTXEMPTYBTN; i++, j++) |
| 912 | CheckDlgButton( hdlg, i, dwEventFlags & EventFlagsTable[j]) ; | 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 | EnableWindow(GetDlgItem(hdlg, IDC_FLAGEDIT), dwEventFlags & EV_RXFLAG); | 916 | EnableWindow(GetDlgItem(hdlg, IDC_FLAGEDIT), dwEventFlags & EV_RXFLAG); |
| 917 | EnableWindow(GetDlgItem(hdlg, IDC_FLAGCHAR), dwEventFlags & EV_RXFLAG); | 917 | EnableWindow(GetDlgItem(hdlg, IDC_FLAGCHAR), dwEventFlags & EV_RXFLAG); |
| @@ -954,17 +954,17 @@ void SaveCommEventsDlg(HWND hdlg) | @@ -954,17 +954,17 @@ void SaveCommEventsDlg(HWND hdlg) | ||
| 954 | // get current flag character from dialog | 954 | // get current flag character from dialog |
| 955 | // | 955 | // |
| 956 | chNewFlag = GetHexControl(hdlg, IDC_FLAGEDIT, IDC_FLAGCHAR); | 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 | UpdateTTYInfo(); | 960 | UpdateTTYInfo(); |
| 961 | } | 961 | } |
| 962 | 962 | ||
| 963 | // | 963 | // |
| 964 | // if new flags have been selected, or | 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 | return; | 969 | return; |
| 970 | } | 970 | } |
| @@ -995,7 +995,7 @@ BOOL CALLBACK CommEventsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lpa | @@ -995,7 +995,7 @@ BOOL CALLBACK CommEventsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lpa | ||
| 995 | switch(uMessage) | 995 | switch(uMessage) |
| 996 | { | 996 | { |
| 997 | case WM_INITDIALOG: // init controls | 997 | case WM_INITDIALOG: // init controls |
| 998 | - InitCommEventsDlg(hdlg, EVENTFLAGS(TTYInfo)); | 998 | + InitCommEventsDlg(hdlg, TTYInfo.dwEventFlags); |
| 999 | break; | 999 | break; |
| 1000 | 1000 | ||
| 1001 | case WM_COMMAND: | 1001 | case WM_COMMAND: |
| @@ -1064,10 +1064,10 @@ void SaveFlowControlDlg(HWND hdlg) | @@ -1064,10 +1064,10 @@ void SaveFlowControlDlg(HWND hdlg) | ||
| 1064 | dwNewRTSControl = GetdwTTYItem( hdlg, IDC_RTSCONTROLCOMBO, | 1064 | dwNewRTSControl = GetdwTTYItem( hdlg, IDC_RTSCONTROLCOMBO, |
| 1065 | szRTSControlStrings, RTSControlTable, | 1065 | szRTSControlStrings, RTSControlTable, |
| 1066 | sizeof(RTSControlTable)/sizeof(RTSControlTable[0])); | 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 | fUpdateDCB = TRUE; | 1071 | fUpdateDCB = TRUE; |
| 1072 | } | 1072 | } |
| 1073 | 1073 | ||
| @@ -1076,10 +1076,10 @@ void SaveFlowControlDlg(HWND hdlg) | @@ -1076,10 +1076,10 @@ void SaveFlowControlDlg(HWND hdlg) | ||
| 1076 | // | 1076 | // |
| 1077 | wNewXONLimit = GetDlgItemInt(hdlg, IDC_XONLIMITEDIT, &fSuccess, FALSE); | 1077 | wNewXONLimit = GetDlgItemInt(hdlg, IDC_XONLIMITEDIT, &fSuccess, FALSE); |
| 1078 | wNewXOFFLimit = GetDlgItemInt(hdlg, IDC_XOFFLIMITEDIT, &fSuccess, FALSE); | 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 | fUpdateDCB = TRUE; | 1083 | fUpdateDCB = TRUE; |
| 1084 | } | 1084 | } |
| 1085 | 1085 | ||
| @@ -1088,10 +1088,10 @@ void SaveFlowControlDlg(HWND hdlg) | @@ -1088,10 +1088,10 @@ void SaveFlowControlDlg(HWND hdlg) | ||
| 1088 | // | 1088 | // |
| 1089 | chNewXON = GetHexControl(hdlg, IDC_XONCHAREDIT, IDC_XONCHARDISP); | 1089 | chNewXON = GetHexControl(hdlg, IDC_XONCHAREDIT, IDC_XONCHARDISP); |
| 1090 | chNewXOFF = GetHexControl(hdlg, IDC_XOFFCHAREDIT, IDC_XOFFCHARDISP); | 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 | fUpdateDCB = TRUE; | 1095 | fUpdateDCB = TRUE; |
| 1096 | } | 1096 | } |
| 1097 | 1097 | ||
| @@ -1105,18 +1105,18 @@ void SaveFlowControlDlg(HWND hdlg) | @@ -1105,18 +1105,18 @@ void SaveFlowControlDlg(HWND hdlg) | ||
| 1105 | fNewXOut = IsDlgButtonChecked(hdlg, IDC_XONXOFFOUTCHK); | 1105 | fNewXOut = IsDlgButtonChecked(hdlg, IDC_XONXOFFOUTCHK); |
| 1106 | fNewXIn = IsDlgButtonChecked(hdlg, IDC_XONXOFFINCHK); | 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 | fUpdateDCB = TRUE; | 1120 | fUpdateDCB = TRUE; |
| 1121 | } | 1121 | } |
| 1122 | 1122 | ||
| @@ -1150,7 +1150,7 @@ void InitFlowControlDlg(HWND hdlg) | @@ -1150,7 +1150,7 @@ void InitFlowControlDlg(HWND hdlg) | ||
| 1150 | FillComboBox( GetDlgItem( hdlg, IDC_DTRCONTROLCOMBO ), | 1150 | FillComboBox( GetDlgItem( hdlg, IDC_DTRCONTROLCOMBO ), |
| 1151 | szDTRControlStrings, DTRControlTable, | 1151 | szDTRControlStrings, DTRControlTable, |
| 1152 | sizeof( DTRControlTable) / sizeof( DTRControlTable[0] ), | 1152 | sizeof( DTRControlTable) / sizeof( DTRControlTable[0] ), |
| 1153 | - DTRCONTROL( TTYInfo ) ); | 1153 | + TTYInfo.fDtrControl ); |
| 1154 | 1154 | ||
| 1155 | // | 1155 | // |
| 1156 | // fill and init RTS control combo | 1156 | // fill and init RTS control combo |
| @@ -1158,29 +1158,29 @@ void InitFlowControlDlg(HWND hdlg) | @@ -1158,29 +1158,29 @@ void InitFlowControlDlg(HWND hdlg) | ||
| 1158 | FillComboBox( GetDlgItem( hdlg, IDC_RTSCONTROLCOMBO ), | 1158 | FillComboBox( GetDlgItem( hdlg, IDC_RTSCONTROLCOMBO ), |
| 1159 | szRTSControlStrings, RTSControlTable, | 1159 | szRTSControlStrings, RTSControlTable, |
| 1160 | sizeof( RTSControlTable) / sizeof( RTSControlTable[0] ), | 1160 | sizeof( RTSControlTable) / sizeof( RTSControlTable[0] ), |
| 1161 | - RTSCONTROL( TTYInfo ) ); | 1161 | + TTYInfo.fRtsControl ); |
| 1162 | 1162 | ||
| 1163 | // | 1163 | // |
| 1164 | // XON/XOFF characters | 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 | // XON/XOFF limits | 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 | // check boxes | 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 | return; | 1185 | return; |
| 1186 | } | 1186 | } |
| @@ -1335,7 +1335,7 @@ void InitTimeoutsDlg(HWND hdlg, COMMTIMEOUTS ct) | @@ -1335,7 +1335,7 @@ void InitTimeoutsDlg(HWND hdlg, COMMTIMEOUTS ct) | ||
| 1335 | SetDlgItemInt(hdlg, IDC_READCONSTANTEDIT, ct.ReadTotalTimeoutConstant, FALSE); | 1335 | SetDlgItemInt(hdlg, IDC_READCONSTANTEDIT, ct.ReadTotalTimeoutConstant, FALSE); |
| 1336 | SetDlgItemInt(hdlg, IDC_WRITEMULTIPLIEREDIT, ct.WriteTotalTimeoutMultiplier, FALSE); | 1336 | SetDlgItemInt(hdlg, IDC_WRITEMULTIPLIEREDIT, ct.WriteTotalTimeoutMultiplier, FALSE); |
| 1337 | SetDlgItemInt(hdlg, IDC_WRITECONSTANTEDIT, ct.WriteTotalTimeoutConstant, FALSE); | 1337 | SetDlgItemInt(hdlg, IDC_WRITECONSTANTEDIT, ct.WriteTotalTimeoutConstant, FALSE); |
| 1338 | - CheckDlgButton(hdlg, IDC_DISPLAYTIMEOUTS, SHOWTIMEOUTS(TTYInfo)); | 1338 | + CheckDlgButton(hdlg, IDC_DISPLAYTIMEOUTS, TTYInfo.fDisplayTimeouts); |
| 1339 | return; | 1339 | return; |
| 1340 | } | 1340 | } |
| 1341 | 1341 | ||
| @@ -1365,29 +1365,29 @@ void SaveTimeoutsDlg(HWND hdlg) | @@ -1365,29 +1365,29 @@ void SaveTimeoutsDlg(HWND hdlg) | ||
| 1365 | ctNew.WriteTotalTimeoutMultiplier = GetDlgItemInt(hdlg, IDC_WRITEMULTIPLIEREDIT, NULL, FALSE); | 1365 | ctNew.WriteTotalTimeoutMultiplier = GetDlgItemInt(hdlg, IDC_WRITEMULTIPLIEREDIT, NULL, FALSE); |
| 1366 | ctNew.WriteTotalTimeoutConstant = GetDlgItemInt(hdlg, IDC_WRITECONSTANTEDIT, NULL, FALSE); | 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 | // set new timeouts if they are different | 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 | // if connected, set new time outs and purge pending operations | 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 | ErrorReporter("SetCommTimeouts"); | 1379 | ErrorReporter("SetCommTimeouts"); |
| 1380 | return; | 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 | ErrorReporter("PurgeComm"); | 1384 | ErrorReporter("PurgeComm"); |
| 1385 | } | 1385 | } |
| 1386 | 1386 | ||
| 1387 | // | 1387 | // |
| 1388 | // save timeouts in the tty info structure | 1388 | // save timeouts in the tty info structure |
| 1389 | // | 1389 | // |
| 1390 | - TIMEOUTSNEW(TTYInfo) = ctNew; | 1390 | + TTYInfo.timeoutsnew = ctNew; |
| 1391 | } | 1391 | } |
| 1392 | 1392 | ||
| 1393 | return; | 1393 | return; |
| @@ -1419,7 +1419,7 @@ BOOL CALLBACK TimeoutsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lpara | @@ -1419,7 +1419,7 @@ BOOL CALLBACK TimeoutsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lpara | ||
| 1419 | switch(uMessage) | 1419 | switch(uMessage) |
| 1420 | { | 1420 | { |
| 1421 | case WM_INITDIALOG: // init controls | 1421 | case WM_INITDIALOG: // init controls |
| 1422 | - InitTimeoutsDlg(hdlg, TIMEOUTSNEW(TTYInfo)); | 1422 | + InitTimeoutsDlg(hdlg, TTYInfo.timeoutsnew); |
| 1423 | break; | 1423 | break; |
| 1424 | 1424 | ||
| 1425 | case WM_COMMAND: | 1425 | case WM_COMMAND: |
| @@ -411,7 +411,7 @@ void CheckModemStatus( BOOL bUpdateNow ) | @@ -411,7 +411,7 @@ void CheckModemStatus( BOOL bUpdateNow ) | ||
| 411 | 411 | ||
| 412 | DWORD dwNewModemStatus; | 412 | DWORD dwNewModemStatus; |
| 413 | 413 | ||
| 414 | - if (!GetCommModemStatus(COMDEV(TTYInfo), &dwNewModemStatus)) | 414 | + if (!GetCommModemStatus(TTYInfo.hCommPort, &dwNewModemStatus)) |
| 415 | ErrorReporter("GetCommModemStatus"); | 415 | ErrorReporter("GetCommModemStatus"); |
| 416 | 416 | ||
| 417 | // | 417 | // |
| @@ -483,7 +483,7 @@ void CheckComStat(BOOL bUpdateNow) | @@ -483,7 +483,7 @@ void CheckComStat(BOOL bUpdateNow) | ||
| 483 | 483 | ||
| 484 | BOOL bReport = bUpdateNow; | 484 | BOOL bReport = bUpdateNow; |
| 485 | 485 | ||
| 486 | - if (!ClearCommError(COMDEV(TTYInfo), &dwErrors, &ComStatNew)) | 486 | + if (!ClearCommError(TTYInfo.hCommPort, &dwErrors, &ComStatNew)) |
| 487 | ErrorReporter("ClearCommError"); | 487 | ErrorReporter("ClearCommError"); |
| 488 | 488 | ||
| 489 | if (dwErrors != dwErrorsOld) { | 489 | if (dwErrors != dwErrorsOld) { |
| @@ -529,7 +529,7 @@ void ReportCommError() | @@ -529,7 +529,7 @@ void ReportCommError() | ||
| 529 | // | 529 | // |
| 530 | // Get and clear current errors on the port | 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 | ErrorReporter("ClearCommError"); | 533 | ErrorReporter("ClearCommError"); |
| 534 | 534 | ||
| 535 | // | 535 | // |
| @@ -138,7 +138,7 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency) | @@ -138,7 +138,7 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency) | ||
| 138 | TransferRepeatDestroy(); | 138 | TransferRepeatDestroy(); |
| 139 | } | 139 | } |
| 140 | else { | 140 | else { |
| 141 | - REPEATING(TTYInfo) = TRUE; | 141 | + TTYInfo.fRepeating = TRUE; |
| 142 | OutputDebugString("Timer setup.\n"); | 142 | OutputDebugString("Timer setup.\n"); |
| 143 | } | 143 | } |
| 144 | 144 | ||
| @@ -181,7 +181,7 @@ void TransferRepeatDestroy() | @@ -181,7 +181,7 @@ void TransferRepeatDestroy() | ||
| 181 | if (!HeapFree(ghWriterHeap, 0, lpBuf)) | 181 | if (!HeapFree(ghWriterHeap, 0, lpBuf)) |
| 182 | ErrorReporter("HeapFree (data block from writer heap)"); | 182 | ErrorReporter("HeapFree (data block from writer heap)"); |
| 183 | 183 | ||
| 184 | - REPEATING(TTYInfo) = FALSE; | 184 | + TTYInfo.fRepeating = FALSE; |
| 185 | OutputDebugString("Repeated transfer destroyed.\r\n"); | 185 | OutputDebugString("Repeated transfer destroyed.\r\n"); |
| 186 | 186 | ||
| 187 | // | 187 | // |
| @@ -284,7 +284,7 @@ void TransferFileTextStart(LPCTSTR lpstrFileName) | @@ -284,7 +284,7 @@ void TransferFileTextStart(LPCTSTR lpstrFileName) | ||
| 284 | TransferFileTextEnd(); | 284 | TransferFileTextEnd(); |
| 285 | } | 285 | } |
| 286 | else | 286 | else |
| 287 | - TRANSFERRING(TTYInfo) = TRUE; | 287 | + TTYInfo.fTransferring = TRUE; |
| 288 | 288 | ||
| 289 | return; | 289 | return; |
| 290 | } | 290 | } |
| @@ -321,7 +321,7 @@ void TransferFileTextEnd() | @@ -321,7 +321,7 @@ void TransferFileTextEnd() | ||
| 321 | CloseHandle(hTransferAbortEvent); | 321 | CloseHandle(hTransferAbortEvent); |
| 322 | CloseHandle(hTransferThread); | 322 | CloseHandle(hTransferThread); |
| 323 | 323 | ||
| 324 | - TRANSFERRING(TTYInfo) = FALSE; | 324 | + TTYInfo.fTransferring = FALSE; |
| 325 | 325 | ||
| 326 | // | 326 | // |
| 327 | // enable transfer menu | 327 | // enable transfer menu |
| @@ -407,7 +407,7 @@ void ReceiveFileText(LPCTSTR lpstrFileName) | @@ -407,7 +407,7 @@ void ReceiveFileText(LPCTSTR lpstrFileName) | ||
| 407 | // | 407 | // |
| 408 | hMenu = GetMenu(ghwndMain); | 408 | hMenu = GetMenu(ghwndMain); |
| 409 | MenuFlags = MF_ENABLED; | 409 | MenuFlags = MF_ENABLED; |
| 410 | - ChangeConnection(ghwndMain, CONNECTED(TTYInfo)); | 410 | + ChangeConnection(ghwndMain, TTYInfo.fConnected); |
| 411 | 411 | ||
| 412 | // | 412 | // |
| 413 | // enable transfer menu | 413 | // enable transfer menu |
| @@ -87,61 +87,63 @@ struct TTYInfoStruct | @@ -87,61 +87,63 @@ struct TTYInfoStruct | ||
| 87 | // | 87 | // |
| 88 | // macros ( for easier readability ) | 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 | // End of File: ttyinfo.h | 149 | // End of File: ttyinfo.h |
| @@ -432,7 +432,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) | @@ -432,7 +432,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) | ||
| 432 | // | 432 | // |
| 433 | // If no writing is allowed, then just return | 433 | // If no writing is allowed, then just return |
| 434 | // | 434 | // |
| 435 | - if (NOWRITING(TTYInfo)) | 435 | + if (TTYInfo.fNoWriting) |
| 436 | return ; | 436 | return ; |
| 437 | 437 | ||
| 438 | // | 438 | // |
| @@ -448,7 +448,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) | @@ -448,7 +448,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) | ||
| 448 | // | 448 | // |
| 449 | // issue write | 449 | // issue write |
| 450 | // | 450 | // |
| 451 | - if (!WriteFile(COMDEV(TTYInfo), lpBuf, dwToWrite, &dwWritten, &osWrite)) { | 451 | + if (!WriteFile(TTYInfo.hCommPort, lpBuf, dwToWrite, &dwWritten, &osWrite)) { |
| 452 | if (GetLastError() == ERROR_IO_PENDING) { | 452 | if (GetLastError() == ERROR_IO_PENDING) { |
| 453 | // | 453 | // |
| 454 | // write is delayed | 454 | // write is delayed |
| @@ -461,7 +461,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) | @@ -461,7 +461,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) | ||
| 461 | // | 461 | // |
| 462 | case WAIT_OBJECT_0: | 462 | case WAIT_OBJECT_0: |
| 463 | SetLastError(ERROR_SUCCESS); | 463 | SetLastError(ERROR_SUCCESS); |
| 464 | - if (!GetOverlappedResult(COMDEV(TTYInfo), &osWrite, &dwWritten, FALSE)) { | 464 | + if (!GetOverlappedResult(TTYInfo.hCommPort, &osWrite, &dwWritten, FALSE)) { |
| 465 | if (GetLastError() == ERROR_OPERATION_ABORTED) | 465 | if (GetLastError() == ERROR_OPERATION_ABORTED) |
| 466 | UpdateStatus("Write aborted\r\n"); | 466 | UpdateStatus("Write aborted\r\n"); |
| 467 | else | 467 | else |
| @@ -469,7 +469,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) | @@ -469,7 +469,7 @@ void WriterGeneric(char * lpBuf, DWORD dwToWrite) | ||
| 469 | } | 469 | } |
| 470 | 470 | ||
| 471 | if (dwWritten != dwToWrite) { | 471 | if (dwWritten != dwToWrite) { |
| 472 | - if ((GetLastError() == ERROR_SUCCESS) && SHOWTIMEOUTS(TTYInfo)) | 472 | + if ((GetLastError() == ERROR_SUCCESS) && TTYInfo.fDisplayTimeouts) |
| 473 | UpdateStatus("Write timed out. (overlapped)\r\n"); | 473 | UpdateStatus("Write timed out. (overlapped)\r\n"); |
| 474 | else | 474 | else |
| 475 | ErrorReporter("Error writing data to port (overlapped)"); | 475 | ErrorReporter("Error writing data to port (overlapped)"); |
Please
register
or
login
to post a comment