- BOOL ok;
- int i;
- int n = GetDlgItemInt (hwnd, IDC_CCEDIT, &ok, FALSE);
-
- if (!ok)
- MessageBeep (0);
- else {
- for (i=0; i<256; i++)
- if (SendDlgItemMessage (hwnd, IDC_CCLIST, LB_GETSEL,
- i, 0)) {
- char str[100];
- cfg.wordness[i] = n;
- SendDlgItemMessage (hwnd, IDC_CCLIST,
- LB_DELETESTRING, i, 0);
- sprintf(str, "%d\t(0x%02X)\t%c\t%d", i, i,
- (i>=0x21 && i != 0x7F) ? i : ' ',
- cfg.wordness[i]);
- SendDlgItemMessage (hwnd, IDC_CCLIST,
- LB_INSERTSTRING, i,
- (LPARAM)str);
- }
- }
- }
- break;
- }
- break;
- }
- return GeneralPanelProc (hwnd, msg, wParam, lParam);
-}
-
-static int CALLBACK ColourProc (HWND hwnd, UINT msg,
- WPARAM wParam, LPARAM lParam) {
- static const char *const colours[] = {
- "Default Foreground", "Default Bold Foreground",
- "Default Background", "Default Bold Background",
- "Cursor Text", "Cursor Colour",
- "ANSI Black", "ANSI Black Bold",
- "ANSI Red", "ANSI Red Bold",
- "ANSI Green", "ANSI Green Bold",
- "ANSI Yellow", "ANSI Yellow Bold",
- "ANSI Blue", "ANSI Blue Bold",
- "ANSI Magenta", "ANSI Magenta Bold",
- "ANSI Cyan", "ANSI Cyan Bold",
- "ANSI White", "ANSI White Bold"
- };
- static const int permanent[] = {
- TRUE, FALSE, TRUE, FALSE, TRUE, TRUE,
- TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE,
- TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE
- };
- struct ctlpos cp;
- enum { controlstartvalue = 1000,
- IDC_BOLDCOLOUR,
- IDC_PALETTE,
- IDC_STATIC,
- IDC_LIST,
- IDC_RSTATIC,
- IDC_GSTATIC,
- IDC_BSTATIC,
- IDC_RVALUE,
- IDC_GVALUE,
- IDC_BVALUE,
- IDC_CHANGE
- };
-
- switch (msg) {
- case WM_INITDIALOG:
- /* Accelerators used: [aco] bmlu */
- ctlposinit(&cp, hwnd);
- checkbox(&cp, "&Bolded text is a different colour", IDC_BOLDCOLOUR);
- checkbox(&cp, "Attempt to use &logical palettes", IDC_PALETTE);
- colouredit(&cp, "Select a colo&ur and click to modify it:",
- IDC_STATIC, IDC_LIST,
- "&Modify...", IDC_CHANGE,
- "Red:", IDC_RSTATIC, IDC_RVALUE,
- "Green:", IDC_GSTATIC, IDC_GVALUE,
- "Blue:", IDC_BSTATIC, IDC_BVALUE, NULL);
-
- CheckDlgButton (hwnd, IDC_BOLDCOLOUR, cfg.bold_colour);
- CheckDlgButton (hwnd, IDC_PALETTE, cfg.try_palette);
- {
- int i;
- for (i=0; i<22; i++)
- if (cfg.bold_colour || permanent[i])
- SendDlgItemMessage (hwnd, IDC_LIST, LB_ADDSTRING, 0,
- (LPARAM) colours[i]);
- }
- SendDlgItemMessage (hwnd, IDC_LIST, LB_SETCURSEL, 0, 0);
- SetDlgItemInt (hwnd, IDC_RVALUE, cfg.colours[0][0], FALSE);
- SetDlgItemInt (hwnd, IDC_GVALUE, cfg.colours[0][1], FALSE);
- SetDlgItemInt (hwnd, IDC_BVALUE, cfg.colours[0][2], FALSE);
- break;
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDC_BOLDCOLOUR:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- int n, i;
- cfg.bold_colour = IsDlgButtonChecked (hwnd, IDC_BOLDCOLOUR);
- n = SendDlgItemMessage (hwnd, IDC_LIST, LB_GETCOUNT, 0, 0);
- if (cfg.bold_colour && n!=22) {
- for (i=0; i<22; i++)
- if (!permanent[i])
- SendDlgItemMessage (hwnd, IDC_LIST,
- LB_INSERTSTRING, i,
- (LPARAM) colours[i]);
- } else if (!cfg.bold_colour && n!=12) {
- for (i=22; i-- ;)
- if (!permanent[i])
- SendDlgItemMessage (hwnd, IDC_LIST,
- LB_DELETESTRING, i, 0);
- }
- }
- break;
- case IDC_PALETTE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.try_palette = IsDlgButtonChecked (hwnd, IDC_PALETTE);
- break;
- case IDC_LIST:
- if (HIWORD(wParam) == LBN_DBLCLK ||
- HIWORD(wParam) == LBN_SELCHANGE) {
- int i = SendDlgItemMessage (hwnd, IDC_LIST, LB_GETCURSEL,
- 0, 0);
- if (!cfg.bold_colour)
- i = (i < 3 ? i*2 : i == 3 ? 5 : i*2-2);
- SetDlgItemInt (hwnd, IDC_RVALUE, cfg.colours[i][0], FALSE);
- SetDlgItemInt (hwnd, IDC_GVALUE, cfg.colours[i][1], FALSE);
- SetDlgItemInt (hwnd, IDC_BVALUE, cfg.colours[i][2], FALSE);
- }
- break;
- case IDC_CHANGE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- static CHOOSECOLOR cc;
- static DWORD custom[16] = {0}; /* zero initialisers */
- int i = SendDlgItemMessage (hwnd, IDC_LIST, LB_GETCURSEL,
- 0, 0);
- if (!cfg.bold_colour)
- i = (i < 3 ? i*2 : i == 3 ? 5 : i*2-2);
- cc.lStructSize = sizeof(cc);
- cc.hwndOwner = hwnd;
- cc.hInstance = (HWND)hinst;
- cc.lpCustColors = custom;
- cc.rgbResult = RGB (cfg.colours[i][0], cfg.colours[i][1],
- cfg.colours[i][2]);
- cc.Flags = CC_FULLOPEN | CC_RGBINIT;
- if (ChooseColor(&cc)) {
- cfg.colours[i][0] =
- (unsigned char) (cc.rgbResult & 0xFF);
- cfg.colours[i][1] =
- (unsigned char) (cc.rgbResult >> 8) & 0xFF;
- cfg.colours[i][2] =
- (unsigned char) (cc.rgbResult >> 16) & 0xFF;
- SetDlgItemInt (hwnd, IDC_RVALUE, cfg.colours[i][0],
- FALSE);
- SetDlgItemInt (hwnd, IDC_GVALUE, cfg.colours[i][1],
- FALSE);
- SetDlgItemInt (hwnd, IDC_BVALUE, cfg.colours[i][2],
- FALSE);