checkbox(&cp, "Control-Alt is &different from AltGr", IDC_CTRLALTKEYS);
static void create_controls(HWND hwnd, int dlgtype, int panel) {    if (panel == sessionpanelstart) {	/* The Session panel. Accelerators used: [acgo] nprtih elsd w */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Basic options for your PuTTY session",                 IDC_TITLE_SESSION);        if (dlgtype == 0) {            beginbox(&cp, "Specify your connection by host name",                     IDC_BOX_SESSION1);            multiedit(&cp,                      "Host &Name", IDC_HOSTSTATIC, IDC_HOST, 75,                      "&Port", IDC_PORTSTATIC, IDC_PORT, 25, NULL);            if (backends[3].backend == NULL) {                /* this is PuTTYtel, so only three protocols available */                radioline(&cp, "Protocol:", IDC_PROTSTATIC, 4,                          "&Raw", IDC_PROTRAW,                          "&Telnet", IDC_PROTTELNET,                          "Rlog&in", IDC_PROTRLOGIN, NULL);            } else {                radioline(&cp, "Protocol:", IDC_PROTSTATIC, 4,                          "&Raw", IDC_PROTRAW,                          "&Telnet", IDC_PROTTELNET,                          "Rlog&in", IDC_PROTRLOGIN,#ifdef FWHACK                          "SS&H/hack",#else                          "SS&H",#endif                          IDC_PROTSSH, NULL);            }            endbox(&cp);            beginbox(&cp, "Load, save or delete a stored session",                     IDC_BOX_SESSION2);            sesssaver(&cp, "Sav&ed Sessions",                      IDC_SESSSTATIC, IDC_SESSEDIT, IDC_SESSLIST,                      "&Load", IDC_SESSLOAD,                      "&Save", IDC_SESSSAVE,                      "&Delete", IDC_SESSDEL, NULL);            endbox(&cp);        }        beginbox(&cp, NULL, IDC_BOX_SESSION3);        radioline(&cp, "Close &window on exit:", IDC_CLOSEEXIT, 4,                  "Always", IDC_COEALWAYS,                  "Never", IDC_COENEVER,                  "Only on clean exit", IDC_COENORMAL, NULL);        endbox(&cp);    }    if (panel == loggingpanelstart) {        /* The Logging panel. Accelerators used: [acgo] tplfw */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling session logging",                 IDC_TITLE_TERMINAL);        beginbox(&cp, NULL, IDC_BOX_LOGGING1);        radiobig(&cp,                 "Session logging:", IDC_LSTATSTATIC,                 "Logging &turned off completely", IDC_LSTATOFF,                 "Log &printable output only", IDC_LSTATASCII,                 "&Log all session output", IDC_LSTATRAW, NULL);        editbutton(&cp, "Log &file name:",                   IDC_LGFSTATIC, IDC_LGFEDIT, "Bro&wse...",                   IDC_LGFBUTTON);        endbox(&cp);    }    if (panel == terminalpanelstart) {        /* The Terminal panel. Accelerators used: [acgo] wdlben hts */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling the terminal emulation",                 IDC_TITLE_TERMINAL);        beginbox(&cp, "Set various terminal options",                 IDC_BOX_TERMINAL1);        checkbox(&cp, "Auto &wrap mode initially on", IDC_WRAPMODE);        checkbox(&cp, "&DEC Origin Mode initially on", IDC_DECOM);        checkbox(&cp, "Implicit CR in every &LF", IDC_LFHASCR);        checkbox(&cp, "&Beep enabled", IDC_BEEP);        checkbox(&cp, "Use background colour to &erase screen", IDC_BCE);        checkbox(&cp, "Enable bli&nking text", IDC_BLINKTEXT);        multiedit(&cp,                  "An&swerback to ^E:", IDC_ANSWERBACK,                  IDC_ANSWEREDIT, 100, NULL);        endbox(&cp);        beginbox(&cp, "Line discipline options",                 IDC_BOX_TERMINAL2);        radioline(&cp, "Local ec&ho:", IDC_ECHOSTATIC, 3,                  "Auto", IDC_ECHOBACKEND,                  "Force on", IDC_ECHOYES,                  "Force off", IDC_ECHONO, NULL);        radioline(&cp, "Local line edi&ting:", IDC_EDITSTATIC, 3,                  "Auto", IDC_EDITBACKEND,                  "Force on", IDC_EDITYES,                  "Force off", IDC_EDITNO, NULL);        endbox(&cp);    }    if (panel == keyboardpanelstart) {        /* The Keyboard panel. Accelerators used: [acgo] h?sr~lxv unpymie t */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling the effects of keys",                 IDC_TITLE_KEYBOARD);        beginbox(&cp, "Change the sequences sent by:",                 IDC_BOX_KEYBOARD1);        radioline(&cp, "The Backspace key", IDC_DELSTATIC, 2,                  "Control-&H", IDC_DEL008,                  "Control-&? (127)", IDC_DEL127, NULL);        radioline(&cp, "The Home and End keys", IDC_HOMESTATIC, 2,                  "&Standard", IDC_HOMETILDE,                  "&rxvt", IDC_HOMERXVT, NULL);        radioline(&cp, "The Function keys and keypad", IDC_FUNCSTATIC, 4,                  "ESC[n&~", IDC_FUNCTILDE,                  "&Linux", IDC_FUNCLINUX,                  "&Xterm R6", IDC_FUNCXTERM,                  "&VT400", IDC_FUNCVT400, NULL);        endbox(&cp);        beginbox(&cp, "Application keypad settings:",                 IDC_BOX_KEYBOARD2);        checkbox(&cp,                 "Application c&ursor keys totally disabled",                 IDC_NOAPPLICC);        radioline(&cp, "Initial state of cursor keys:", IDC_CURSTATIC, 2,                  "&Normal", IDC_CURNORMAL,                  "A&pplication", IDC_CURAPPLIC, NULL);        checkbox(&cp,                 "Application ke&ypad keys totally disabled",                 IDC_NOAPPLICK);        radioline(&cp, "Initial state of numeric keypad:", IDC_KPSTATIC, 3,                  "Nor&mal", IDC_KPNORMAL,                  "Appl&ication", IDC_KPAPPLIC,                  "N&etHack", IDC_KPNH, NULL);        endbox(&cp);        beginbox(&cp, "Enable extra keyboard features:",                 IDC_BOX_KEYBOARD3);        checkbox(&cp, "Application and AltGr ac&t as Compose key",                 IDC_COMPOSEKEY);        endbox(&cp);    }    if (panel == windowpanelstart) {        /* The Window panel. Accelerators used: [acgo] rmz sdkp w4ylt */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling PuTTY's window",                 IDC_TITLE_WINDOW);        beginbox(&cp, "Set the size of the window",                 IDC_BOX_WINDOW1);        multiedit(&cp,                  "&Rows", IDC_ROWSSTATIC, IDC_ROWSEDIT, 50,                  "Colu&mns", IDC_COLSSTATIC, IDC_COLSEDIT, 50,                  NULL);        checkbox(&cp, "Lock window size against resi&zing", IDC_LOCKSIZE);        endbox(&cp);        beginbox(&cp, "Control the scrollback in the window",                 IDC_BOX_WINDOW2);        staticedit(&cp, "Lines of &scrollback",                   IDC_SAVESTATIC, IDC_SAVEEDIT, 50);        checkbox(&cp, "&Display scrollbar", IDC_SCROLLBAR);        checkbox(&cp, "Reset scrollback on &keypress", IDC_SCROLLKEY);        checkbox(&cp, "Reset scrollback on dis&play activity",                 IDC_SCROLLDISP);        endbox(&cp);        beginbox(&cp, NULL, IDC_BOX_WINDOW3);        checkbox(&cp, "&Warn before closing window", IDC_CLOSEWARN);        checkbox(&cp, "Window closes on ALT-F&4", IDC_ALTF4);        checkbox(&cp, "S&ystem menu appears on ALT-Space", IDC_ALTSPACE);        checkbox(&cp, "System menu appears on A&LT alone", IDC_ALTONLY);        checkbox(&cp, "Ensure window is always on &top", IDC_ALWAYSONTOP);        endbox(&cp);    }    if (panel == appearancepanelstart) {        /* The Appearance panel. Accelerators used: [acgo] luvb h ti p */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling PuTTY's appearance",                 IDC_TITLE_APPEARANCE);        beginbox(&cp, "Adjust the use of the cursor",                 IDC_BOX_APPEARANCE1);        radioline(&cp, "Cursor appearance:", IDC_CURSORSTATIC, 3,                  "B&lock", IDC_CURBLOCK,                  "&Underline", IDC_CURUNDER,                  "&Vertical line", IDC_CURVERT,                  NULL);        checkbox(&cp, "Cursor &blinks", IDC_BLINKCUR);        endbox(&cp);        beginbox(&cp, "Set the font used in the terminal window",                 IDC_BOX_APPEARANCE2);        staticbtn(&cp, "", IDC_FONTSTATIC, "C&hange...", IDC_CHOOSEFONT);        endbox(&cp);        beginbox(&cp, "Adjust the use of the window title",                 IDC_BOX_APPEARANCE3);        multiedit(&cp,                  "Window &title:", IDC_WINTITLE,                  IDC_WINEDIT, 100, NULL);        checkbox(&cp, "Avoid ever using &icon title", IDC_WINNAME);        endbox(&cp);        beginbox(&cp, "Adjust the use of the mouse pointer",                 IDC_BOX_APPEARANCE4);        checkbox(&cp, "Hide mouse &pointer when typing in window",                 IDC_HIDEMOUSE);        endbox(&cp);    }    if (panel == translationpanelstart) {        /* The Translation panel. Accelerators used: [acgo] xbep t s */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling character set translation",                 IDC_TITLE_TRANSLATION);        beginbox(&cp, "Adjust how PuTTY displays line drawing characters",                 IDC_BOX_TRANSLATION1);        radiobig(&cp,                 "Handling of line drawing characters:", IDC_VTSTATIC,                 "Font has &XWindows encoding", IDC_VTXWINDOWS,                 "Use font in &both ANSI and OEM modes", IDC_VTOEMANSI,                 "Use font in O&EM mode only", IDC_VTOEMONLY,                 "&Poor man's line drawing (""+"", ""-"" and ""|"")",                 IDC_VTPOORMAN, NULL);        endbox(&cp);        beginbox(&cp, "Enable character set translation on received data",                 IDC_BOX_TRANSLATION2);        radiobig(&cp,                 "Character set &translation:", IDC_XLATSTATIC,                 "None", IDC_NOXLAT,                 "KOI8 / Win-1251", IDC_KOI8WIN1251,                 "ISO-8859-2 / Win-1250", IDC_88592WIN1250,                 "ISO-8859-2 / CP852", IDC_88592CP852, NULL);        endbox(&cp);        beginbox(&cp, "Enable character set translation on input data",                 IDC_BOX_TRANSLATION3);        checkbox(&cp, "CAP&S LOCK acts as cyrillic switch",                 IDC_CAPSLOCKCYR);        endbox(&cp);    }    if (panel == selectionpanelstart) {        /* The Selection panel. Accelerators used: [acgo] d wx hst */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling copy and paste",                 IDC_TITLE_SELECTION);        beginbox(&cp, "Translation of pasted characters",                 IDC_BOX_SELECTION1);        checkbox(&cp, "&Don't translate line drawing chars into +, - and |",                 IDC_RAWCNP);        endbox(&cp);        beginbox(&cp, "Control which mouse button does which thing",                 IDC_BOX_SELECTION2);        radiobig(&cp, "Action of mouse buttons:", IDC_MBSTATIC,                 "&Windows (Right pastes, Middle extends)", IDC_MBWINDOWS,                 "&xterm (Right extends, Middle pastes)", IDC_MBXTERM,                 NULL);        endbox(&cp);        beginbox(&cp, "Control the select-one-word-at-a-time mode",                 IDC_BOX_SELECTION3);        charclass(&cp, "C&haracter classes:", IDC_CCSTATIC, IDC_CCLIST,                  "&Set", IDC_CCSET, IDC_CCEDIT,                  "&to class", IDC_CCSTATIC2);        endbox(&cp);    }    if (panel == colourspanelstart) {        /* The Colours panel. Accelerators used: [acgo] blum */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling use of colours",                 IDC_TITLE_COLOURS);        beginbox(&cp, "General options for colour usage",                 IDC_BOX_COLOURS1);        checkbox(&cp, "&Bolded text is a different colour", IDC_BOLDCOLOUR);        checkbox(&cp, "Attempt to use &logical palettes", IDC_PALETTE);        endbox(&cp);        beginbox(&cp, "Adjust the precise colours PuTTY displays",                 IDC_BOX_COLOURS2);        colouredit(&cp, "Select a colo&ur and then click to modify it:",                   IDC_COLOURSTATIC, IDC_COLOURLIST,                   "&Modify...", IDC_CHANGE,                   "Red:", IDC_RSTATIC, IDC_RVALUE,                   "Green:", IDC_GSTATIC, IDC_GVALUE,                   "Blue:", IDC_BSTATIC, IDC_BVALUE, NULL);        endbox(&cp);    }    if (panel == connectionpanelstart) {        /* The Connection panel. Accelerators used: [acgo] tuk */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        bartitle(&cp, "Options controlling the connection", IDC_TITLE_CONNECTION);        if (dlgtype == 0) {            beginbox(&cp, "Data to send to the server",                     IDC_BOX_CONNECTION1);            staticedit(&cp, "Terminal-&type string", IDC_TTSTATIC, IDC_TTEDIT, 50);            staticedit(&cp, "Auto-login &username", IDC_LOGSTATIC, IDC_LOGEDIT, 50);            endbox(&cp);        }        beginbox(&cp, "Sending of null packets to keep session active",                 IDC_BOX_CONNECTION2);        staticedit(&cp, "Seconds between &keepalives (0 to turn off)",                   IDC_PINGSTATIC, IDC_PINGEDIT, 20);        endbox(&cp);    }    if (panel == telnetpanelstart) {        /* The Telnet panel. Accelerators used: [acgo] svldr bf */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        if (dlgtype == 0) {            bartitle(&cp, "Options controlling Telnet connections", IDC_TITLE_TELNET);            beginbox(&cp, "Data to send to the server",                     IDC_BOX_TELNET1);            staticedit(&cp, "Terminal-&speed string", IDC_TSSTATIC, IDC_TSEDIT, 50);            envsetter(&cp, "Environment variables:", IDC_ENVSTATIC,                      "&Variable", IDC_VARSTATIC, IDC_VAREDIT,                      "Va&lue", IDC_VALSTATIC, IDC_VALEDIT,                      IDC_ENVLIST,                      "A&dd", IDC_ENVADD, "&Remove", IDC_ENVREMOVE);            endbox(&cp);            beginbox(&cp, "Telnet protocol adjustments",                     IDC_BOX_TELNET2);            radioline(&cp, "Handling of OLD_ENVIRON ambiguity:", IDC_EMSTATIC, 2,                      "&BSD (commonplace)", IDC_EMBSD,                      "R&FC 1408 (unusual)", IDC_EMRFC, NULL);            endbox(&cp);        }    }    if (panel == rloginpanelstart) {        /* The Rlogin panel. Accelerators used: [acgo] sl */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        if (dlgtype == 0) {            bartitle(&cp, "Options controlling Rlogin connections", IDC_TITLE_RLOGIN);            beginbox(&cp, "Data to send to the server",                     IDC_BOX_RLOGIN1);            staticedit(&cp, "Terminal-&speed string", IDC_R_TSSTATIC, IDC_R_TSEDIT, 50);            staticedit(&cp, "&Local username:", IDC_RLLUSERSTATIC, IDC_RLLUSEREDIT, 50);            endbox(&cp);        }    }    if (panel == sshpanelstart) {        /* The SSH panel. Accelerators used: [acgo] rmfkw pe123bds i */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        if (dlgtype == 0) {            bartitle(&cp, "Options controlling SSH connections", IDC_TITLE_SSH);            beginbox(&cp, "Data to send to the server",                     IDC_BOX_SSH1);            multiedit(&cp,                      "&Remote command:", IDC_CMDSTATIC, IDC_CMDEDIT, 100,                      NULL);            endbox(&cp);            beginbox(&cp, "Authentication options",                     IDC_BOX_SSH2);            checkbox(&cp, "Atte&mpt TIS or CryptoCard authentication",                     IDC_AUTHTIS);            checkbox(&cp, "Allow agent &forwarding", IDC_AGENTFWD);            editbutton(&cp, "Private &key file for authentication:",                       IDC_PKSTATIC, IDC_PKEDIT, "Bro&wse...", IDC_PKBUTTON);            endbox(&cp);            beginbox(&cp, "Protocol options",                     IDC_BOX_SSH3);            checkbox(&cp, "Don't allocate a &pseudo-terminal", IDC_NOPTY);            checkbox(&cp, "Enable compr&ession", IDC_COMPRESS);            radioline(&cp, "Preferred SSH protocol version:",                      IDC_SSHPROTSTATIC, 2,                      "&1", IDC_SSHPROT1, "&2", IDC_SSHPROT2, NULL);            radioline(&cp, "Preferred encryption algorithm:", IDC_CIPHERSTATIC, 4,                      "&3DES", IDC_CIPHER3DES,                      "&Blowfish", IDC_CIPHERBLOWF,                      "&DES", IDC_CIPHERDES,                      "AE&S", IDC_CIPHERAES,                      NULL);            checkbox(&cp, "&Imitate SSH 2 MAC bug in commercial <= v2.3.x",                     IDC_BUGGYMAC);            endbox(&cp);        }    }    if (panel == tunnelspanelstart) {        /* The Tunnels panel. Accelerators used: [acgo] ex */        struct ctlpos cp;        ctlposinit(&cp, hwnd, 80, 3, 13);        if (dlgtype == 0) {            bartitle(&cp, "Options controlling SSH tunnelling",                     IDC_TITLE_TUNNELS);            beginbox(&cp, "X11 forwarding options",                     IDC_BOX_TUNNELS);            checkbox(&cp, "&Enable X11 forwarding",                     IDC_X11_FORWARD);            multiedit(&cp, "&X display location", IDC_X11_DISPSTATIC,                      IDC_X11_DISPLAY, 50, NULL);            endbox(&cp);        }    }}