Improved support for system colours and scrollbar widths/heights

acoording to patch #1395329.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis
2006-01-02 19:37:11 +00:00
parent 1979aa5872
commit a12f464799

View File

@@ -78,137 +78,126 @@ wxColour wxSystemSettingsNative::GetColour(
{ {
COLORREF vRef; COLORREF vRef;
wxColour vCol; wxColour vCol;
LONG vSysClr;
switch (nIndex) switch (nIndex)
{ {
// //
// PM actually has values for these // PM actually has values for these
// //
case wxSYS_COLOUR_WINDOW: case wxSYS_COLOUR_WINDOW:
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP vSysClr = SYSCLR_WINDOW;
,SYSCLR_WINDOW
,0L
);
vCol.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
break; break;
case wxSYS_COLOUR_WINDOWFRAME: case wxSYS_COLOUR_WINDOWFRAME:
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP vSysClr = SYSCLR_WINDOWFRAME;
,SYSCLR_WINDOWFRAME
,0L
);
vCol.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
break; break;
case wxSYS_COLOUR_MENUTEXT: case wxSYS_COLOUR_MENUTEXT:
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP vSysClr = SYSCLR_MENUTEXT;
,SYSCLR_MENUTEXT break;
,0L
); case wxSYS_COLOUR_MENUHILIGHT:
vCol.Set( GetRValue(vRef) vSysClr = SYSCLR_MENUHILITE;
,GetGValue(vRef)
,GetBValue(vRef)
);
break; break;
case wxSYS_COLOUR_BTNFACE: case wxSYS_COLOUR_BTNFACE:
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP vSysClr = SYSCLR_BUTTONMIDDLE;
,SYSCLR_BUTTONDEFAULT
,0L
);
vCol.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
break; break;
case wxSYS_COLOUR_BTNSHADOW: case wxSYS_COLOUR_BTNSHADOW:
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP vSysClr = SYSCLR_BUTTONDARK;
,SYSCLR_BUTTONMIDDLE
,0L
);
vCol.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
break; break;
case wxSYS_COLOUR_BTNHIGHLIGHT: case wxSYS_COLOUR_BTNHIGHLIGHT:
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP vSysClr = SYSCLR_BUTTONLIGHT;
,SYSCLR_BUTTONLIGHT break;
,0L
); case wxSYS_COLOUR_BACKGROUND:
vCol.Set( GetRValue(vRef) vSysClr = SYSCLR_BACKGROUND;
,GetGValue(vRef) break;
,GetBValue(vRef)
); case wxSYS_COLOUR_APPWORKSPACE:
vSysClr = SYSCLR_APPWORKSPACE;
break; break;
case wxSYS_COLOUR_MENUBAR: case wxSYS_COLOUR_MENUBAR:
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP case wxSYS_COLOUR_MENU:
,SYSCLR_MENU vSysClr = SYSCLR_MENU;
,0L break;
);
vCol.Set( GetRValue(vRef) case wxSYS_COLOUR_INACTIVECAPTION:
,GetGValue(vRef) vSysClr = SYSCLR_INACTIVETITLE;
,GetBValue(vRef) break;
);
case wxSYS_COLOUR_INACTIVEBORDER:
vSysClr = SYSCLR_INACTIVEBORDER;
break; break;
//
// We'll have to just give values to these
//
case wxSYS_COLOUR_LISTBOX: case wxSYS_COLOUR_LISTBOX:
vSysClr = SYSCLR_ENTRYFIELD;
break;
case wxSYS_COLOUR_CAPTIONTEXT: case wxSYS_COLOUR_CAPTIONTEXT:
return(*wxWHITE); vSysClr = SYSCLR_TITLETEXT;
break;
case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
vSysClr = SYSCLR_INACTIVETITLETEXT;
break;
case wxSYS_COLOUR_WINDOWTEXT: case wxSYS_COLOUR_WINDOWTEXT:
case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
case wxSYS_COLOUR_BTNTEXT: case wxSYS_COLOUR_BTNTEXT:
case wxSYS_COLOUR_INFOTEXT: vSysClr = SYSCLR_WINDOWTEXT;
vCol = (*wxBLACK);
break; break;
// case wxSYS_COLOUR_INFOTEXT:
// We should customize these to look like other ports vSysClr = SYSCLR_HELPTEXT;
// break;
case wxSYS_COLOUR_ACTIVECAPTION: case wxSYS_COLOUR_ACTIVECAPTION:
vSysClr = SYSCLR_ACTIVETITLE;
break;
case wxSYS_COLOUR_ACTIVEBORDER: case wxSYS_COLOUR_ACTIVEBORDER:
vSysClr = SYSCLR_ACTIVEBORDER;
break;
case wxSYS_COLOUR_HIGHLIGHT: case wxSYS_COLOUR_HIGHLIGHT:
vCol = (*wxBLUE); vSysClr = SYSCLR_HILITEBACKGROUND;
break; break;
case wxSYS_COLOUR_SCROLLBAR: case wxSYS_COLOUR_SCROLLBAR:
case wxSYS_COLOUR_BACKGROUND: vSysClr = SYSCLR_SCROLLBAR;
case wxSYS_COLOUR_INACTIVECAPTION: break;
case wxSYS_COLOUR_MENU:
case wxSYS_COLOUR_INACTIVEBORDER:
case wxSYS_COLOUR_APPWORKSPACE:
case wxSYS_COLOUR_HIGHLIGHTTEXT: case wxSYS_COLOUR_HIGHLIGHTTEXT:
vSysClr = SYSCLR_HILITEFOREGROUND;
break;
case wxSYS_COLOUR_INFOBK:
vSysClr = SYSCLR_HELPBACKGROUND;
break;
// Don't know what these should be, so leave them grey (normally)
case wxSYS_COLOUR_GRAYTEXT: case wxSYS_COLOUR_GRAYTEXT:
case wxSYS_COLOUR_3DDKSHADOW: case wxSYS_COLOUR_3DDKSHADOW:
case wxSYS_COLOUR_3DLIGHT: case wxSYS_COLOUR_3DLIGHT:
case wxSYS_COLOUR_INFOBK: case wxSYS_COLOUR_HOTLIGHT:
vCol = (*wxLIGHT_GREY); case wxSYS_COLOUR_GRADIENTACTIVECAPTION:
case wxSYS_COLOUR_GRADIENTINACTIVECAPTION:
vSysClr = SYSCLR_BUTTONMIDDLE;
break; break;
default: default:
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP vSysClr = SYSCLR_WINDOW;
,SYSCLR_WINDOW
,0L
);
vCol.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
break; break;
} }
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP,
vSysClr,
0L );
vCol.Set( GetRValue(vRef),
GetGValue(vRef),
GetBValue(vRef) );
return(vCol); return(vCol);
} // end of wxSystemSettingsNative::GetColour } // end of wxSystemSettingsNative::GetColour
@@ -283,8 +272,12 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index,
// TODO case wxSYS_FRAMESIZE_Y: // TODO case wxSYS_FRAMESIZE_Y:
// TODO case wxSYS_SMALLICON_X: // TODO case wxSYS_SMALLICON_X:
// TODO case wxSYS_SMALLICON_Y: // TODO case wxSYS_SMALLICON_Y:
// TODO case wxSYS_HSCROLL_Y:
// TODO case wxSYS_VSCROLL_X: case wxSYS_HSCROLL_Y:
return ::WinQuerySysValue(HWND_DESKTOP,SV_CYHSCROLL);
case wxSYS_VSCROLL_X:
return ::WinQuerySysValue(HWND_DESKTOP,SV_CXVSCROLL);
// TODO case wxSYS_VSCROLL_ARROW_X: // TODO case wxSYS_VSCROLL_ARROW_X:
// TODO case wxSYS_VSCROLL_ARROW_Y: // TODO case wxSYS_VSCROLL_ARROW_Y:
// TODO case wxSYS_VTHUMB_Y: // TODO case wxSYS_VTHUMB_Y: