]> granicus.if.org Git - nethack/commitdiff
W340-4 (from <Someone>)
authornethack.allison <nethack.allison>
Sun, 24 Mar 2002 23:57:19 +0000 (23:57 +0000)
committernethack.allison <nethack.allison>
Sun, 24 Mar 2002 23:57:19 +0000 (23:57 +0000)
Date: Sun, 24 Mar 2002 15:40:30 -0800
<email deleted>
Subject: patch: nethack-graphical - menu window colors

- W340-4  (menu checkboxes have a hard-coded white inner part)
- use windowcolors settings for menu backgroud/foreground color

<Someone>

win/win32/mhmenu.c
win/win32/mnsel.uu
win/win32/mnselcnt.uu
win/win32/mnunsel.uu

index 67eb9765dc12fab8cafc4427745c3b7aa63ae754..58f2ae62fee3ebc4751fe53fea96f0b63da15609 100644 (file)
 #define NHMENU_STR_SIZE     BUFSZ
 #define MIN_TABSTOP_SIZE       8
 
+#define DEFAULT_COLOR_BG_TEXT  COLOR_WINDOW
+#define DEFAULT_COLOR_FG_TEXT  COLOR_WINDOWTEXT
+#define DEFAULT_COLOR_BG_MENU  COLOR_WINDOW
+#define DEFAULT_COLOR_FG_MENU  COLOR_WINDOWTEXT
+
 typedef struct mswin_menu_item {
        int                             glyph;
        ANY_P                   identifier;
@@ -416,6 +421,21 @@ BOOL CALLBACK MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
                else
                        return FALSE;
 
+       case WM_CTLCOLORSTATIC: { /* sent by edit control before it is drawn */
+               HDC hdcEdit = (HDC) wParam; 
+               HWND hwndEdit = (HWND) lParam;
+               if( hwndEdit == GetDlgItem(hWnd, IDC_MENU_TEXT) ) {
+                       SetBkColor(hdcEdit, 
+                               text_bg_brush ? text_bg_color : (COLORREF)GetSysColor(DEFAULT_COLOR_BG_TEXT)
+                               );
+                       SetTextColor(hdcEdit, 
+                               text_fg_brush ? text_fg_color : (COLORREF)GetSysColor(DEFAULT_COLOR_FG_TEXT) 
+                               ); 
+                       return (BOOL)(text_bg_brush 
+                                       ? text_bg_brush : SYSCLR_TO_BRUSH(DEFAULT_COLOR_BG_TEXT));
+               }
+       } return FALSE;
+
        case WM_DESTROY:
                if( data ) {
                        DeleteObject(data->bmpChecked);
@@ -656,6 +676,14 @@ void SetMenuListType(HWND hWnd, int how)
        wndProcListViewOrig = (WNDPROC)GetWindowLong(control, GWL_WNDPROC);
        SetWindowLong(control, GWL_WNDPROC, (LONG)NHMenuListWndProc);
 
+       /* set control colors */
+       ListView_SetBkColor(control, 
+               menu_bg_brush ? menu_bg_color : (COLORREF)GetSysColor(DEFAULT_COLOR_BG_MENU));
+       ListView_SetTextBkColor(control, 
+               menu_bg_brush ? menu_bg_color : (COLORREF)GetSysColor(DEFAULT_COLOR_BG_MENU));
+       ListView_SetTextColor(control, 
+               menu_fg_brush ? menu_fg_color : (COLORREF)GetSysColor(DEFAULT_COLOR_FG_MENU));
+
        /* set control font */
        fnt = SendMessage(hWnd, WM_GETFONT, (WPARAM)0, (LPARAM)0);
        SendMessage(control, WM_SETFONT, (WPARAM)fnt, (LPARAM)0);
@@ -740,6 +768,7 @@ BOOL onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
        TCHAR wbuf[BUFSZ];
        RECT drawRect;
        DRAWTEXTPARAMS dtp;
+       COLORREF OldBg, OldFg, NewBg;
 
        lpdis = (LPDRAWITEMSTRUCT) lParam; 
 
@@ -752,23 +781,33 @@ BOOL onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
 
        tileDC = CreateCompatibleDC(lpdis->hDC);
        saveFont = SelectObject(lpdis->hDC, mswin_get_font(NHW_MENU, item->attr, lpdis->hDC, FALSE));
+       NewBg = menu_bg_brush ? menu_bg_color : (COLORREF)GetSysColor(DEFAULT_COLOR_BG_MENU);
+       OldBg = SetBkColor(lpdis->hDC, NewBg);
+       OldFg = SetTextColor(lpdis->hDC, 
+               menu_fg_brush ? menu_fg_color : (COLORREF)GetSysColor(DEFAULT_COLOR_FG_MENU)); 
+
     GetTextMetrics(lpdis->hDC, &tm);
 
        x = lpdis->rcItem.left + 1;
 
        /* print check mark */
        if( NHMENU_IS_SELECTABLE(*item) ) {
-               HGDIOBJ saveBmp;
+               HGDIOBJ saveBrush;
+               HBRUSH  hbrCheckMark;
                char buf[2];
 
                switch(item->count) {
-               case -1: saveBmp = SelectObject(tileDC, data->bmpChecked); break;
-               case 0: saveBmp = SelectObject(tileDC, data->bmpNotChecked); break;
-               default: saveBmp = SelectObject(tileDC, data->bmpCheckedCount); break;
+               case -1: hbrCheckMark = CreatePatternBrush(data->bmpChecked); break;
+               case 0: hbrCheckMark = CreatePatternBrush(data->bmpNotChecked); break;
+               default: hbrCheckMark = CreatePatternBrush(data->bmpCheckedCount); break;
                }
 
                y = (lpdis->rcItem.bottom + lpdis->rcItem.top - TILE_Y) / 2; 
-               BitBlt(lpdis->hDC, x, y, TILE_X, TILE_Y, tileDC, 0, 0, SRCCOPY );
+               SetBrushOrgEx(lpdis->hDC, x, y, NULL);
+               saveBrush = SelectObject(lpdis->hDC, hbrCheckMark);
+               PatBlt(lpdis->hDC, x, y, TILE_X, TILE_Y, PATCOPY);
+               SelectObject(lpdis->hDC, saveBrush);
+               DeleteObject(hbrCheckMark);
 
                x += TILE_X + 5;
 
@@ -780,7 +819,6 @@ BOOL onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
                        DrawText(lpdis->hDC, NH_A2W(buf, wbuf, 2), 1, &drawRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);
                }
                x += tm.tmAveCharWidth + tm.tmOverhang + 5;
-               SelectObject(tileDC, saveBmp);
        } else {
                x += TILE_X + tm.tmAveCharWidth + tm.tmOverhang + 10;
        }
@@ -844,7 +882,8 @@ BOOL onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
                        drawRect.right = client_rt.right-1;
                        drawRect.top = lpdis->rcItem.top;
                        drawRect.bottom = lpdis->rcItem.bottom;
-                       FillRect(lpdis->hDC, &drawRect, (HBRUSH)GetClassLong(lpdis->hwndItem, GCL_HBRBACKGROUND) );
+                       FillRect(lpdis->hDC, &drawRect, 
+                                        menu_bg_brush ? menu_bg_brush : SYSCLR_TO_BRUSH(DEFAULT_COLOR_BG_MENU));
 
                        /* draw text */
                        DrawText(lpdis->hDC, wbuf, _tcslen(wbuf), &drawRect, 
@@ -856,6 +895,8 @@ BOOL onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
                DrawFocusRect(lpdis->hDC, &drawRect);
        }
 
+       SetTextColor (lpdis->hDC, OldFg);
+       SetBkColor (lpdis->hDC, OldBg);
        SelectObject(lpdis->hDC, saveFont);
        DeleteDC(tileDC);
        return TRUE;
index 043365496f4e742887014371cc0f3e59c224809c..69c3965a9df8284d7ec5b707489d9dd869829b50 100644 (file)
@@ -1,9 +1,6 @@
 begin 600 mnsel.bmp
-M0DWV`````````'8````H````$````!`````!``0``````(``````````````
-M````````````````````@```@````("``(````"``(``@(```,#`P`"`@(``
-M``#_``#_````__\`_P```/\`_P#__P``____````````````````````````
-M________``#_"/____\``/@`C____P``\`@(____``#P#X"/__\``/`/^`C_
-M_P``\`__@(__``#XC__X"/\``/____^`CP``______@/``#_______\``/__
-5_____P``````````````````````
+M0DU^`````````#X````H````$````!`````!``$``````$````!T$@``=!(`
+M`````````````````/___P```````````#_\```W_```,_P``"7\```F_```
+D)WP``">\```_W```/^P``#_T```__```/_P`````````````
 `
 end
index 72273d78ee6ecae9c44d4534a4d3777ab18a3757..72f19167e1060dd7d51d2588cae209b587a34462 100644 (file)
@@ -1,9 +1,6 @@
 begin 600 mnselcnt.bmp
-M0DWV`````````'8````H````$````!`````!``0``````(``````````````
-M````````````````````@```@````("``(````"``(``@(```,#`P`"`@(``
-M``#_``#_````__\`_P```/\`_P#__P``____````````````````````````
-M________``#_______\``/_P__\/_P``_P````#_``#_\/__#_\``/_P__\/
-M_P``__#__P__``#_\/__#_\``/\`````_P``__#__P__``#_______\``/__
-5_____P``````````````````````
+M0DU^`````````#X````H````$````!`````!``$``````$````!T$@``=!(`
+M`````````````````/___P```````````#_\```__```.]P``#`,```[W```
+D.]P``#O<```[W```,`P``#O<```__```/_P`````````````
 `
 end
index 4133094f9b8d1dccf2ef74fd43cacb4cd4aeba0d..0e3d163bac735e0f274069f13ac271ce1bedc988 100644 (file)
@@ -1,9 +1,6 @@
 begin 600 mnunsel.bmp
-M0DWV`````````'8````H````$````!`````!``0``````(``````````````
-M````````````````````@```@````("``(````"``(``@(```,#`P`"`@(``
-M``#_``#_````__\`_P```/\`_P#__P``____````````````````````````
-M________``#_______\``/_______P``________``#_______\``/______
-M_P``________``#_______\``/_______P``________``#_______\``/__
-5_____P``````````````````````
+M0DU^`````````#X````H````$````!`````!``$``````$````!T$@``=!(`
+M`````````````````/___P```````````#_\```__```/_P``#_\```__```
+D/_P``#_\```__```/_P``#_\```__```/_P`````````````
 `
 end