+ case WM_COMMAND:
+ /*
+ * Only process WM_COMMAND once the dialog is fully formed.
+ */
+ if (GetWindowLong(hwnd, GWL_USERDATA) == 1)
+ switch (LOWORD(wParam)) {
+ case IDOK:
+ /* Behaviour of the "Open" button is different if the
+ * session list has focus, *unless* the user just
+ * double-clicked... */
+ if (sesslist_has_focus && !readytogo) {
+ if (!load_selected_session(hwnd)) {
+ MessageBeep(0);
+ return 0;
+ }
+ }
+ /* If at this point we have a valid session, go! */
+ if (*cfg.host) {
+ if (requested_help) {
+ WinHelp(hwnd, help_path, HELP_QUIT, 0);
+ requested_help = FALSE;
+ }
+ EndDialog(hwnd, 1);
+ } else
+ MessageBeep(0);
+ return 0;
+ case IDC_HELPBTN:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ if (help_path) {
+ WinHelp(hwnd, help_path,
+ help_has_contents ? HELP_FINDER : HELP_CONTENTS,
+ 0);
+ requested_help = TRUE;
+ }
+ }
+ break;
+ case IDCANCEL:
+ if (requested_help) {
+ WinHelp(hwnd, help_path, HELP_QUIT, 0);
+ requested_help = FALSE;
+ }
+ EndDialog(hwnd, 0);
+ return 0;
+ case IDC_PROTTELNET:
+ case IDC_PROTRLOGIN:
+ case IDC_PROTSSH:
+ case IDC_PROTRAW:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ int i = IsDlgButtonChecked(hwnd, IDC_PROTSSH);
+ int j = IsDlgButtonChecked(hwnd, IDC_PROTTELNET);
+ int k = IsDlgButtonChecked(hwnd, IDC_PROTRLOGIN);
+ cfg.protocol =
+ i ? PROT_SSH : j ? PROT_TELNET : k ? PROT_RLOGIN :
+ PROT_RAW;
+ /*
+ * When switching using the arrow keys, we
+ * appear to get two of these messages, both
+ * mentioning the target button in
+ * LOWORD(wParam), but one of them called while
+ * the previous button is still checked. This
+ * causes an unnecessary reset of the port
+ * number field, which we fix by ensuring here
+ * that the button selected is indeed the one
+ * checked.
+ */
+ if (IsDlgButtonChecked(hwnd, LOWORD(wParam)) &&
+ ((cfg.protocol == PROT_SSH && cfg.port != 22)
+ || (cfg.protocol == PROT_TELNET && cfg.port != 23)
+ || (cfg.protocol == PROT_RLOGIN
+ && cfg.port != 513))) {
+ cfg.port = i ? 22 : j ? 23 : 513;
+ SetDlgItemInt(hwnd, IDC_PORT, cfg.port, FALSE);
+ }
+ }
+ break;
+ case IDC_HOST:
+ if (HIWORD(wParam) == EN_CHANGE)
+ GetDlgItemText(hwnd, IDC_HOST, cfg.host,
+ sizeof(cfg.host) - 1);
+ break;
+ case IDC_PORT:
+ if (HIWORD(wParam) == EN_CHANGE) {
+ GetDlgItemText(hwnd, IDC_PORT, portname, 31);
+ if (isdigit(portname[0]))
+ MyGetDlgItemInt(hwnd, IDC_PORT, &cfg.port);
+ else {
+ service = getservbyname(portname, NULL);
+ if (service)
+ cfg.port = ntohs(service->s_port);
+ else
+ cfg.port = 0;
+ }
+ }
+ break;
+ case IDC_SESSEDIT:
+ if (HIWORD(wParam) == EN_CHANGE) {
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_SETCURSEL,
+ (WPARAM) - 1, 0);
+ GetDlgItemText(hwnd, IDC_SESSEDIT,
+ savedsession, sizeof(savedsession) - 1);
+ savedsession[sizeof(savedsession) - 1] = '\0';
+ }
+ break;
+ case IDC_SESSSAVE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ /*
+ * Save a session
+ */
+ char str[2048];
+ GetDlgItemText(hwnd, IDC_SESSEDIT, str,
+ sizeof(str) - 1);
+ if (!*str) {
+ int n = SendDlgItemMessage(hwnd, IDC_SESSLIST,
+ LB_GETCURSEL, 0, 0);
+ if (n == LB_ERR) {
+ MessageBeep(0);
+ break;
+ }
+ strcpy(str, sesslist.sessions[n]);
+ }
+ save_settings(str, !!strcmp(str, "Default Settings"),
+ &cfg);
+ get_sesslist(&sesslist, FALSE);
+ get_sesslist(&sesslist, TRUE);
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, WM_SETREDRAW,
+ FALSE, 0);
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_RESETCONTENT,
+ 0, 0);
+ for (i = 0; i < sesslist.nsessions; i++)
+ SendDlgItemMessage(hwnd, IDC_SESSLIST,
+ LB_ADDSTRING, 0,
+ (LPARAM) (sesslist.sessions[i]));
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_SETCURSEL,
+ (WPARAM) - 1, 0);
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, WM_SETREDRAW,
+ TRUE, 0);
+ InvalidateRect(GetDlgItem(hwnd, IDC_SESSLIST), NULL,
+ TRUE);
+ }
+ break;
+ case IDC_SESSLIST:
+ case IDC_SESSLOAD:
+ if (LOWORD(wParam) == IDC_SESSLIST) {
+ if (HIWORD(wParam) == LBN_SETFOCUS)
+ sesslist_has_focus = 1;
+ else if (HIWORD(wParam) == LBN_KILLFOCUS)
+ sesslist_has_focus = 0;
+ }
+ if (LOWORD(wParam) == IDC_SESSLOAD &&
+ HIWORD(wParam) != BN_CLICKED &&
+ HIWORD(wParam) != BN_DOUBLECLICKED) break;
+ if (LOWORD(wParam) == IDC_SESSLIST &&
+ HIWORD(wParam) != LBN_DBLCLK) break;
+ /* Load the session selected in SESSLIST. */
+ if (load_selected_session(hwnd) &&
+ LOWORD(wParam) == IDC_SESSLIST) {
+ /*
+ * A double-click on a saved session should
+ * actually start the session, not just load it.
+ * Unless it's Default Settings or some other
+ * host-less set of saved settings.
+ */
+ if (*cfg.host) {
+ readytogo = TRUE;
+ SetCapture(hwnd);
+ }
+ }
+ break;
+ case IDC_SESSDEL:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ int n = SendDlgItemMessage(hwnd, IDC_SESSLIST,
+ LB_GETCURSEL, 0, 0);
+ if (n == LB_ERR || n == 0) {
+ MessageBeep(0);
+ break;
+ }
+ del_settings(sesslist.sessions[n]);
+ get_sesslist(&sesslist, FALSE);
+ get_sesslist(&sesslist, TRUE);
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, WM_SETREDRAW,
+ FALSE, 0);
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_RESETCONTENT,
+ 0, 0);
+ for (i = 0; i < sesslist.nsessions; i++)
+ SendDlgItemMessage(hwnd, IDC_SESSLIST,
+ LB_ADDSTRING, 0,
+ (LPARAM) (sesslist.sessions[i]));
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_SETCURSEL,
+ (WPARAM) - 1, 0);
+ SendDlgItemMessage(hwnd, IDC_SESSLIST, WM_SETREDRAW,
+ TRUE, 0);
+ InvalidateRect(GetDlgItem(hwnd, IDC_SESSLIST), NULL,
+ TRUE);
+ }
+ case IDC_PINGEDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ MyGetDlgItemInt(hwnd, IDC_PINGEDIT,
+ &cfg.ping_interval);
+ break;
+ case IDC_NODELAY:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.tcp_nodelay =
+ IsDlgButtonChecked(hwnd, IDC_NODELAY);
+ break;
+ case IDC_DEL008:
+ case IDC_DEL127:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.bksp_is_delete =
+ IsDlgButtonChecked(hwnd, IDC_DEL127);
+ break;
+ case IDC_HOMETILDE:
+ case IDC_HOMERXVT:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.rxvt_homeend =
+ IsDlgButtonChecked(hwnd, IDC_HOMERXVT);
+ break;
+ case IDC_FUNCTILDE:
+ case IDC_FUNCLINUX:
+ case IDC_FUNCXTERM:
+ case IDC_FUNCVT400:
+ case IDC_FUNCVT100P:
+ case IDC_FUNCSCO:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ switch (LOWORD(wParam)) {
+ case IDC_FUNCTILDE:
+ cfg.funky_type = 0;
+ break;
+ case IDC_FUNCLINUX:
+ cfg.funky_type = 1;
+ break;
+ case IDC_FUNCXTERM:
+ cfg.funky_type = 2;
+ break;
+ case IDC_FUNCVT400:
+ cfg.funky_type = 3;
+ break;
+ case IDC_FUNCVT100P:
+ cfg.funky_type = 4;
+ break;
+ case IDC_FUNCSCO:
+ cfg.funky_type = 5;
+ break;
+ }
+ break;
+ case IDC_KPNORMAL:
+ case IDC_KPAPPLIC:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ cfg.app_keypad =
+ IsDlgButtonChecked(hwnd, IDC_KPAPPLIC);
+ cfg.nethack_keypad = FALSE;
+ }
+ break;
+ case IDC_KPNH:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ cfg.app_keypad = FALSE;
+ cfg.nethack_keypad = TRUE;
+ }
+ break;
+ case IDC_CURNORMAL:
+ case IDC_CURAPPLIC:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.app_cursor =
+ IsDlgButtonChecked(hwnd, IDC_CURAPPLIC);
+ break;
+ case IDC_NOAPPLICC:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.no_applic_c =
+ IsDlgButtonChecked(hwnd, IDC_NOAPPLICC);
+ break;
+ case IDC_NOAPPLICK:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.no_applic_k =
+ IsDlgButtonChecked(hwnd, IDC_NOAPPLICK);
+ break;
+ case IDC_NOMOUSEREP:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.no_mouse_rep =
+ IsDlgButtonChecked(hwnd, IDC_NOMOUSEREP);
+ break;
+ case IDC_NORESIZE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.no_remote_resize =
+ IsDlgButtonChecked(hwnd, IDC_NORESIZE);
+ break;
+ case IDC_NOALTSCREEN:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.no_alt_screen =
+ IsDlgButtonChecked(hwnd, IDC_NOALTSCREEN);
+ break;
+ case IDC_NOWINTITLE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.no_remote_wintitle =
+ IsDlgButtonChecked(hwnd, IDC_NOWINTITLE);
+ break;
+ case IDC_NODBACKSPACE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.no_dbackspace =
+ IsDlgButtonChecked(hwnd, IDC_NODBACKSPACE);
+ break;
+ case IDC_NOCHARSET:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.no_remote_charset =
+ IsDlgButtonChecked(hwnd, IDC_NOCHARSET);
+ break;
+ case IDC_ALTF4:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.alt_f4 = IsDlgButtonChecked(hwnd, IDC_ALTF4);
+ break;
+ case IDC_ALTSPACE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.alt_space =
+ IsDlgButtonChecked(hwnd, IDC_ALTSPACE);
+ break;
+ case IDC_ALTONLY:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.alt_only =
+ IsDlgButtonChecked(hwnd, IDC_ALTONLY);
+ break;
+ case IDC_ECHOBACKEND:
+ case IDC_ECHOYES:
+ case IDC_ECHONO:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ if (LOWORD(wParam) == IDC_ECHOBACKEND)
+ cfg.localecho = AUTO;
+ if (LOWORD(wParam) == IDC_ECHOYES)
+ cfg.localecho = FORCE_ON;
+ if (LOWORD(wParam) == IDC_ECHONO)
+ cfg.localecho = FORCE_OFF;
+ }
+ break;
+ case IDC_EDITBACKEND:
+ case IDC_EDITYES:
+ case IDC_EDITNO:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ if (LOWORD(wParam) == IDC_EDITBACKEND)
+ cfg.localedit = AUTO;
+ if (LOWORD(wParam) == IDC_EDITYES)
+ cfg.localedit = FORCE_ON;
+ if (LOWORD(wParam) == IDC_EDITNO)
+ cfg.localedit = FORCE_OFF;
+ }
+ break;
+ case IDC_ANSWEREDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ GetDlgItemText(hwnd, IDC_ANSWEREDIT, cfg.answerback,
+ sizeof(cfg.answerback) - 1);
+ break;
+ case IDC_ALWAYSONTOP:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.alwaysontop =
+ IsDlgButtonChecked(hwnd, IDC_ALWAYSONTOP);
+ break;
+ case IDC_FULLSCREENONALTENTER:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.fullscreenonaltenter =
+ IsDlgButtonChecked(hwnd, IDC_FULLSCREENONALTENTER);
+ break;
+ case IDC_SCROLLKEY:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.scroll_on_key =
+ IsDlgButtonChecked(hwnd, IDC_SCROLLKEY);
+ break;
+ case IDC_SCROLLDISP:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.scroll_on_disp =
+ IsDlgButtonChecked(hwnd, IDC_SCROLLDISP);
+ break;
+ case IDC_COMPOSEKEY:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.compose_key =
+ IsDlgButtonChecked(hwnd, IDC_COMPOSEKEY);
+ break;
+ case IDC_CTRLALTKEYS:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.ctrlaltkeys =
+ IsDlgButtonChecked(hwnd, IDC_CTRLALTKEYS);
+ break;
+ case IDC_TELNETKEY:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.telnet_keyboard =
+ IsDlgButtonChecked(hwnd, IDC_TELNETKEY);
+ break;
+ case IDC_TELNETRET:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.telnet_newline =
+ IsDlgButtonChecked(hwnd, IDC_TELNETRET);
+ break;
+ case IDC_WRAPMODE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.wrap_mode =
+ IsDlgButtonChecked(hwnd, IDC_WRAPMODE);
+ break;
+ case IDC_DECOM:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.dec_om = IsDlgButtonChecked(hwnd, IDC_DECOM);
+ break;
+ case IDC_LFHASCR:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.lfhascr =
+ IsDlgButtonChecked(hwnd, IDC_LFHASCR);
+ break;
+ case IDC_ROWSEDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ MyGetDlgItemInt(hwnd, IDC_ROWSEDIT, &cfg.height);
+ break;
+ case IDC_COLSEDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ MyGetDlgItemInt(hwnd, IDC_COLSEDIT, &cfg.width);
+ break;
+ case IDC_SAVEEDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ MyGetDlgItemInt(hwnd, IDC_SAVEEDIT, &cfg.savelines);
+ break;
+ case IDC_CHOOSEFONT:
+ {
+ HDC hdc = GetDC(0);
+ lf.lfHeight = -MulDiv(cfg.font.height,
+ GetDeviceCaps(hdc, LOGPIXELSY),
+ 72);
+ ReleaseDC(0, hdc);
+ }
+ lf.lfWidth = lf.lfEscapement = lf.lfOrientation = 0;
+ lf.lfItalic = lf.lfUnderline = lf.lfStrikeOut = 0;
+ lf.lfWeight = (cfg.font.isbold ? FW_BOLD : 0);
+ lf.lfCharSet = cfg.font.charset;
+ lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
+ lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
+ lf.lfQuality = DEFAULT_QUALITY;
+ lf.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
+ strncpy(lf.lfFaceName, cfg.font.name,
+ sizeof(lf.lfFaceName) - 1);
+ lf.lfFaceName[sizeof(lf.lfFaceName) - 1] = '\0';
+
+ cf.lStructSize = sizeof(cf);
+ cf.hwndOwner = hwnd;
+ cf.lpLogFont = &lf;
+ cf.Flags = CF_FIXEDPITCHONLY | CF_FORCEFONTEXIST |
+ CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS;
+
+ if (ChooseFont(&cf)) {
+ strncpy(cfg.font.name, lf.lfFaceName,
+ sizeof(cfg.font.name) - 1);
+ cfg.font.name[sizeof(cfg.font.name) - 1] = '\0';
+ cfg.font.isbold = (lf.lfWeight == FW_BOLD);
+ cfg.font.charset = lf.lfCharSet;
+ cfg.font.height = cf.iPointSize / 10;
+ fmtfont(fontstatic);
+ SetDlgItemText(hwnd, IDC_FONTSTATIC, fontstatic);
+ }
+ break;
+ case IDC_BELL_DISABLED:
+ case IDC_BELL_DEFAULT:
+ case IDC_BELL_WAVEFILE:
+ case IDC_BELL_VISUAL:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ if (LOWORD(wParam) == IDC_BELL_DISABLED)
+ cfg.beep = BELL_DISABLED;
+ if (LOWORD(wParam) == IDC_BELL_DEFAULT)
+ cfg.beep = BELL_DEFAULT;
+ if (LOWORD(wParam) == IDC_BELL_WAVEFILE)
+ cfg.beep = BELL_WAVEFILE;
+ if (LOWORD(wParam) == IDC_BELL_VISUAL)
+ cfg.beep = BELL_VISUAL;
+ }
+ break;
+ case IDC_B_IND_DISABLED:
+ case IDC_B_IND_FLASH:
+ case IDC_B_IND_STEADY:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ if (LOWORD(wParam) == IDC_B_IND_DISABLED)
+ cfg.beep_ind = B_IND_DISABLED;
+ if (LOWORD(wParam) == IDC_B_IND_FLASH)
+ cfg.beep_ind = B_IND_FLASH;
+ if (LOWORD(wParam) == IDC_B_IND_STEADY)
+ cfg.beep_ind = B_IND_STEADY;
+ }
+ break;
+ case IDC_BELL_WAVEBROWSE:
+ memset(&of, 0, sizeof(of));
+#ifdef OPENFILENAME_SIZE_VERSION_400
+ of.lStructSize = OPENFILENAME_SIZE_VERSION_400;
+#else
+ of.lStructSize = sizeof(of);
+#endif
+ of.hwndOwner = hwnd;
+ of.lpstrFilter = "Wave Files (*.wav)\0*.WAV\0"
+ "All Files (*.*)\0*\0\0\0";
+ of.lpstrCustomFilter = NULL;
+ of.nFilterIndex = 1;
+ of.lpstrFile = filename;
+ strcpy(filename, cfg.bell_wavefile.path);
+ of.nMaxFile = sizeof(filename);
+ of.lpstrFileTitle = NULL;
+ of.lpstrInitialDir = NULL;
+ of.lpstrTitle = "Select Bell Sound File";
+ of.Flags = 0;
+ if (GetOpenFileName(&of)) {
+ strcpy(cfg.bell_wavefile.path, filename);
+ SetDlgItemText(hwnd, IDC_BELL_WAVEEDIT,
+ cfg.bell_wavefile.path);
+ }
+ break;
+ case IDC_BELL_WAVEEDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ GetDlgItemText(hwnd, IDC_BELL_WAVEEDIT,
+ cfg.bell_wavefile.path,
+ sizeof(cfg.bell_wavefile.path) - 1);
+ break;
+ case IDC_BELLOVL:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.bellovl =
+ IsDlgButtonChecked(hwnd, IDC_BELLOVL);
+ break;
+ case IDC_BELLOVLN:
+ if (HIWORD(wParam) == EN_CHANGE)
+ MyGetDlgItemInt(hwnd, IDC_BELLOVLN, &cfg.bellovl_n);
+ break;
+ case IDC_BELLOVLT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ MyGetDlgItemFlt(hwnd, IDC_BELLOVLT, &cfg.bellovl_t,
+ 1000);
+ break;
+ case IDC_BELLOVLS:
+ if (HIWORD(wParam) == EN_CHANGE)
+ MyGetDlgItemFlt(hwnd, IDC_BELLOVLS, &cfg.bellovl_s,
+ 1000);
+ break;
+ case IDC_BLINKTEXT:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.blinktext =
+ IsDlgButtonChecked(hwnd, IDC_BLINKTEXT);
+ break;
+ case IDC_BCE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.bce = IsDlgButtonChecked(hwnd, IDC_BCE);
+ break;
+ case IDC_WINNAME:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.win_name_always =
+ !IsDlgButtonChecked(hwnd, IDC_WINNAME);
+ break;
+ case IDC_HIDEMOUSE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.hide_mouseptr =
+ IsDlgButtonChecked(hwnd, IDC_HIDEMOUSE);
+ break;
+ case IDC_SUNKENEDGE:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.sunken_edge =
+ IsDlgButtonChecked(hwnd, IDC_SUNKENEDGE);
+ break;
+ case IDC_WINBEDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ MyGetDlgItemInt(hwnd, IDC_WINBEDIT,
+ &cfg.window_border);
+ if (cfg.window_border > 32)
+ cfg.window_border = 32;
+ break;
+ case IDC_CURBLOCK:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.cursor_type = 0;
+ break;
+ case IDC_CURUNDER:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.cursor_type = 1;
+ break;
+ case IDC_CURVERT:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.cursor_type = 2;
+ break;
+ case IDC_BLINKCUR:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.blink_cur =
+ IsDlgButtonChecked(hwnd, IDC_BLINKCUR);
+ break;
+ case IDC_SCROLLBAR:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.scrollbar =
+ IsDlgButtonChecked(hwnd, IDC_SCROLLBAR);
+ break;
+ case IDC_SCROLLBARFULLSCREEN:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.scrollbar_in_fullscreen =
+ IsDlgButtonChecked(hwnd, IDC_SCROLLBARFULLSCREEN);
+ break;
+ case IDC_RESIZETERM:
+ case IDC_RESIZEFONT:
+ case IDC_RESIZENONE:
+ case IDC_RESIZEEITHER:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ cfg.resize_action =
+ IsDlgButtonChecked(hwnd,
+ IDC_RESIZETERM) ? RESIZE_TERM :
+ IsDlgButtonChecked(hwnd,
+ IDC_RESIZEFONT) ? RESIZE_FONT :
+ IsDlgButtonChecked(hwnd,
+ IDC_RESIZEEITHER) ? RESIZE_EITHER :
+ RESIZE_DISABLED;
+ }
+ break;
+ case IDC_WINEDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ GetDlgItemText(hwnd, IDC_WINEDIT, cfg.wintitle,
+ sizeof(cfg.wintitle) - 1);
+ break;
+ case IDC_COEALWAYS:
+ case IDC_COENEVER:
+ case IDC_COENORMAL:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED) {
+ cfg.close_on_exit =
+ IsDlgButtonChecked(hwnd,
+ IDC_COEALWAYS) ? FORCE_ON :
+ IsDlgButtonChecked(hwnd,
+ IDC_COENEVER) ? FORCE_OFF :
+ AUTO;
+ }
+ break;
+ case IDC_CLOSEWARN:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.warn_on_close =
+ IsDlgButtonChecked(hwnd, IDC_CLOSEWARN);
+ break;
+ case IDC_TTEDIT:
+ if (HIWORD(wParam) == EN_CHANGE)
+ GetDlgItemText(hwnd, IDC_TTEDIT, cfg.termtype,
+ sizeof(cfg.termtype) - 1);
+ break;