/*===========================================================================*/ /* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */ /* Houston, Texas */ /*===========================================================================*/ #define NOGDICAPMASKS TRUE #define NOVIRTUALKEYCODES TRUE #define NOICONS TRUE #define NOKEYSTATES TRUE #define NOSYSCOMMANDS TRUE #define NOATOM TRUE #define NOCLIPBOARD TRUE #define NODRAWTEXT TRUE #define NOMINMAX TRUE #define NOOPENFILE TRUE #define NOSCROLL TRUE #define NOHELP TRUE #define NOPROFILER TRUE #define NODEFERWINDOWPOS TRUE #define NOPEN TRUE #define NO_TASK_DEFINES TRUE #define NOLSTRING TRUE #define WIN31 #include #include #include "dcrc.h" #include "dynacomm.h" #include "task.h" /* mbbx 1.04: using taskState.string */ #include "connect.h" #include /* adding for prototype of isalpha() -sdj*/ #define SAVEPARAMS struct saveParams /* mbbx 1.04 ... */ #define PSAVEPARAMS SAVEPARAMS * struct saveParams { HANDLE hData; recTrmParams FAR *lpData; INT saveLevel; }; /*---------------------------------------------------------------------------*/ /* doSettings() - [mbb] */ /*---------------------------------------------------------------------------*/ BOOL doSettings(INT dbResID, DLGPROC dbProc) { BOOL doSettings = FALSE; CHAR work[STR255]; doSettings = DialogBox(hInst, MAKEINTRESOURCE(dbResID), hItWnd, dbProc); if(doSettings == -1) { LoadString(hInst, STR_OUTOFMEMORY, work, STR255-1); testMsg(work,NULL,NULL); } return(doSettings); } /*---------------------------------------------------------------------------*/ /* initDlgPos() - [mbb] */ /*---------------------------------------------------------------------------*/ VOID initDlgPos(HWND hDlg) { RECT dialogRect, windowRect; GetWindowRect(hDlg, &dialogRect); dialogRect.right -= dialogRect.left; dialogRect.bottom -= dialogRect.top; GetWindowRect(hItWnd, &windowRect); windowRect.left += (((windowRect.right - windowRect.left) - dialogRect.right) / 2); windowRect.top += (((windowRect.bottom - windowRect.top) - dialogRect.bottom) / 2); if(windowRect.left < 10) windowRect.left = 10; else if((windowRect.left + dialogRect.right) > (GetSystemMetrics(SM_CXSCREEN) - 10)) windowRect.left = (GetSystemMetrics(SM_CXSCREEN) - 10) - dialogRect.right; if(windowRect.top < 10) windowRect.top = 10; else if((windowRect.top + dialogRect.bottom) > (GetSystemMetrics(SM_CYSCREEN) - 10)) windowRect.top = (GetSystemMetrics(SM_CYSCREEN) - 10) - dialogRect.bottom; MoveWindow(hDlg, windowRect.left, windowRect.top, dialogRect.right, dialogRect.bottom, FALSE); } /*---------------------------------------------------------------------------*/ /* loadListData() - [mbb] */ /*---------------------------------------------------------------------------*/ VOID NEAR loadListData(HWND hDlg, INT nItem, INT nList) { INT ndx; CHAR work[STR255]; for(ndx = 0; LoadString(hInst, nList + ndx, work, STR255-1); ndx += 1) SendDlgItemMessage(hDlg, nItem, LB_INSERTSTRING, -1, (LPARAM) work); } /*---------------------------------------------------------------------------*/ /* dbPhon() - */ /*---------------------------------------------------------------------------*/ INT_PTR APIENTRY dbPhon(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { BYTE szPhone[((DCS_MODEMCMDSZ-1)*2)+1]; BYTE work[255]; /* jtf 3.20 */ updateTimer(); switch(message) { case WM_INITDIALOG: initDlgPos(hDlg); SendDlgItemMessage(hDlg, ITMPHONENUMBER, EM_LIMITTEXT, sizeof(szPhone)-1, 0L); /* mbbx 2.00 */ strcpy(szPhone,trmParams.phone); strcpy(szPhone+strlen(szPhone),trmParams.phone2); SetDlgItemText(hDlg, ITMPHONENUMBER, szPhone); SetDlgItemInt(hDlg, ITMRETRYTIME, trmParams.dlyRetry, FALSE); CheckDlgButton(hDlg, ITMRETRY, trmParams.flgRetry); CheckDlgButton(hDlg, ITMSIGNAL, trmParams.flgSignal); return(TRUE); case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: GetDlgItemText(hDlg, ITMPHONENUMBER, szPhone, sizeof(szPhone)); strncpy(trmParams.phone, szPhone, DCS_MODEMCMDSZ); trmParams.phone[DCS_MODEMCMDSZ-1] = 0; strcpy(trmParams.phone2, szPhone+strlen(trmParams.phone)); if((trmParams.dlyRetry = GetDlgItemInt(hDlg, ITMRETRYTIME, NULL, FALSE)) < 30) { /* jtf 3.20 */ LoadString(hInst, STR_MINTIME, work, STR255-1); testMsg(work,NULL,NULL); trmParams.dlyRetry = 30; } trmParams.flgRetry = (BYTE)IsDlgButtonChecked(hDlg, ITMRETRY); trmParams.flgSignal = (BYTE)IsDlgButtonChecked(hDlg, ITMSIGNAL); termData.flags |= TF_CHANGED; break; case IDCANCEL: break; case ITMRETRY: case ITMSIGNAL: CheckDlgButton(hDlg, GET_WM_COMMAND_ID(wParam, lParam), !IsDlgButtonChecked(hDlg, GET_WM_COMMAND_ID(wParam, lParam))); return(TRUE); default: return(TRUE); } break; default: return(FALSE); } EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* dbEmul() - */ /*---------------------------------------------------------------------------*/ INT_PTR APIENTRY dbEmul(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { updateTimer(); switch(message) { case WM_INITDIALOG: chkGrpButton(hDlg, ITMTERMFIRST, ITMTERMLAST, (trmParams.emulate != ITMDELTA) ? trmParams.emulate : ITMTTY); initDlgPos(hDlg); return(TRUE); case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: if((wParam = whichGrpButton(hDlg, ITMTERMFIRST, ITMTERMLAST)) != trmParams.emulate) { trmParams.emulate = (BYTE)wParam; resetEmul(); } termData.flags |= TF_CHANGED; break; case IDCANCEL: break; default: chkGrpButton(hDlg, ITMTERMFIRST, ITMTERMLAST, GET_WM_COMMAND_ID(wParam, lParam)); return(TRUE); } break; default: return(FALSE); } EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* dbTerm() - Terminal Settings dialog control. [mbb] */ /*---------------------------------------------------------------------------*/ /* mbbx 2.00: all new font enumeration code... */ int APIENTRY nextFontName(const LOGFONT *lpLogFont, const TEXTMETRIC *lpTextMetrics, DWORD FontType, LPARAM lParam) { HWND hDlg = (HWND)lParam; BYTE testStr[40]; BYTE testStr1[40]; if (lpLogFont->lfPitchAndFamily & FIXED_PITCH) /* jtf 3.21 */ #ifdef ORGCODE SendDlgItemMessage((HWND) LOWORD((LONG) lpData), ITMFONTFACE, LB_ADDSTRING, 0, (LONG) lpLogFont->lfFaceName); #else SendDlgItemMessage(hDlg, ITMFONTFACE, LB_ADDSTRING, 0, (LPARAM) lpLogFont->lfFaceName); #endif lstrcpy( testStr, (LPSTR) lpLogFont->lfFaceName); /* jtf 3.21 */ LoadString(hInst, STR_INI_FONTFACE, testStr1, LF_FACESIZE); /* changed from strcmpi -sdj */ if (lstrcmpi(testStr,testStr1) == 0) #ifdef ORGCODE SendDlgItemMessage((HWND) LOWORD((LONG) lpData), ITMFONTFACE, LB_ADDSTRING, 0, (LONG) lpLogFont->lfFaceName); #else SendDlgItemMessage(hDlg, ITMFONTFACE, LB_ADDSTRING, 0, (LPARAM) lpLogFont->lfFaceName); #endif return(TRUE); } VOID NEAR loadFontNames(HWND hDlg) { getPort(); #ifdef ORGCODE EnumFonts(thePort, NULL, nextFontName, ((LONG) hDlg)); #else EnumFonts(thePort, NULL, nextFontName, (LPARAM) hDlg); #endif releasePort(); SendDlgItemMessage(hDlg, ITMFONTFACE, LB_SELECTSTRING, -1, (LPARAM) (trmParams.fontFace)); } VOID NEAR loadFontSizes(HWND hDlg, BYTE *faceName, INT fontSize) { CHAR sizeList[64], work[16]; INT ndx, ndx1; listFontSizes(faceName, sizeList, 64-1); ndx = -1; for(ndx1 = 7; ndx1 < 64; ndx1 += 1) if(sizeList[ndx1] != 0) { sprintf(work, "%d", ndx1); SendDlgItemMessage(hDlg, ITMFONTSIZE, LB_INSERTSTRING, -1, (LPARAM) (work)); if((ndx1 <= fontSize) || (ndx == -1)) ndx += 1; } SendDlgItemMessage(hDlg, ITMFONTSIZE, LB_SETCURSEL, ndx, 0L); } INT NEAR getFontSize(HWND hDlg) /* mbbx 2.00: font selection... */ { INT ndx; CHAR work[16]; ndx = (INT)SendDlgItemMessage(hDlg, ITMFONTSIZE, LB_GETCURSEL, 0, 0L); SendDlgItemMessage(hDlg, ITMFONTSIZE, LB_GETTEXT, ndx, (LPARAM) (work)); sscanf(work, "%d", &ndx); return(ndx); } INT_PTR APIENTRY dbTerm(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { WORD tempWord; BOOL tempBool; updateTimer(); switch(message) { case WM_INITDIALOG: initDlgPos(hDlg); if((((PSAVEPARAMS) taskState.string)->hData = GlobalAlloc(GMEM_MOVEABLE, (DWORD) sizeof(recTrmParams))) == NULL) break; ((PSAVEPARAMS) taskState.string)->lpData = (recTrmParams FAR *) GlobalLock(((PSAVEPARAMS) taskState.string)->hData); *(((PSAVEPARAMS) taskState.string)->lpData) = trmParams; CheckDlgButton(hDlg, ITMLINEWRAP, trmParams.lineWrap); CheckDlgButton(hDlg, ITMLOCALECHO, trmParams.localEcho); CheckDlgButton(hDlg, ITMSOUND, trmParams.sound); CheckDlgButton(hDlg, ITMINCRLF, trmParams.inpCRLF); CheckDlgButton(hDlg, ITMOUTCRLF, trmParams.outCRLF); CheckRadioButton(hDlg, ITM80COL, ITM132COL, trmParams.columns); CheckRadioButton(hDlg, ITMBLKCURSOR, ITMUNDCURSOR, trmParams.termCursor); CheckDlgButton(hDlg, ITMBLINKCURSOR, trmParams.cursorBlink); loadFontNames(hDlg); /* mbbx 2.00: font selection... */ loadFontSizes(hDlg, trmParams.fontFace, trmParams.fontSize); ((PSAVEPARAMS) taskState.string)->saveLevel = -1; loadListData(hDlg, ITMTRANSLATE, STR_ICS_NAME); SendDlgItemMessage(hDlg, ITMTRANSLATE, LB_SETCURSEL, trmParams.language, 0L); SetDlgItemInt(hDlg, ITMBUFFERLINES, trmParams.bufferLines = maxLines, FALSE); /* mbbx 2.00.03 ... */ CheckDlgButton(hDlg, ITMSCROLLBARS, !trmParams.fHideTermVSB); CheckDlgButton(hDlg, ITMIBMXANSI, trmParams.setIBMXANSI); /* rjs swat */ CheckDlgButton(hDlg, ITMWINCTRL, trmParams.useWinCtrl); /* rjs swat */ return(TRUE); case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: /* mbbx 2.00.03 ... */ /* rjs bug2 002 */ tempWord = GetDlgItemInt(hDlg, ITMBUFFERLINES, (BOOL FAR *)&tempBool, FALSE); if(tempBool) { if(tempWord > 399) { MessageBeep(0); lParam = 0xFFFF0000; SendDlgItemMessage(hDlg, ITMBUFFERLINES, EM_SETSEL, GET_EM_SETSEL_MPS( 0, lParam)); return(TRUE); } } else { MessageBeep(0); lParam = 0xFFFF0000; SendDlgItemMessage(hDlg, ITMBUFFERLINES, EM_SETSEL, GET_EM_SETSEL_MPS(0, lParam)); return(TRUE); } /* end rjs bug2 002 */ if(tempWord != trmParams.bufferLines) trmParams.bufferLines = tempWord; resetTermBuffer(); icsResetTable((WORD) SendDlgItemMessage(hDlg, ITMTRANSLATE, LB_GETCURSEL, 0, 0L)); if(((PSAVEPARAMS) taskState.string)->saveLevel != -1) /* mbbx 2.00: font selection... */ buildTermFont(); updateTermScrollBars(FALSE); if(!IsIconic(hItWnd))/* rjs bugs 015 */ sizeTerm(0L); termData.flags |= TF_CHANGED; // clears the hTermWnd make sure there's no garbage left // when font is changed. InvalidateRect (hTermWnd, NULL, TRUE); UpdateWindow (hTermWnd); break; case IDCANCEL: trmParams = *(((PSAVEPARAMS) taskState.string)->lpData); break; case ITMIBMXANSI: CheckDlgButton(hDlg, ITMIBMXANSI, trmParams.setIBMXANSI = !trmParams.setIBMXANSI); return(TRUE); case ITMLINEWRAP: CheckDlgButton(hDlg, ITMLINEWRAP, trmParams.lineWrap = !trmParams.lineWrap); return(TRUE); case ITMLOCALECHO: CheckDlgButton(hDlg, ITMLOCALECHO, trmParams.localEcho = !trmParams.localEcho); return(TRUE); case ITMSOUND: CheckDlgButton(hDlg, ITMSOUND, trmParams.sound = !trmParams.sound); return(TRUE); case ITMINCRLF: CheckDlgButton(hDlg, ITMINCRLF, trmParams.inpCRLF = !trmParams.inpCRLF); return(TRUE); case ITMOUTCRLF: CheckDlgButton(hDlg, ITMOUTCRLF, trmParams.outCRLF = !trmParams.outCRLF); return(TRUE); case ITM80COL: case ITM132COL: CheckRadioButton(hDlg, ITM80COL, ITM132COL, trmParams.columns = wParam); return(TRUE); case ITMBLKCURSOR: case ITMUNDCURSOR: CheckRadioButton(hDlg, ITMBLKCURSOR, ITMUNDCURSOR, trmParams.termCursor = wParam); return(TRUE); case ITMBLINKCURSOR: CheckDlgButton(hDlg, ITMBLINKCURSOR, trmParams.cursorBlink = !trmParams.cursorBlink); return(TRUE); case ITMFONTFACE: // -sdj 10/09 LBN_ HAS CHANGED IN WIN32, have to take care of this in spec. #ifdef ORGCODE if(HIWORD(lParam) == LBN_SELCHANGE) /* mbbx 2.00: font selection... */ #else if(HIWORD(wParam) == LBN_SELCHANGE) /* mbbx 2.00: font selection... */ #endif { SendDlgItemMessage(hDlg, ITMFONTFACE, LB_GETTEXT, SendDlgItemMessage(hDlg, ITMFONTFACE, LB_GETCURSEL, 0, 0L), (LPARAM) (trmParams.fontFace)); SendDlgItemMessage(hDlg, ITMFONTSIZE, LB_RESETCONTENT, 0, 0L); loadFontSizes(hDlg, trmParams.fontFace, trmParams.fontSize); } case ITMFONTSIZE: // -sdj 10/09 LBN_ HAS CHANGED IN WIN32, have to take care of this in spec. #ifdef ORGCODE if(HIWORD(lParam) == LBN_SELCHANGE) /* mbbx 2.00: font selection... */ #else if(HIWORD(wParam) == LBN_SELCHANGE) /* mbbx 2.00: font selection... */ #endif { trmParams.fontSize = getFontSize(hDlg); ((PSAVEPARAMS) taskState.string)->saveLevel = 0; } return(TRUE); case ITMTRANSLATE: case ITMBUFFERLINES: return(TRUE); case ITMSCROLLBARS: CheckDlgButton(hDlg, ITMSCROLLBARS, !(trmParams.fHideTermVSB = !trmParams.fHideTermVSB)); trmParams.fHideTermHSB = trmParams.fHideTermVSB; return(TRUE); case ITMWINCTRL: CheckDlgButton(hDlg, ITMWINCTRL, trmParams.useWinCtrl = !trmParams.useWinCtrl); return(TRUE); } break; default: return(FALSE); } if(((PSAVEPARAMS) taskState.string)->hData != NULL) { GlobalUnlock(((PSAVEPARAMS) taskState.string)->hData); GlobalFree(((PSAVEPARAMS) taskState.string)->hData); } EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* dbFkey() - Dialog box control for function keys. */ /*---------------------------------------------------------------------------*/ VOID NEAR setDlgFkeys(HWND hDlg, INT level) { INT key; for(key = 0; key < DCS_NUMFKEYS; key += 1) { SetDlgItemText(hDlg, ITMFKEYTITLE+(key+1), trmParams.fKeyTitle[level-1][key]); /* rkhx 2.00 */ SetDlgItemText(hDlg, ITMFKEYTEXT+(key+1), trmParams.fKeyText[level-1][key]); } } VOID NEAR getDlgFkeys(HWND hDlg, INT level) { INT key; for(key = 0; key < DCS_NUMFKEYS; key += 1) { GetDlgItemText(hDlg, ITMFKEYTITLE+(key+1), trmParams.fKeyTitle[level-1][key], DCS_FKEYTITLESZ-2); /* rkhx 2.00 */ GetDlgItemText(hDlg, ITMFKEYTEXT+(key+1), trmParams.fKeyText[level-1][key], DCS_FKEYTEXTSZ-2); /* jtf 3.12 */ } } INT_PTR APIENTRY dbFkey(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { updateTimer(); switch(message) { case WM_INITDIALOG: initDlgPos(hDlg); if((((PSAVEPARAMS) taskState.string)->hData = GlobalAlloc(GMEM_MOVEABLE, (DWORD) sizeof(recTrmParams))) == NULL) break; ((PSAVEPARAMS) taskState.string)->lpData = (recTrmParams FAR *) GlobalLock(((PSAVEPARAMS) taskState.string)->hData); *(((PSAVEPARAMS) taskState.string)->lpData) = trmParams; ((PSAVEPARAMS) taskState.string)->saveLevel = curLevel; for(wParam = 1; wParam <= DCS_NUMFKEYS; wParam += 1) { SendDlgItemMessage(hDlg, ITMFKEYTITLE + wParam, EM_LIMITTEXT, DCS_FKEYTITLESZ-2, 0L); SendDlgItemMessage(hDlg, ITMFKEYTEXT + wParam, EM_LIMITTEXT, DCS_FKEYTEXTSZ-3, 0L); /* jtf 3.12 */ } setDlgFkeys(hDlg, curLevel); CheckRadioButton(hDlg, ITMLEVEL1, ITMLEVEL4, ITMLEVEL1+(curLevel-1)); CheckDlgButton(hDlg, ITMSHOWFKEYS, trmParams.environmentFlags & DCS_EVF_FKEYSSHOW); /* mbbx 2.00: show fkeys... */ return(TRUE); case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: getDlgFkeys(hDlg, curLevel); setFKeyLevel(curLevel, TRUE); /* mbbx 2.00 */ if(IsDlgButtonChecked(hDlg, ITMSHOWFKEYS)) /* mbbx 2.00: show fkeys... */ { if(!(trmParams.environmentFlags & DCS_EVF_FKEYSSHOW)) { showHidedbmyControls(TRUE, TRUE); trmParams.environmentFlags |= DCS_EVF_FKEYSSHOW; } } else trmParams.environmentFlags &= ~DCS_EVF_FKEYSSHOW; // -sdj: 02jun92 when keys visible is ticked and ok pressed // IsDlgButtonChecked(hDlg, AUTOARRANGE ) is called, but // AUTOARRANGE is not present in the rc file, NT doesnt like // this any more! If this flag is important then we need to // define this some place to avoid Unknown control Id error // from USER. #ifdef BUGBYPASS #else if(IsDlgButtonChecked(hDlg, ITMAUTOARRANGE)) trmParams.environmentFlags |= DCS_EVF_FKEYSARRANGE; else trmParams.environmentFlags &= ~DCS_EVF_FKEYSARRANGE; #endif termData.flags |= TF_CHANGED; break; case IDCANCEL: trmParams = *(((PSAVEPARAMS) taskState.string)->lpData); curLevel = ((PSAVEPARAMS) taskState.string)->saveLevel; break; case ITMLEVEL1: case ITMLEVEL2: case ITMLEVEL3: case ITMLEVEL4: CheckRadioButton(hDlg, ITMLEVEL1, ITMLEVEL4, GET_WM_COMMAND_ID(wParam, lParam)); getDlgFkeys(hDlg, curLevel); setDlgFkeys(hDlg, curLevel = wParam-(ITMLEVEL1-1)); return(TRUE); case ITMSHOWFKEYS: /* mbbx 2.00 ... */ CheckDlgButton(hDlg, GET_WM_COMMAND_ID(wParam, lParam), !IsDlgButtonChecked(hDlg, GET_WM_COMMAND_ID(wParam, lParam))); return(TRUE); default: return(TRUE); } break; default: return(FALSE); } if(((PSAVEPARAMS) taskState.string)->hData != NULL) { GlobalUnlock(((PSAVEPARAMS) taskState.string)->hData); GlobalFree(((PSAVEPARAMS) taskState.string)->hData); } EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* dbTxtX() - Control for Text transfer dialogue box. */ /*---------------------------------------------------------------------------*/ VOID NEAR enableStdItems(HWND hDlg, BOOL bEnable) { ShowWindow(GetDlgItem(hDlg, ITMSTDGRP), bEnable ? SW_SHOWNOACTIVATE : SW_HIDE); ShowWindow(GetDlgItem(hDlg, ITMSTDXON), bEnable && (trmParams.flowControl == ITMXONFLOW) ? SW_SHOWNOACTIVATE : SW_HIDE); ShowWindow(GetDlgItem(hDlg, ITMSTDHARD), bEnable && (trmParams.flowControl == ITMHARDFLOW) ? SW_SHOWNOACTIVATE : SW_HIDE); ShowWindow(GetDlgItem(hDlg, ITMSTDNONE), bEnable && (trmParams.flowControl == ITMNOFLOW) ? SW_SHOWNOACTIVATE : SW_HIDE); UpdateWindow(hDlg); /* rjs bugs 001 */ } VOID NEAR enableChrItems(HWND hDlg, BOOL bEnable) { INT nCmdShow, nResID; nCmdShow = bEnable ? SW_SHOWNOACTIVATE : SW_HIDE; for(nResID = ITMCHRGRP; nResID <= ITMCHRUNITS; nResID += 1) ShowWindow(GetDlgItem(hDlg, nResID), nCmdShow); if(bEnable) EnableWindow(GetDlgItem(hDlg, ITMCHRTIME), trmParams.xChrType == ITMCHRDELAY); UpdateWindow(hDlg); /* rjs bugs 001 */ } VOID NEAR enableLinItems(HWND hDlg, BOOL bEnable) { INT nCmdShow, nResID; nCmdShow = bEnable ? SW_SHOWNOACTIVATE : SW_HIDE; for(nResID = ITMLINGRP; nResID <= ITMLINSTR; nResID += 1) ShowWindow(GetDlgItem(hDlg, nResID), nCmdShow); if(bEnable) { EnableWindow(GetDlgItem(hDlg, ITMLINTIME), trmParams.xLinType == ITMLINDELAY); EnableWindow(GetDlgItem(hDlg, ITMLINSTR), trmParams.xLinType == ITMLINWAIT); } UpdateWindow(hDlg); /* rjs bugs 001 */ } INT_PTR APIENTRY dbTxtX(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { DWORD temp; BYTE tempStr[16]; updateTimer(); switch(message) { case WM_INITDIALOG: if((((PSAVEPARAMS) taskState.string)->hData = GlobalAlloc(GMEM_MOVEABLE, (DWORD) sizeof(recTrmParams))) == NULL) break; ((PSAVEPARAMS) taskState.string)->lpData = (recTrmParams FAR *) GlobalLock(((PSAVEPARAMS) taskState.string)->hData); *(((PSAVEPARAMS) taskState.string)->lpData) = trmParams; CheckRadioButton(hDlg, ITMSTD, ITMLIN, trmParams.xTxtType); enableStdItems(hDlg, trmParams.xTxtType == ITMSTD); enableChrItems(hDlg, trmParams.xTxtType == ITMCHR); enableLinItems(hDlg, trmParams.xTxtType == ITMLIN); CheckRadioButton(hDlg, ITMCHRDELAY, ITMCHRWAIT, trmParams.xChrType); SetDlgItemInt(hDlg, ITMCHRTIME, trmParams.xChrDelay, FALSE); CheckRadioButton(hDlg, ITMLINDELAY, ITMLINWAIT, trmParams.xLinType); SetDlgItemInt(hDlg, ITMLINTIME, trmParams.xLinDelay, FALSE); SendDlgItemMessage(hDlg, ITMLINSTR, EM_LIMITTEXT, DCS_XLINSTRSZ-1, 0L); /* rkhx 2.00 */ SetDlgItemText(hDlg, ITMLINSTR, trmParams.xLinStr); CheckDlgButton(hDlg, ITMWORDWRAP, trmParams.xWordWrap); EnableWindow(GetDlgItem(hDlg, ITMWRAPCOL), trmParams.xWordWrap); SetDlgItemInt(hDlg, ITMWRAPCOL, trmParams.xWrapCol, FALSE); initDlgPos(hDlg); return(TRUE); case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: trmParams.xTxtType = whichGrpButton(hDlg, ITMSTD, ITMLIN); #ifdef OLDCODE /* rjs bugs 007 */ trmParams.xChrDelay = GetDlgItemInt(hDlg, ITMCHRTIME, NULL, FALSE); trmParams.xLinDelay = GetDlgItemInt(hDlg, ITMLINTIME, NULL, FALSE); trmParams.xWrapCol = GetDlgItemInt(hDlg, ITMWRAPCOL, NULL, FALSE); #endif GetDlgItemText(hDlg, ITMLINSTR, trmParams.xLinStr, DCS_XLINSTRSZ-1); /* rkhx 2.00 */ /* rjs bugs 007 */ GetDlgItemText(hDlg, ITMCHRTIME, tempStr, DCS_XLINSTRSZ-1); /* rjs bugs 007 */ temp = 0; while(tempStr[temp]) if(isalpha(tempStr[temp++])) { MessageBeep(0); return(TRUE); } sscanf(tempStr, "%u", &temp); if(temp > 255) { MessageBeep(0); return(TRUE); } trmParams.xChrDelay = temp; GetDlgItemText(hDlg, ITMLINTIME, tempStr, DCS_XLINSTRSZ-1); /* rjs bugs 007 */ temp = 0; while(tempStr[temp]) if(isalpha(tempStr[temp++])) { MessageBeep(0); return(TRUE); } sscanf(tempStr, "%u", &temp); if(temp > 255) { MessageBeep(0); return(TRUE); } trmParams.xLinDelay = temp; GetDlgItemText(hDlg, ITMWRAPCOL, tempStr, DCS_XLINSTRSZ-1); /* rjs bugs 007 */ temp = 0; while(tempStr[temp]) if(isalpha(tempStr[temp++])) { MessageBeep(0); return(TRUE); } sscanf(tempStr, "%u", &temp); if(temp > 255) { MessageBeep(0); return(TRUE); } trmParams.xWrapCol = temp; termData.flags |= TF_CHANGED; break; case IDCANCEL: trmParams = *(((PSAVEPARAMS) taskState.string)->lpData); break; case ITMSTD: case ITMCHR: case ITMLIN: CheckRadioButton(hDlg, ITMSTD, ITMLIN, trmParams.xTxtType = GET_WM_COMMAND_ID(wParam, lParaqm)); enableLinItems(hDlg, GET_WM_COMMAND_ID(wParam, lParam) == ITMLIN); enableChrItems(hDlg, GET_WM_COMMAND_ID(wParam, lParam) == ITMCHR); enableStdItems(hDlg, GET_WM_COMMAND_ID(wParam, lParam) == ITMSTD); return(TRUE); case ITMCHRDELAY: case ITMCHRWAIT: if(trmParams.xTxtType == ITMCHR) { CheckRadioButton(hDlg, ITMCHRDELAY, ITMCHRWAIT, trmParams.xChrType = GET_WM_COMMAND_ID(wParam, lParam)); enableChrItems(hDlg, TRUE); } return(TRUE); case ITMLINDELAY: case ITMLINWAIT: if(trmParams.xTxtType == ITMLIN) { CheckRadioButton(hDlg, ITMLINDELAY, ITMLINWAIT, trmParams.xLinType = GET_WM_COMMAND_ID(wParam, lParam)); enableLinItems(hDlg, TRUE); } return(TRUE); case ITMWORDWRAP: CheckDlgButton(hDlg, ITMWORDWRAP, trmParams.xWordWrap = !trmParams.xWordWrap); EnableWindow(GetDlgItem(hDlg, ITMWRAPCOL), trmParams.xWordWrap); if(trmParams.xWordWrap) { SetFocus(GetDlgItem(hDlg, ITMWRAPCOL)); SendDlgItemMessage(hDlg, ITMWRAPCOL, EM_SETSEL, GET_EM_SETSEL_MPS(0, MAKELONG(0, 0x7FFF))); } return(TRUE); default: return(TRUE); } break; default: return(FALSE); } if(((PSAVEPARAMS) taskState.string)->hData != NULL) { GlobalUnlock(((PSAVEPARAMS) taskState.string)->hData); GlobalFree(((PSAVEPARAMS) taskState.string)->hData); } EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* dbBinX() - Dialogue box control for Binary File Transfers. */ /*---------------------------------------------------------------------------*/ INT_PTR APIENTRY dbBinX(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { updateTimer(); switch(message) { case WM_INITDIALOG: chkGrpButton(hDlg, ITMKERMIT, ITMXMODEM, trmParams.xBinType); initDlgPos(hDlg); return(TRUE); case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: // trmParams.xBinType = whichGrpButton(hDlg, ITMDYNACOMM, ITMYTERM); // change this to kermit,xmodem, to avoid controlid unknown error from user // -sdj 02jun92 trmParams.xBinType = whichGrpButton(hDlg, ITMKERMIT, ITMXMODEM); termData.flags |= TF_CHANGED; break; case IDCANCEL: break; default: // change this to kermit,xmodem, to avoid control id unknown error from user // -sdj 02jun92 // chkGrpButton(hDlg, ITMDYNACOMM, ITMYTERM, GET_WM_COMMAND_ID(wParam, lParam)); chkGrpButton(hDlg, ITMKERMIT, ITMXMODEM, GET_WM_COMMAND_ID(wParam, lParam)); return(TRUE); } break; default: return(FALSE); } EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* dbComm() - [mbb] */ /*---------------------------------------------------------------------------*/ #ifdef ORGCODE BYTE comDevList[5]; #else BYTE comDevList[20]; #endif VOID initComDevSelect(HWND hDlg,WORD wListID,BOOL bInit) /* mbbx 2.01.09 ... */ { BYTE str1[8], str2[8], str3[16]; INT ndx; loadListData(hDlg, wListID, STR_COM_CONNECT); LoadString(hInst, STR_COM_CONNECT+2, str1, sizeof(str1)); comDevList[0] = 0; for(ndx = 1; ndx <= MaxComPortNumberInMenu; ndx += 1) { //sprintf(str2, str1, ndx); //if(GetProfileString("ports", (LPSTR) str2, (LPSTR) NULL_STR, (LPSTR) str3, sizeof(str3))) if (TRUE) { SendDlgItemMessage(hDlg, wListID, LB_INSERTSTRING, -1, (LPARAM) (arComNumAndName[ndx].PortName)); comDevList[++comDevList[0]] = ndx; } } #ifdef ORGCODE #else comDevList[(comDevList[0])+1] = ndx; //MaxComPortNumberInMenu = ndx-1; SendDlgItemMessage(hDlg, wListID, LB_INSERTSTRING, -1, (LPARAM)"TELNET"); #endif if(bInit) { ndx = 0; } else { loadListData(hDlg, wListID, STR_COM_CONNECT+4); if(trmParams.comDevRef < ITMNETCOM) { for(ndx = comDevList[0]; ndx > 0; ndx -= 1) if(comDevList[ndx] == trmParams.comPortRef) break; } else ndx = trmParams.comDevRef + (comDevList[0] - 1); } SendDlgItemMessage(hDlg, wListID, LB_SETCURSEL, ndx, 0L); } BYTE getComDevSelect(HWND hDlg, WORD wListID, BYTE *newDevRef) /* mbbx 2.01.09 ... */ { BYTE comPortRef = 0; if((*newDevRef = SendDlgItemMessage(hDlg, wListID, LB_GETCURSEL, 0, 0L)) != (BYTE) -1) { #ifdef ORGCODE if(*newDevRef <= comDevList[0]) #else if(*newDevRef <= (comDevList[0])+1) #endif { if(*newDevRef > ITMNOCOM) { comPortRef = comDevList[*newDevRef]; *newDevRef = ITMWINCOM; } } else *newDevRef -= (comDevList[0] - 1); } else *newDevRef = ITMNOCOM; return(comPortRef); } /*---------------------------------------------------------------------------*/ VOID NEAR enableGrpItems(HWND hDlg, INT itemFirst, INT itemLast, INT itemSelect) { INT itemNext; CheckRadioButton(hDlg, itemFirst, itemLast, itemSelect); for(itemNext = itemFirst; itemNext <= itemLast; itemNext += 1) EnableWindow(GetDlgItem(hDlg, itemNext), itemSelect); } VOID NEAR enableCommItems(HWND hDlg, BYTE comDevRef) { WORD wBaudID; switch(trmParams.speed) { case 110: wBaudID = ITMBD110; break; case 300: wBaudID = ITMBD300; break; case 600: wBaudID = ITMBD600; break; case 2400: wBaudID = ITMBD240; break; case 4800: wBaudID = ITMBD480; break; case 9600: wBaudID = ITMBD960; break; case 14400: wBaudID = ITMBD144; break; case 19200: wBaudID = ITMBD192; break; case 38400: wBaudID = ITMBD384; break; case 57600: wBaudID = ITMBD576; break; case 57601: wBaudID = ITMBD1152; break; //case 57602: // wBaudID = ITMBD1280; // break; default: wBaudID = ITMBD120; trmParams.speed = 1200; break; } switch(comDevRef) { case ITMWINCOM: enableGrpItems(hDlg, ITMBD110, ITMBD1152, wBaudID); enableGrpItems(hDlg, ITMDATA5, ITMDATA8, trmParams.dataBits); /* jtf 3.24 */ enableGrpItems(hDlg, ITMSTOP1, ITMSTOP2, trmParams.stopBits); enableGrpItems(hDlg, ITMNOPARITY, ITMSPACEPARITY, trmParams.parity); enableGrpItems(hDlg, ITMXONFLOW, ITMNOFLOW, trmParams.flowControl); if(trmParams.dataBits == ITMDATA5) /* jtf 3.24 */ { EnableWindow(GetDlgItem(hDlg, ITMDATA6), FALSE); EnableWindow(GetDlgItem(hDlg, ITMDATA7), FALSE); EnableWindow(GetDlgItem(hDlg, ITMDATA8), FALSE); } else EnableWindow(GetDlgItem(hDlg, ITMDATA5), FALSE); break; default: enableGrpItems(hDlg, ITMBD110, ITMBD1152, 0); enableGrpItems(hDlg, ITMDATA5, ITMDATA8, 0); /* jtf 3.24 */ enableGrpItems(hDlg, ITMSTOP1, ITMSTOP2, 0); enableGrpItems(hDlg, ITMNOPARITY, ITMSPACEPARITY, 0); enableGrpItems(hDlg, ITMXONFLOW, ITMNOFLOW, 0); break; } CheckDlgButton(hDlg, ITMPARITY, (comDevRef == ITMWINCOM) ? trmParams.fParity : FALSE); EnableWindow(GetDlgItem(hDlg, ITMPARITY), (comDevRef == ITMWINCOM) ? TRUE : FALSE); CheckDlgButton(hDlg, ITMCARRIER, (comDevRef == ITMWINCOM) ? trmParams.fCarrier : FALSE); EnableWindow(GetDlgItem(hDlg, ITMCARRIER), (comDevRef == ITMWINCOM) ? TRUE : FALSE); } INT_PTR APIENTRY dbComm(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { WORD wCurSel; /* seh nova 005 */ LPCONNECTOR_CONTROL_BLOCK lpWorkCCB; /* slc nova 047 */ WORD lastItem; /* slc nova 117 */ WORD lastPort; /* slc nova 117 */ BOOL prevcarrier; updateTimer(); switch(message) { case WM_INITDIALOG: initDlgPos(hDlg); if((((PSAVEPARAMS) taskState.string)->hData = GlobalAlloc(GMEM_MOVEABLE, (DWORD) sizeof(recTrmParams))) == NULL) break; ((PSAVEPARAMS) taskState.string)->lpData = (recTrmParams FAR *) GlobalLock(((PSAVEPARAMS) taskState.string)->hData); *(((PSAVEPARAMS) taskState.string)->lpData) = trmParams; trmParams.newDevRef = -1; /* mbbx 2.00: network... */ enableCommItems(hDlg, trmParams.comDevRef); initComDevSelect(hDlg, ITMCONNECTOR, FALSE); /* mbbx 2.01.09 ... */ /* rjs bug2 - add tcp/ip connector for microsoft */ EnableWindow(GetDlgItem(hDlg, ITMSETUP), FALSE); /* slc nova 031, seh nova 005 */ ShowWindow(GetDlgItem(hDlg, ITMSETUP), SW_HIDE); /* seh nova 005 */ addConnectorList(hDlg, ITMCONNECTOR); /* slc nova 012 bjw gold 027 */ ghWorkConnector = NULL; /* slc nova 031 */ if(trmParams.comDevRef == ITMDLLCONNECT) { SendDlgItemMessage(hDlg, ITMCONNECTOR, LB_SETCURSEL, trmParams.comExtRef - 1, 0L); ghWorkConnector = ghCCB; /* slc nova 031 */ } /* end of rjs bug2 */ return(TRUE); case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: if(!trmParams.fResetDevice) { if(trmParams.newDevRef != (BYTE) -1) /* mbbx 2.00.04: force reload... */ trmParams.fResetDevice = TRUE; } if(trmParams.newDevRef == ITMDLLCONNECT) /* slc nova 031 */ { if((ghWorkConnector != NULL) && (ghWorkConnector != ghCCB)) { GlobalFree(ghCCB); ghCCB = ghWorkConnector; ghWorkConnector = NULL; } } resetSerial(&trmParams, (trmParams.newDevRef != (BYTE) -1), FALSE, 0); /* slc swat */ if(sPort == (HANDLE)-1) break; //return(TRUE); if((trmParams.newDevRef != (BYTE) -1) && (trmParams.comDevRef != trmParams.newDevRef)) return(TRUE); termData.flags |= TF_CHANGED; break; case IDCANCEL: trmParams = *(((PSAVEPARAMS) taskState.string)->lpData); break; /* rjs bug2 - begin */ case ITMSETUP: if(ghWorkConnector != NULL) DLL_SetupConnector(ghWorkConnector, TRUE); SetFocus(GetDlgItem(hDlg, IDOK)); return(TRUE); /* rjs bug2 - end */ case ITMBD110: case ITMBD300: case ITMBD600: /* mbbx 2.00: support 600 baud... */ case ITMBD120: case ITMBD240: case ITMBD480: case ITMBD960: case ITMBD144: case ITMBD192: case ITMBD384: case ITMBD576: case ITMBD1152: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case ITMBD110: trmParams.speed = 110; break; case ITMBD300: trmParams.speed = 300; break; case ITMBD600: trmParams.speed = 600; break; case ITMBD120: trmParams.speed = 1200; break; case ITMBD240: trmParams.speed = 2400; break; case ITMBD480: trmParams.speed = 4800; break; case ITMBD960: trmParams.speed = 9600; break; case ITMBD144: trmParams.speed = 14400; break; case ITMBD192: trmParams.speed = 19200; break; case ITMBD384: trmParams.speed = 38400; break; case ITMBD576: trmParams.speed = 57600; break; case ITMBD1152: trmParams.speed = 57601; break; //case ITMBD1280: // trmParams.speed = 57602; // break; } CheckRadioButton(hDlg, ITMBD110, ITMBD1152, GET_WM_COMMAND_ID(wParam, lParam)); return(TRUE); case ITMDATA8: /* mbbx 2.00 ... */ if(trmParams.parity != ITMNOPARITY) CheckRadioButton(hDlg, ITMNOPARITY, ITMSPACEPARITY, trmParams.parity = ITMNOPARITY); /* then fall thru... */ case ITMDATA5: case ITMDATA6: case ITMDATA7: CheckRadioButton(hDlg, ITMDATA5, ITMDATA8, trmParams.dataBits = GET_WM_COMMAND_ID(wParam, lParam)); /* jtf 3.24 */ return(TRUE); case ITMSTOP5: /* jtf 3.24 */ CheckRadioButton(hDlg, ITMSTOP1, ITMSTOP2, trmParams.stopBits = GET_WM_COMMAND_ID(wParam, lParam)); CheckRadioButton(hDlg, ITMDATA5, ITMDATA8, trmParams.dataBits = ITMDATA5); /* jtf 3.24 */ EnableWindow(GetDlgItem(hDlg, ITMDATA5), TRUE); EnableWindow(GetDlgItem(hDlg, ITMDATA6), FALSE); EnableWindow(GetDlgItem(hDlg, ITMDATA7), FALSE); EnableWindow(GetDlgItem(hDlg, ITMDATA8), FALSE); return(TRUE); case ITMSTOP1: case ITMSTOP2: EnableWindow(GetDlgItem(hDlg, ITMDATA5), FALSE); EnableWindow(GetDlgItem(hDlg, ITMDATA6), TRUE); EnableWindow(GetDlgItem(hDlg, ITMDATA7), TRUE); EnableWindow(GetDlgItem(hDlg, ITMDATA8), TRUE); if (trmParams.dataBits = ITMDATA5) CheckRadioButton(hDlg, ITMDATA5, ITMDATA8, trmParams.dataBits = ITMDATA8); /* jtf 3.24 */ CheckRadioButton(hDlg, ITMSTOP1, ITMSTOP2, trmParams.stopBits = GET_WM_COMMAND_ID(wParam, lParam)); return(TRUE); case ITMODDPARITY: /* mbbx 2.00 ... */ case ITMEVENPARITY: case ITMMARKPARITY: case ITMSPACEPARITY: if(trmParams.dataBits == ITMDATA8) CheckRadioButton(hDlg, ITMDATA5, ITMDATA8, trmParams.dataBits = ITMDATA7); /* jtf 3.24 */ /* then fall thru... */ case ITMNOPARITY: CheckRadioButton(hDlg, ITMNOPARITY, ITMSPACEPARITY, trmParams.parity = GET_WM_COMMAND_ID(wParam, lParam)); return(TRUE); case ITMXONFLOW: case ITMHARDFLOW: case ITMNOFLOW: CheckRadioButton(hDlg, ITMXONFLOW, ITMNOFLOW, trmParams.flowControl = GET_WM_COMMAND_ID(wParam, lParam)); return(TRUE); case ITMCONNECTOR: switch(GET_WM_COMMAND_CMD(wParam, lParam)) /* mbbx 2.00: network... */ { case LBN_SELCHANGE: /* mbbx 2.01.09 ... */ lastItem = trmParams.newDevRef; /* slc nova 117 */ lastPort = trmParams.comPortRef; /* slc nova 117 */ trmParams.comPortRef = getComDevSelect(hDlg, ITMCONNECTOR, &trmParams.newDevRef); if(trmParams.comPortRef > ITMCOM4) { wCurSel = (WORD) SendDlgItemMessage(hDlg, ITMCONNECTOR, LB_GETCURSEL, 0, 0L); /* seh nova 005 */ SendDlgItemMessage(hDlg, ITMCONNECTOR, LB_GETTEXT, wCurSel, (LPARAM) gszWork); /* bjw gold 027, seh nova 005 */ if((ghWorkConnector == NULL) || /* slc nova 031 */ (ghWorkConnector == ghCCB)) { ghWorkConnector = GlobalAlloc(GHND | GMEM_ZEROINIT, (DWORD)sizeof(CONNECTOR_CONTROL_BLOCK)); } EnableWindow(GetDlgItem(hDlg, ITMSETUP), FALSE); /* slc nova 031 */ ShowWindow(GetDlgItem(hDlg, ITMSETUP), SW_HIDE); if(loadConnector(hDlg, ghWorkConnector, gszWork, FALSE)) /* slc nova 031 */ { trmParams.comExtRef = (BYTE)(wCurSel + 1); trmParams.newDevRef = ITMDLLCONNECT; lstrcpy(trmParams.szConnectorName, gszWork); if(DLL_HasSetupBox(ghWorkConnector)) /* slc nova 031 */ { EnableWindow(GetDlgItem(hDlg, ITMSETUP), TRUE); ShowWindow(GetDlgItem(hDlg, ITMSETUP), SW_SHOW); } } } enableCommItems(hDlg, trmParams.newDevRef); trmParams.fResetDevice = FALSE; break; } return(TRUE); case ITMPARITY: CheckDlgButton(hDlg, ITMPARITY, trmParams.fParity = !trmParams.fParity); return(TRUE); case ITMCARRIER: prevcarrier = trmParams.fCarrier; CheckDlgButton(hDlg, ITMCARRIER, trmParams.fCarrier = !trmParams.fCarrier); //-sdj if fcarrier is disabled by the user, reset the mdmOnLine flag //-sdj so that, the Dial menu item gets enabled. bug# 735 if (prevcarrier && !(trmParams.fCarrier) ) mdmOnLine = FALSE; return(TRUE); } break; default: return(FALSE); } if(((PSAVEPARAMS) taskState.string)->hData != NULL) { GlobalUnlock(((PSAVEPARAMS) taskState.string)->hData); GlobalFree(((PSAVEPARAMS) taskState.string)->hData); } EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* dbModem() - [mbb] */ /*---------------------------------------------------------------------------*/ VOID NEAR loadModemData(HWND hDlg, WORD wMdmType) { WORD nResID; INT ndx; BYTE work[STR255]; switch(wMdmType) { case ITMHAYES: nResID = STR_MDM_HAYES; break; case ITMMULTITECH: nResID = STR_MDM_MNP; break; case ITMTRAILBLAZER: nResID = STR_MDM_TELEBIT; break; default: /* ITMNOMODEM */ nResID = STR_MDM_NONE; break; } for(ndx = 0; ndx < 10; ndx ++) /* rjs swat - changed to 10 from 11 */ { LoadString(hInst, nResID + ndx, work, STR255-1); SetDlgItemText(hDlg, ITMDIAL + ndx, work); } ndx++; LoadString(hInst, nResID + ndx, work, STR255-1); SetDlgItemText(hDlg, ITMDIAL + ndx, work); } INT_PTR APIENTRY dbModem(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { updateTimer(); switch(message) { case WM_INITDIALOG: initDlgPos(hDlg); if((((PSAVEPARAMS) taskState.string)->hData = GlobalAlloc(GMEM_MOVEABLE, (DWORD) sizeof(recTrmParams))) == NULL) break; ((PSAVEPARAMS) taskState.string)->lpData = (recTrmParams FAR *) GlobalLock(((PSAVEPARAMS) taskState.string)->hData); *(((PSAVEPARAMS) taskState.string)->lpData) = trmParams; SetDlgItemText(hDlg, ITMDIAL, trmParams.dialPrefix); SetDlgItemText(hDlg, ITMDIAL+1, trmParams.dialSuffix); SetDlgItemText(hDlg, ITMHANGUP, trmParams.hangPrefix); SetDlgItemText(hDlg, ITMHANGUP+1, trmParams.hangSuffix); SetDlgItemText(hDlg, ITMBINTX, trmParams.binTXPrefix); SetDlgItemText(hDlg, ITMBINTX+1, trmParams.binTXSuffix); SetDlgItemText(hDlg, ITMBINRX, trmParams.binRXPrefix); SetDlgItemText(hDlg, ITMBINRX+1, trmParams.binRXSuffix); SetDlgItemText(hDlg, ITMFASTQRY, trmParams.fastInq); SetDlgItemText(hDlg, ITMFASTQRY+1, trmParams.fastRsp); SetDlgItemText(hDlg, ITMANSWER, trmParams.answer); SetDlgItemText(hDlg, ITMORIGIN, trmParams.originate); CheckRadioButton(hDlg, ITMMODEMFIRST, ITMMODEMLAST, trmParams.xMdmType); ((PSAVEPARAMS) taskState.string)->saveLevel = -1; return(TRUE); case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: GetDlgItemText(hDlg, ITMDIAL, trmParams.dialPrefix, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMDIAL+1, trmParams.dialSuffix, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMHANGUP, trmParams.hangPrefix, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMHANGUP+1, trmParams.hangSuffix, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMBINTX, trmParams.binTXPrefix, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMBINTX+1, trmParams.binTXSuffix, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMBINRX, trmParams.binRXPrefix, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMBINRX+1, trmParams.binRXSuffix, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMFASTQRY, trmParams.fastInq, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMFASTQRY+1, trmParams.fastRsp, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMANSWER, trmParams.answer, DCS_MODEMCMDSZ-1); GetDlgItemText(hDlg, ITMORIGIN, trmParams.originate, DCS_MODEMCMDSZ-1); trmParams.xMdmType = whichGrpButton(hDlg, ITMMODEMFIRST, ITMMODEMLAST); termData.flags |= TF_CHANGED; break; case IDCANCEL: trmParams = *(((PSAVEPARAMS) taskState.string)->lpData); break; case ITMHAYES: case ITMMULTITECH: case ITMTRAILBLAZER: case ITMNOMODEM: CheckRadioButton(hDlg, ITMMODEMFIRST, ITMMODEMLAST, GET_WM_COMMAND_ID(wParam, lParam)); loadModemData(hDlg, GET_WM_COMMAND_ID(wParam, lParam)); return(TRUE); default: return(TRUE); } break; default: return(FALSE); } EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* chkGrpButton() - Toggle on radio buttons. */ /*---------------------------------------------------------------------------*/ VOID chkGrpButton(HWND hDlg, INT iFirst, INT iLast, INT item) { if((item >= iFirst) && (item <= iLast)) /* mbbx 1.04 ... */ CheckRadioButton(hDlg, iFirst, iLast, item); } /*---------------------------------------------------------------------------*/ /* whichGrpButton() - Return which button in a group was pressed. */ /*---------------------------------------------------------------------------*/ BYTE whichGrpButton(HWND hDlg, INT iFirst, INT iLast) { INT which; for(which = iFirst; which <= iLast; which += 1) if(IsDlgButtonChecked(hDlg, which)) return((BYTE) which); return((BYTE) iFirst); }