📄 dialogs.c
字号:
GetWindowText(hDlg, tbuf + strlen(tbuf), (sizeof tbuf) - strlen(tbuf));
} else
#endif
{
GetWindowText(hDlg, tbuf, sizeof tbuf);
strcat(tbuf, " - ");
strcat(tbuf, d->szHost);
}
SetWindowText(hDlg, tbuf);
CheckDlgButton(hDlg, IDC_DEBUG, d->debugging);
CheckDlgButton(hDlg, IDC_LOOPBACK, d->loopback);
SetDlgItemText(hDlg, IDC_CP_DESKEY, d->desKeyString);
SetDlgItemText(hDlg, IDC_CP_IDEAKEY, d->ideaKeyString);
SetDlgItemText(hDlg, IDC_CP_BLOWFISHKEY, d->blowfishKeyString);
SetDlgItemText(hDlg, IDC_CP_AESKEY, d->aesKeyString);
CheckDlgButton(hDlg, IDC_CP_AES_HEX, d->aesKeyHex);
SetDlgItemText(hDlg, IDC_CP_OTPFILE, d->otpFileName);
if (pk_package == GPG) {
SetWindowText(GetDlgItem(hDlg, IDC_CP_PGP), rstring(IDS_T_GPG_USER_NAMES));
}
SetDlgItemText(hDlg, IDC_CP_PGPUSERS, d->opgpUserList);
CheckDlgButton(hDlg, IDC_SAVE_KEYS, d->saveKeys);
#define Crypple(x) ShowWindow(GetDlgItem(hDlg, x), SW_HIDE)
#ifdef CRYPTO
Crypple(IDC_CP_NOCRYPTO1);
Crypple(IDC_CP_NOCRYPTO2);
Crypple(IDC_CP_NOCRYPTO3);
#define SFonly(x) EnableWindow(GetDlgItem(hDlg, x), protocolSent == PROTOCOL_SPEAKFREE)
SFonly(IDC_CP_AES);
SFonly(IDC_CP_AESKEY);
SFonly(IDC_CP_AES_HEX);
SFonly(IDC_CP_IDEA);
SFonly(IDC_CP_IDEAKEY);
SFonly(IDC_CP_BLOWFISH);
SFonly(IDC_CP_BLOWFISHKEY);
SFonly(IDC_CP_KEYFILE);
SFonly(IDC_CP_OTPFILE);
SFonly(IDC_CP_PGP);
SFonly(IDC_CP_PGPUSERS);
SFonly(IDC_CP_PATENT);
SFonly(IDC_OTP_BROWSE);
#undef SFonly
#else
Crypple(IDC_CP_AES);
Crypple(IDC_CP_AESKEY);
Crypple(IDC_CP_AES_HEX);
Crypple(IDC_CP_DES);
Crypple(IDC_CP_DESKEY);
Crypple(IDC_CP_IDEA);
Crypple(IDC_CP_IDEAKEY);
Crypple(IDC_CP_BLOWFISH);
Crypple(IDC_CP_BLOWFISHKEY);
Crypple(IDC_CP_KEYFILE);
Crypple(IDC_CP_OTPFILE);
Crypple(IDC_CP_PGP);
Crypple(IDC_CP_PGPUSERS);
Crypple(IDC_CP_PATENT);
Crypple(IDC_SAVE_KEYS);
Crypple(IDC_OTP_BROWSE);
#endif
#undef Crypple
#ifdef IP_MAX_MEMBERSHIPS
EnableWindow(GetDlgItem(hDlg, IDC_CP_MULTI_SCOPE),
IN_MULTICAST(d->inetSock.sin_addr.s_addr));
EnableWindow(GetDlgItem(hDlg, IDC_CP_MULTI_LABEL),
IN_MULTICAST(d->inetSock.sin_addr.s_addr));
if (IN_MULTICAST(d->inetSock.sin_addr.s_addr)) {
SetDlgItemInt(hDlg, IDC_CP_MULTI_SCOPE, d->multicast_scope, FALSE);
}
#else
EnableWindow(GetDlgItem(hDlg, IDC_CP_MULTI_SCOPE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_CP_MULTI_LABEL), FALSE);
#endif
}
break;
case WM_COMMAND:
switch ((short) WM_COMMAND_ID(wParam)) {
case IDOK:
#ifdef IP_MAX_MEMBERSHIPS
if (GetDlgItemInt(hDlg, IDC_CP_MULTI_SCOPE, NULL, FALSE) > 255) {
MessageBox(hDlg, rstring(IDS_T_MULTICAST_SCOPE_ERR),
NULL, MB_ICONEXCLAMATION | MB_OK);
return TRUE;
}
#endif
d->debugging = IsDlgButtonChecked(hDlg, IDC_DEBUG);
d->loopback = IsDlgButtonChecked(hDlg, IDC_LOOPBACK);
GetDlgItemText(hDlg, IDC_CP_DESKEY, d->desKeyString, sizeof d->desKeyString);
GetDlgItemText(hDlg, IDC_CP_IDEAKEY, d->ideaKeyString, sizeof d->ideaKeyString);
GetDlgItemText(hDlg, IDC_CP_BLOWFISHKEY, d->blowfishKeyString, sizeof d->blowfishKeyString);
GetDlgItemText(hDlg, IDC_CP_AESKEY, d->aesKeyString, sizeof d->aesKeyString);
d->aesKeyHex = IsDlgButtonChecked(hDlg, IDC_CP_AES_HEX);
GetDlgItemText(hDlg, IDC_CP_OTPFILE, d->otpFileName, sizeof d->otpFileName);
GetDlgItemText(hDlg, IDC_CP_PGPUSERS, d->opgpUserList, sizeof d->opgpUserList);
d->multicast_scope = GetDlgItemInt(hDlg, IDC_CP_MULTI_SCOPE, NULL, FALSE);
d->saveKeys = IsDlgButtonChecked(hDlg, IDC_SAVE_KEYS);
if (!makeInternalEncryptionKeys(GetParent(hDlg), d)) {
break;
}
EndDialog(hDlg, TRUE);
break;
case IDCANCEL:
EndDialog(hDlg, FALSE);
break;
#ifdef CRYPTO
case IDC_OTP_BROWSE:
{
OPENFILENAME ofn;
char szString[MAX_PATH];
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);
strcpy(d->otpFileName, szString);
}
}
break;
#endif
case ID_HELP:
displayHelpTopic(IDS_HELP_CONNPROP);
break;
default:
break;
}
break;
default:
if (message == fileOpenHelpButton && fileHelpKey != NULL) {
displayHelpTopicString(fileHelpKey);
}
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:
{
char key[256];
sessionKeyGenerate(key, FALSE);
SetDlgItemText(hwnd, IDE_KEY, key);
}
break;
case WM_COMMAND:
switch ((short) WM_COMMAND_ID(wParam)) {
case IDOK:
EndDialog(hwnd, TRUE);
break;
case IDC_NEW_KEY:
{
char key[256];
sessionKeyGenerate(key, FALSE);
SetDlgItemText(hwnd, IDE_KEY, key);
SendMessage(GetDlgItem(hwnd, IDE_KEY), EM_SETSEL, 0,
strlen(key) + 1);
SetFocus(GetDlgItem(hwnd, IDE_KEY));
}
break;
case ID_HELP:
displayHelpTopic(IDS_HELP_KEYGEN);
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 (strcmp(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:
displayHelpTopic(IDS_HELP_MODEM_CONFIG);
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) {
strcpy(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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -