📄 dialogs.c
字号:
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hDlg;
ofn.lpstrFilter = rfilter(IDS_T_KEY_FILE_FILTER);
ofn.lpstrCustomFilter = NULL;
strcpy(szString, "");
ofn.lpstrFile = (LPSTR) szString;
ofn.nMaxFile = sizeof(szString);
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = rstring(IDS_T_OPEN_KEY_FILE_TITLE);
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_SHOWHELP;
fileHelpKey = rstring(IDS_HELP_KEY_FILE);
if (GetOpenFileName((LPOPENFILENAME) &ofn)) {
SetDlgItemText(hDlg, IDC_CP_OTPFILE, szString);
_fstrcpy(d->otpFileName, szString);
}
}
break;
#endif
case ID_HELP:
WinHelp(hwndMDIFrame, rstring(IDS_HELPFILE), HELP_KEY,
((DWORD) (Lrstring(IDS_HELP_CONNPROP))));
holped = TRUE;
break;
default:
break;
}
break;
default:
if (message == fileOpenHelpButton && fileHelpKey != NULL) {
WinHelp(hwndMDIFrame, rstring(IDS_HELPFILE), HELP_KEY,
((DWORD) (LPSTR) fileHelpKey));
holped = TRUE;
}
break;
}
return FALSE;
}
// CONNECTIONPROPERTIES -- Set properties for an open connection
VOID connectionProperties(HWND hwnd, LPCLIENT_DATA d)
{
clientData = d;
DialogBox(hInst, MAKEINTRESOURCE(IDD_CONNECTION_PROPERTIES), hwnd, CP_proc);
return;
}
// GENKEYDLGPROC -- Session key generator dialogue procedure
BOOL CALLBACK genKeyDlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
switch (nMessage) {
case WM_INITDIALOG:
{
#ifdef CRYPTO
char key[256];
sessionKeyGenerate(key, FALSE);
SetDlgItemText(hwnd, IDE_KEY, key);
#endif
}
break;
case WM_COMMAND:
switch ((short) WM_COMMAND_ID(wParam)) {
case IDOK:
EndDialog(hwnd, TRUE);
break;
#ifdef CRYPTO
case IDC_NEW_KEY:
{
char key[256];
sessionKeyGenerate(key, FALSE);
SetDlgItemText(hwnd, IDE_KEY, key);
SendMessage(GetDlgItem(hwnd, IDE_KEY), EM_SETSEL, 0,
_fstrlen(key) + 1);
SetFocus(GetDlgItem(hwnd, IDE_KEY));
}
break;
#endif
case ID_HELP:
WinHelp(hwndMDIFrame, rstring(IDS_HELPFILE), HELP_KEY,
((DWORD) (Lrstring(IDS_HELP_KEYGEN))));
holped = TRUE;
break;
}
}
return FALSE;
}
// GENKEYDIALOGUE -- Generate session key dialogue
VOID genKeyDialogue(HWND hwnd)
{
DialogBox(hInst, MAKEINTRESOURCE(IDD_GEN_KEY), hwnd, genKeyDlgProc);
}
// RANT1_DLGPROC -- First serial I/O rant dialogue procedure
BOOL CALLBACK rant1_DlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
#ifdef MODEM
switch (nMessage) {
case WM_COMMAND:
if (WM_COMMAND_ID(wParam) == IDOK) {
EndDialog(hwnd, TRUE);
} else if (WM_COMMAND_ID(wParam) == IDCANCEL) {
EndDialog(hwnd, FALSE);
}
break;
}
#endif
return FALSE;
}
// RANT1DIALOGUE -- First serial I/O rant dialogue
int rant1Dialogue(HWND hwndParent)
{
int result;
result = DialogBox(hInst, MAKEINTRESOURCE(IDD_MODEM_RANT), hwndParent, rant1_DlgProc);
return result;
}
// RANT2_DLGPROC -- Second serial I/O rant dialogue procedure
BOOL CALLBACK rant2_DlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
#ifdef MODEM
switch (nMessage) {
case WM_INITDIALOG:
CheckDlgButton(hwnd, IDC_RANT, modemShowRant);
break;
case WM_COMMAND:
if (WM_COMMAND_ID(wParam) == IDOK) {
modemShowRant = IsDlgButtonChecked(hwnd, IDC_RANT);
EndDialog(hwnd, TRUE);
} else if (WM_COMMAND_ID(wParam) == IDCANCEL) {
EndDialog(hwnd, FALSE);
}
break;
}
#endif
return FALSE;
}
// RANT2DIALOGUE -- Second serial I/O rant dialogue
int rant2Dialogue(HWND hwndParent)
{
int result;
result = DialogBox(hInst, MAKEINTRESOURCE(IDD_MODEM_RANT_2), hwndParent, rant2_DlgProc);
return result;
}
// MODEMDLGPROC -- Modem setup dialogue procedure
BOOL CALLBACK modemDlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
#ifdef MODEM
#ifndef CBR_28800
#define CBR_28800 0xFF1A // Missing in 3.1 windows.h
#endif
static WORD baudRates[] = { CBR_9600, CBR_14400, CBR_19200, CBR_28800,
CBR_38400, CBR_56000, CBR_128000,
CBR_256000 };
static char *baudNames[] = { "9600", "14400", "19200", "28800", "38400",
"56000", "128000", "256000", NULL };
switch (nMessage) {
case WM_INITDIALOG:
{
WORD i, n;
HWND ctl = GetDlgItem(hwnd, IDD_MODEM_BAUD_RATE);
WORD ncom = LOWORD(EscapeCommFunction(NULL, GETMAXCOM)) + 1;
CheckDlgButton(hwnd, IDC_MODEM_ENABLE, modemEnable);
SetDlgItemText(hwnd, IDC_MODEM_INIT_STRING, modemInitString);
for (i = 0; baudNames[i] != NULL; i++) {
n = LOWORD(SendMessage(ctl, CB_ADDSTRING, NULL,
(LPARAM) (LPSTR) baudNames[i]));
SendMessage(ctl, CB_SETITEMDATA, (WPARAM) n,
(LPARAM) (LONG) baudRates[i]);
if (strcmp(baudNames[i], baudrate) == 0) {
SendMessage(ctl, CB_SETCURSEL, (WPARAM) n, NULL);
}
}
ctl = GetDlgItem(hwnd, IDD_MODEM_PORT);
for (i = 0; i < ncom; i++) {
char comn[12];
wsprintf(comn, Format(32), i + 1);
n = LOWORD(SendMessage(ctl, CB_ADDSTRING, NULL,
(LPARAM) (LPSTR) comn));
SendMessage(ctl, CB_SETITEMDATA, (WPARAM) n,
(LPARAM) (LONG) i + 1);
if (_fstrcmp(comn, commport) == 0) {
SendMessage(ctl, CB_SETCURSEL, (WPARAM) n, NULL);
}
}
}
break;
case WM_COMMAND:
switch ((short) WM_COMMAND_ID(wParam)) {
case IDOK:
{
DWORD i;
closeModem(hwnd);
modemEnable = IsDlgButtonChecked(hwnd, IDC_MODEM_ENABLE);
GetDlgItemText(hwnd, IDC_MODEM_INIT_STRING,
modemInitString, sizeof modemInitString);
i = SendDlgItemMessage(hwnd, IDD_MODEM_BAUD_RATE,
CB_GETCURSEL, 0, 0);
if (i != CB_ERR) {
SendDlgItemMessage(hwnd, IDD_MODEM_BAUD_RATE, CB_GETLBTEXT,
(WPARAM) i, (LPARAM) (LPCSTR) baudrate);
}
i = SendDlgItemMessage(hwnd, IDD_MODEM_PORT,
CB_GETCURSEL, 0, 0);
if (i != CB_ERR) {
SendDlgItemMessage(hwnd, IDD_MODEM_PORT, CB_GETLBTEXT,
(WPARAM) i, (LPARAM) (LPCSTR) commport);
}
if (modemEnable) {
if (!openModem(hwnd)) {
modemEnable = FALSE;
}
}
EndDialog(hwnd, TRUE);
}
break;
case IDCANCEL:
EndDialog(hwnd, FALSE);
break;
case IDC_MODEM_ENABLE:
if (modemShowRant && ((WORD)
SendMessage(GetDlgItem(hwnd, IDC_MODEM_ENABLE),
BM_GETCHECK, 0, 0L))) {
if (rant1Dialogue(hwnd)) {
if (rant2Dialogue(hwnd)) {
break;
} else {
CheckDlgButton(hwnd, IDC_MODEM_ENABLE, FALSE);
}
} else {
CheckDlgButton(hwnd, IDC_MODEM_ENABLE, FALSE);
}
}
break;
case ID_HELP:
WinHelp(hwndMDIFrame, rstring(IDS_HELPFILE), HELP_KEY,
((DWORD) (Lrstring(IDS_HELP_MODEM_CONFIG))));
holped = TRUE;
break;
}
}
#endif
return FALSE;
}
// MODEMRANT -- Display rant about lousy serial I/O support on Windows
void modemRant(HWND hwnd)
{
#ifdef MODEM
if (rant1Dialogue(hwnd)) {
rant2Dialogue(hwnd);
}
#endif
}
// MODEMSETUPDIALOGUE -- Modem setup dialogue
VOID modemSetupDialogue(HWND hwnd)
{
DialogBox(hInst, MAKEINTRESOURCE(IDD_MODEM_SETTINGS), hwnd, modemDlgProc);
}
// MULTICASTDLGPROC -- Multicast group membership dialogue procedure
BOOL CALLBACK multicastDlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
#ifdef IP_MAX_MEMBERSHIPS
switch (nMessage) {
case WM_INITDIALOG:
{
int i;
HWND ctl = GetDlgItem(hwnd, IDC_MC_GROUPS);
for (i = 0; i < multiMemberships; i++) {
char mcline[MAX_HOST + 24];
if (multiName[i] == NULL) {
_fstrcpy(mcline, inet_ntoa(multiAddr[i]));
} else {
wsprintf(mcline, Format(33), multiName[i],
(LPSTR) inet_ntoa(multiAddr[i]));
}
SendMessage(ctl, LB_ADDSTRING, 0,
(LPARAM) (LPSTR) mcline);
}
SendMessage(ctl, LB_SETCURSEL, multiMemberships > 0 ? 0 : -1, 0L);
CheckDlgButton(hwnd, IDC_MC_LOOP, multiLoop);
EnableWindow(GetDlgItem(hwnd, IDC_MC_LOOP), !multiBrainDead);
EnableWindow(GetDlgItem(hwnd, IDC_MC_LEAVE), multiMemberships > 0);
EnableWindow(GetDlgItem(hwnd, IDC_MC_JOIN), FALSE);
}
break;
case WM_COMMAND:
switch ((short) WM_COMMAND_ID(wParam)) {
case IDOK:
{
int i, n;
multicastJoin(hwnd, FALSE); // Drop current groups
multiLoop = IsDlgButtonChecked(hwnd, IDC_MC_LOOP);
n = (int) SendDlgItemMessage(hwnd, IDC_MC_GROUPS, LB_GETCOUNT, 0, 0L);
for (i = 0; i < n; i++) {
char s[MAX_HOST + 24];
char *cp;
SendDlgItemMessage(hwnd, IDC_MC_GROUPS, LB_GETTEXT, i,
(LPARAM) (LPCSTR) s);
if ((cp = strchr(s, '(')) != NULL) {
char *cp1;
cp++;
cp1 = strchr(cp, ')');
if (cp1 != NULL) {
*cp1 = 0;
}
} else {
cp = s;
}
multiAddr[i].s_addr = inet_addr(cp);
multiName[i] = NULL;
if (cp > s) {
LPSTR np;
cp[-2] = 0;
np = GlobalAllocPtr(GPTR, strlen(s) + 1);
if (np != NULL) {
_fstrcpy(np, s);
multiName[i] = np;
}
}
}
multiMemberships = n;
multicastJoin(hwnd, TRUE); // Join newly chosen groups
}
EndDialog(hwnd, TRUE);
break;
case IDCANCEL:
EndDialog(hwnd, FALSE);
break;
case IDC_MC_NEW_GROUP:
if (WM_COMMAND_NOTIFY == EN_CHANGE) {
EnableWindow(GetDlgItem(hwnd, IDC_MC_JOIN),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -