windows-nt/Source/XPSP1/NT/shell/osshell/cpls/access/serlkey.c
2020-09-26 16:20:57 +08:00

110 lines
3.1 KiB
C

/*******************************************************************
*
* 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 /////////////////////////////////