/******************************************************************* * * DESCRIPTION: Serial Keys Dialog handler * * HISTORY: * *******************************************************************/ #include "Access.h" #define NUMPORTS 8 #define NUMRATES 6 INT_PTR WINAPI SerialKeyDlg (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { int i; UINT uBaud; UINT uBaudRates[] = { 300, 1200, 2400, 4800, 9600, 19200 }; TCHAR szBuf[256]; BOOL fProcessed = TRUE; switch (uMsg) { case WM_INITDIALOG: LoadString(g_hinst, IDS_COMPORT, szBuf, ARRAY_SIZE(szBuf)); for (i=1; i <= 4; i++) { TCHAR szBuf2[256]; // Make a correct port name and add it to the list box. wsprintf(szBuf2, __TEXT("%s%d"), szBuf, i); ComboBox_AddString(GetDlgItem(hwnd, IDC_SK_PORT), szBuf2); } // Select the current com port. if (g_serk.lpszActivePort[0] != '\0') { int cport; // For now we assume that the format of the string is // com[digit]. So comport[3] = the com port number // Set all invalid ports to 'COM1' cport = g_serk.lpszActivePort[3] - '1'; if (cport < 0) cport = 0; if (cport > 4) cport = 0; // Set the active port. ComboBox_SetCurSel(GetDlgItem(hwnd, IDC_SK_PORT), cport); } else { // Else default to COM1. ComboBox_SetCurSel(GetDlgItem(hwnd, IDC_SK_PORT), 0); lstrcpy(g_serk.lpszActivePort, __TEXT("COM1")); } // Fill in the BAUD RATE options uBaud = 1; // Default baud rate. for (i = 0; i < NUMRATES; i++) { TCHAR szBuf[256]; wsprintf(szBuf, __TEXT("%d"), uBaudRates[i]); ComboBox_AddString(GetDlgItem(hwnd, IDC_SK_BAUD), szBuf); if (g_serk.iBaudRate == uBaudRates[i]) uBaud = i; } ComboBox_SetCurSel(GetDlgItem(hwnd, IDC_SK_BAUD), uBaud); break; case WM_HELP: // F1 WinHelp(((LPHELPINFO) lParam)->hItemHandle, __TEXT("access.hlp"), HELP_WM_HELP, (DWORD_PTR) (LPSTR) g_aIds); break; case WM_CONTEXTMENU: // right mouse click WinHelp((HWND) wParam, __TEXT("access.hlp"), HELP_CONTEXTMENU, (DWORD_PTR) (LPSTR) g_aIds); break; case WM_COMMAND: switch (GET_WM_COMMAND_ID(wParam, lParam)) { // Watch for combobox changes. case IDC_SK_BAUD: switch (HIWORD(wParam)) { case CBN_CLOSEUP: case CBN_SELCHANGE: i = ComboBox_GetCurSel(GetDlgItem(hwnd, IDC_SK_BAUD)); g_serk.iBaudRate = uBaudRates[i]; SendMessage(GetParent(hwnd), PSM_CHANGED, (WPARAM) hwnd, 0); break; } break; case IDC_SK_PORT: switch (HIWORD(wParam)) { case CBN_SELCHANGE: i = 1 + ComboBox_GetCurSel(GetDlgItem(hwnd, IDC_SK_PORT)); wsprintf(g_serk.lpszActivePort, __TEXT("COM%d"), i); EnableWindow(GetDlgItem(hwnd, IDC_SK_BAUD), TRUE); break; } break; case IDOK: case IDCANCEL: EndDialog(hwnd, GET_WM_COMMAND_ID(wParam, lParam)); break; } break; default: fProcessed = FALSE; break; } return(fProcessed); } ///////////////////////////////// End of File /////////////////////////////////