]> git.saurik.com Git - wxWidgets.git/commitdiff
use Windows standard icons instead of our own (patch 443856)
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 23 Jul 2001 18:06:13 +0000 (18:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 23 Jul 2001 18:06:13 +0000 (18:06 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11166 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/wx.rc
src/msw/gdiimage.cpp

index ed4164b831688b2a7563e00b62d232297cbffee3..2a9681b78c530d33c325499b85d1d8052af540db 100644 (file)
@@ -116,11 +116,13 @@ WXCURSOR_BLANK          CURSOR  DISCARDABLE     "wx/msw/blank.cur"
 //wxDEFAULT_MDICHILDFRAME       ICON "wx/msw/child.ico"
 
 // Standard large icons
 //wxDEFAULT_MDICHILDFRAME       ICON "wx/msw/child.ico"
 
 // Standard large icons
-wxICON_QUESTION                        ICON "wx/msw/question.ico"
-wxICON_WARNING                 ICON "wx/msw/warning.ico"
-wxICON_ERROR                   ICON "wx/msw/error.ico"
-wxICON_INFO                    ICON "wx/msw/info.ico"
-wxICON_TIP                     ICON "wx/msw/tip.ico"
+/* we don't use these files any more, use Windows standard icons instead
+wxICON_QUESTION        ICON "wx/msw/question.ico"
+wxICON_WARNING ICON "wx/msw/warning.ico"
+wxICON_ERROR   ICON "wx/msw/error.ico"
+wxICON_INFO            ICON "wx/msw/info.ico"
+*/
+wxICON_TIP             ICON "wx/msw/tip.ico"
 
 // Standard small icons
 wxICON_SMALL_CLOSED_FOLDER      ICON "wx/msw/folder1.ico"
 
 // Standard small icons
 wxICON_SMALL_CLOSED_FOLDER      ICON "wx/msw/folder1.ico"
index 5ca0afc43ff9a692e13b272ce9c4450630b1c57f..d97e57e0fa91e1a9d61db2b75d25379f6bef1e9a 100644 (file)
@@ -402,16 +402,18 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon,
 #ifdef __WIN32__
     HICON hicon = NULL;
 
 #ifdef __WIN32__
     HICON hicon = NULL;
 
-    // Parse the filename: it may be of the form
-    // filename;n in order to specify the nth icon in the file.
-    // For the moment, ignore the issue of possible semicolons in the filename.
+    // Parse the filename: it may be of the form "filename;n" in order to
+    // specify the nth icon in the file.
+    //
+    // For the moment, ignore the issue of possible semicolons in the
+    // filename.
     int iconIndex = 0;
     int iconIndex = 0;
-    wxString name1(name);
+    wxString nameReal(name);
     wxString strIconIndex = name.AfterLast(wxT(';'));
     if (strIconIndex != name)
     {
         iconIndex = wxAtoi(strIconIndex);
     wxString strIconIndex = name.AfterLast(wxT(';'));
     if (strIconIndex != name)
     {
         iconIndex = wxAtoi(strIconIndex);
-        name1 = name.BeforeLast(wxT(';'));
+        nameReal = name.BeforeLast(wxT(';'));
     }
 
     // were we asked for a large icon?
     }
 
     // were we asked for a large icon?
@@ -419,7 +421,7 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon,
          desiredHeight == ::GetSystemMetrics(SM_CYICON) )
     {
         // get the specified large icon from file
          desiredHeight == ::GetSystemMetrics(SM_CYICON) )
     {
         // get the specified large icon from file
-        if ( !::ExtractIconEx(name1, iconIndex, &hicon, NULL, 1) )
+        if ( !::ExtractIconEx(nameReal, iconIndex, &hicon, NULL, 1) )
         {
             // it is not an error, but it might still be useful to be informed
             // about it optionally
         {
             // it is not an error, but it might still be useful to be informed
             // about it optionally
@@ -432,7 +434,7 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon,
               desiredHeight == ::GetSystemMetrics(SM_CYSMICON) )
     {
         // get the specified small icon from file
               desiredHeight == ::GetSystemMetrics(SM_CYSMICON) )
     {
         // get the specified small icon from file
-        if ( !::ExtractIconEx(name1, iconIndex, NULL, &hicon, 1) )
+        if ( !::ExtractIconEx(nameReal, iconIndex, NULL, &hicon, 1) )
         {
             wxLogTrace(_T("iconload"),
                        _T("No small icons found in the file '%s'."),
         {
             wxLogTrace(_T("iconload"),
                        _T("No small icons found in the file '%s'."),
@@ -444,7 +446,7 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon,
     if ( !hicon )
     {
         // take any (the first one) icon from the file by default
     if ( !hicon )
     {
         // take any (the first one) icon from the file by default
-        hicon = ::ExtractIcon(wxGetInstance(), name1, 0 /* first */);
+        hicon = ::ExtractIcon(wxGetInstance(), nameReal, 0 /* first */);
     }
 
     if ( !hicon )
     }
 
     if ( !hicon )
@@ -491,6 +493,9 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon,
 {
     HICON hicon;
 
 {
     HICON hicon;
 
+    // try to load the icon from this program first to allow overriding the
+    // standard icons (although why one would want to do it considering that
+    // we already have wxApp::GetStdIcon() is unclear)
 #if defined(__WIN32__) && !defined(__SC__)
     if ( desiredWidth != -1 && desiredHeight != -1 )
     {
 #if defined(__WIN32__) && !defined(__SC__)
     if ( desiredWidth != -1 && desiredHeight != -1 )
     {
@@ -504,6 +509,34 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon,
         hicon = ::LoadIcon(wxGetInstance(), name);
     }
 
         hicon = ::LoadIcon(wxGetInstance(), name);
     }
 
+    // next check if it's not a standard icon
+    if ( !hicon )
+    {
+        static const struct
+        {
+            const wxChar *name;
+            LPTSTR id;
+        } stdIcons[] =
+        {
+            { wxT("wxICON_QUESTION"),   IDI_QUESTION    },
+            { wxT("wxICON_WARNING"),    IDI_EXCLAMATION },
+            { wxT("wxICON_ERROR"),      IDI_HAND        },
+            { wxT("wxICON_INFO"),       IDI_ASTERISK    },
+        };
+
+        for ( size_t nIcon = 0; !hicon && nIcon < WXSIZEOF(stdIcons); nIcon++ )
+        {
+            if ( name == stdIcons[nIcon].name )
+            {
+                hicon = (HICON)::LoadImage((HINSTANCE)NULL,
+                                           stdIcons[nIcon].id,
+                                           IMAGE_ICON,
+                                           desiredWidth, desiredHeight,
+                                           LR_DEFAULTCOLOR);
+            }
+        }
+    }
+
     wxSize size = GetHiconSize(hicon);
     icon->SetSize(size.x, size.y);
 
     wxSize size = GetHiconSize(hicon);
     icon->SetSize(size.x, size.y);