Ignore:
Timestamp:
Apr 18, 2000, 1:13:01 PM (25 years ago)
Author:
sandervl
Message:

misc updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/loadres.cpp

    r3101 r3419  
    1 /* $Id: loadres.cpp,v 1.25 2000-03-13 13:10:45 sandervl Exp $ */
     1/* $Id: loadres.cpp,v 1.26 2000-04-18 11:12:59 sandervl Exp $ */
    22
    33/*
     
    108108//******************************************************************************
    109109//******************************************************************************
    110 HICON WIN32API LoadIconA(HINSTANCE hinst, LPCSTR lpszIcon)
     110HICON LoadIconA(HINSTANCE hinst, LPCSTR lpszIcon, DWORD cxDesired,
     111                DWORD cyDesired, DWORD fuLoad)
    111112{
    112113 Win32Resource *winres;
    113114 HICON          hIcon;
    114 
    115     if (!hinst)
    116     {
    117       winres = (Win32Resource*)FindResourceA(hInstanceUser32,lpszIcon,RT_ICONA);
    118       if (!winres) winres = (Win32Resource*)FindResourceA(hInstanceUser32,lpszIcon,RT_GROUP_ICONA);
    119       if (winres)
    120       {
    121         hIcon = OSLibWinCreateIcon(winres->lockOS2Resource());
    122         delete winres;
    123       } else hIcon = OSLibWinQuerySysIcon((ULONG)lpszIcon,GetSystemMetrics(SM_CXICON),GetSystemMetrics(SM_CYICON));
    124     } else
    125     { //not a system icon
    126         winres = (Win32Resource *)FindResourceA(hinst, lpszIcon, RT_ICONA);
    127         if(winres == 0) {
    128                 winres = (Win32Resource *)FindResourceA(hinst, lpszIcon, RT_GROUP_ICONA);
    129         }
    130         if(winres) {
    131                 hIcon = OSLibWinCreateIcon(winres->lockOS2Resource());
    132                 delete winres;
    133         } else hIcon = 0;
     115 HANDLE         hMapping = 0;
     116 char          *ptr = NULL;
     117
     118    if(fuLoad & LR_LOADFROMFILE)
     119    {
     120        hMapping = VIRTUAL_MapFileA( lpszIcon, (LPVOID *)&ptr, TRUE);
     121        if(hMapping == INVALID_HANDLE_VALUE)
     122                return 0;
     123        hIcon = OSLibWinCreatePointer(ptr);
     124        CloseHandle(hMapping);   
     125    }
     126    else
     127    {
     128        if(!hinst)
     129        {
     130                winres = (Win32Resource*)FindResourceA(hInstanceUser32,lpszIcon,RT_ICONA);
     131                if(!winres)
     132                        winres = (Win32Resource*)FindResourceA(hInstanceUser32,lpszIcon,RT_GROUP_ICONA);
     133                if(winres)
     134                {
     135                        hIcon = OSLibWinCreateIcon(winres->lockOS2Resource());
     136                        delete winres;
     137                }
     138                else hIcon = OSLibWinQuerySysIcon((ULONG)lpszIcon,GetSystemMetrics(SM_CXICON),GetSystemMetrics(SM_CYICON));
     139        }
     140        else
     141        { //not a system icon
     142                winres = (Win32Resource *)FindResourceA(hinst, lpszIcon, RT_ICONA);
     143                if(winres == 0) {
     144                        winres = (Win32Resource *)FindResourceA(hinst, lpszIcon, RT_GROUP_ICONA);
     145                }
     146                if(winres) {
     147                        hIcon = OSLibWinCreateIcon(winres->lockOS2Resource());
     148                        delete winres;
     149                }
     150                else    hIcon = 0;
     151        }
    134152    }
    135153    dprintf(("LoadIconA (%X) returned %x\n", hinst, hIcon));
     
    139157//******************************************************************************
    140158//******************************************************************************
    141 HICON WIN32API LoadIconW(HINSTANCE hinst, LPCWSTR lpszIcon)
     159HICON LoadIconW(HINSTANCE hinst, LPCWSTR lpszIcon, DWORD cxDesired,
     160                DWORD cyDesired, DWORD fuLoad)
    142161{
    143162 Win32Resource *winres;
    144163 HICON          hIcon;
    145 
    146     if (!hinst)
    147     {
    148       winres = (Win32Resource*)FindResourceW(hInstanceUser32,lpszIcon,RT_ICONW);
    149       if (!winres) winres = (Win32Resource*)FindResourceW(hInstanceUser32,lpszIcon,RT_GROUP_ICONW);
    150       if (winres)
    151       {
    152         hIcon = OSLibWinCreateIcon(winres->lockOS2Resource());
    153         delete winres;
    154       } else hIcon = OSLibWinQuerySysIcon((ULONG)lpszIcon,GetSystemMetrics(SM_CXICON),GetSystemMetrics(SM_CYICON));
    155     } else
    156     {//not a system icon
    157         winres = (Win32Resource *)FindResourceW(hinst, lpszIcon, RT_ICONW);
    158         if(winres == 0) {
    159                 winres = (Win32Resource *)FindResourceW(hinst, lpszIcon, RT_GROUP_ICONW);
    160         }
    161         if(winres) {
    162                 hIcon = OSLibWinCreateIcon(winres->lockOS2Resource());
    163                 delete winres;
    164         } else hIcon = 0;
     164 HANDLE         hMapping = 0;
     165 char          *ptr = NULL;
     166
     167    if(fuLoad & LR_LOADFROMFILE)
     168    {
     169        hMapping = VIRTUAL_MapFileW( lpszIcon, (LPVOID *)&ptr, TRUE);
     170        if(hMapping == INVALID_HANDLE_VALUE)
     171                return 0;
     172        hIcon = OSLibWinCreatePointer(ptr);
     173        CloseHandle(hMapping);   
     174    }
     175    else
     176    {
     177        if (!hinst)
     178        {
     179                winres = (Win32Resource*)FindResourceW(hInstanceUser32,lpszIcon,RT_ICONW);
     180                if(!winres)
     181                        winres = (Win32Resource*)FindResourceW(hInstanceUser32,lpszIcon,RT_GROUP_ICONW);
     182                if(winres)
     183                {
     184                        hIcon = OSLibWinCreateIcon(winres->lockOS2Resource());
     185                        delete winres;
     186                }
     187                else    hIcon = OSLibWinQuerySysIcon((ULONG)lpszIcon,GetSystemMetrics(SM_CXICON),GetSystemMetrics(SM_CYICON));
     188        }
     189        else
     190        {//not a system icon
     191                winres = (Win32Resource *)FindResourceW(hinst, lpszIcon, RT_ICONW);
     192                if(winres == 0) {
     193                        winres = (Win32Resource *)FindResourceW(hinst, lpszIcon, RT_GROUP_ICONW);
     194                }
     195                if(winres) {
     196                        hIcon = OSLibWinCreateIcon(winres->lockOS2Resource());
     197                        delete winres;
     198                }
     199                else    hIcon = 0;
     200        }
    165201    }
    166202    dprintf(("LoadIconW (%X) returned %x\n", hinst, hIcon));
     
    170206//******************************************************************************
    171207//******************************************************************************
    172 HCURSOR WIN32API LoadCursorA(HINSTANCE hinst, LPCSTR lpszCursor)
     208HICON WIN32API LoadIconA(HINSTANCE hinst, LPCSTR lpszIcon)
     209{
     210    return LoadIconA(hinst, lpszIcon, 0, 0, 0);
     211}
     212//******************************************************************************
     213//******************************************************************************
     214HICON WIN32API LoadIconW(HINSTANCE hinst, LPCWSTR lpszIcon)
     215{
     216    return LoadIconW(hinst, lpszIcon, 0, 0, 0);
     217}
     218//******************************************************************************
     219//******************************************************************************
     220HCURSOR LoadCursorA(HINSTANCE hinst, LPCSTR lpszCursor, DWORD cxDesired,
     221                    DWORD cyDesired, DWORD fuLoad)
    173222{
    174223 Win32Resource *winres;
    175224 HCURSOR        hCursor;
    176 
    177     if (!hinst)
    178     {
    179       winres = (Win32Resource*)FindResourceA(hInstanceUser32,lpszCursor,RT_CURSORA);
    180       if (!winres) winres = (Win32Resource*)FindResourceA(hInstanceUser32,lpszCursor,RT_GROUP_CURSORA);
    181       if (winres)
    182       {
    183         hCursor = OSLibWinCreatePointer(winres->lockOS2Resource());
    184         delete winres;
    185       } else hCursor = OSLibWinQuerySysPointer((ULONG)lpszCursor,GetSystemMetrics(SM_CXCURSOR),GetSystemMetrics(SM_CYCURSOR));
    186     } else
    187     {//not a system pointer
    188         winres = (Win32Resource *)FindResourceA(hinst, lpszCursor, RT_CURSORA);
    189         if(winres == 0) {
    190                 winres = (Win32Resource *)FindResourceA(hinst, lpszCursor, RT_GROUP_CURSORA);
    191         }
    192         if(winres) {
    193                 hCursor = OSLibWinCreatePointer(winres->lockOS2Resource());
    194                 delete winres;
    195         } else hCursor = 0;
     225 HANDLE         hMapping = 0;
     226 char          *ptr = NULL;
     227
     228    if(fuLoad & LR_LOADFROMFILE)
     229    {
     230        hMapping = VIRTUAL_MapFileA( lpszCursor, (LPVOID *)&ptr, TRUE);
     231        if(hMapping == INVALID_HANDLE_VALUE)
     232                return 0;
     233        hCursor = OSLibWinCreatePointer(ptr);
     234        CloseHandle(hMapping);   
     235    }
     236    else
     237    {
     238        if (!hinst)
     239        {
     240                winres = (Win32Resource*)FindResourceA(hInstanceUser32,lpszCursor,RT_CURSORA);
     241                if(!winres)
     242                        winres = (Win32Resource*)FindResourceA(hInstanceUser32,lpszCursor,RT_GROUP_CURSORA);
     243                if(winres)
     244                {
     245                        hCursor = OSLibWinCreatePointer(winres->lockOS2Resource());
     246                        delete winres;
     247                }
     248                else    hCursor = OSLibWinQuerySysPointer((ULONG)lpszCursor,GetSystemMetrics(SM_CXCURSOR),GetSystemMetrics(SM_CYCURSOR));
     249        }
     250        else
     251        {//not a system pointer
     252                winres = (Win32Resource *)FindResourceA(hinst, lpszCursor, RT_CURSORA);
     253                if(winres == 0) {
     254                        winres = (Win32Resource *)FindResourceA(hinst, lpszCursor, RT_GROUP_CURSORA);
     255                }
     256                if(winres) {
     257                        hCursor = OSLibWinCreatePointer(winres->lockOS2Resource());
     258                        delete winres;
     259                }
     260                else    hCursor = 0;
     261        }
    196262    }
    197263    if(HIWORD(lpszCursor)) {
     
    204270//******************************************************************************
    205271//******************************************************************************
    206 HCURSOR WIN32API LoadCursorW(HINSTANCE hinst, LPCWSTR lpszCursor)
     272HCURSOR LoadCursorW(HINSTANCE hinst, LPCWSTR lpszCursor, DWORD cxDesired,
     273                    DWORD cyDesired, DWORD fuLoad)
    207274{
    208275 Win32Resource *winres;
    209276 HCURSOR        hCursor;
    210 
    211     if (!hinst)
    212     {
    213       winres = (Win32Resource*)FindResourceW(hInstanceUser32,lpszCursor,RT_CURSORW);
    214       if (!winres) winres = (Win32Resource*)FindResourceW(hInstanceUser32,lpszCursor,RT_GROUP_CURSORW);
    215       if (winres)
    216       {
    217         hCursor = OSLibWinCreatePointer(winres->lockOS2Resource());
    218         delete winres;
    219       } else hCursor = OSLibWinQuerySysPointer((ULONG)lpszCursor,GetSystemMetrics(SM_CXCURSOR),GetSystemMetrics(SM_CYCURSOR));
    220     } else
    221     {//not a system pointer
    222         winres = (Win32Resource *)FindResourceW(hinst, lpszCursor, RT_CURSORW);
    223         if(winres == 0) {
    224                 winres = (Win32Resource *)FindResourceW(hinst, lpszCursor, RT_GROUP_CURSORW);
    225         }
    226         if(winres) {
    227                 hCursor = OSLibWinCreatePointer(winres->lockOS2Resource());
    228                 delete winres;
    229         } else hCursor = 0;
     277 HANDLE         hMapping = 0;
     278 char          *ptr = NULL;
     279
     280    if(fuLoad & LR_LOADFROMFILE)
     281    {
     282        hMapping = VIRTUAL_MapFileW( lpszCursor, (LPVOID *)&ptr, TRUE);
     283        if(hMapping == INVALID_HANDLE_VALUE)
     284                return 0;
     285        hCursor = OSLibWinCreatePointer(ptr);
     286        CloseHandle(hMapping);   
     287    }
     288    else
     289    {
     290        if(!hinst)
     291        {
     292                winres = (Win32Resource*)FindResourceW(hInstanceUser32,lpszCursor,RT_CURSORW);
     293                if(!winres)
     294                        winres = (Win32Resource*)FindResourceW(hInstanceUser32,lpszCursor,RT_GROUP_CURSORW);
     295                if(winres)
     296                {
     297                        hCursor = OSLibWinCreatePointer(winres->lockOS2Resource());
     298                        delete winres;
     299                }
     300                else    hCursor = OSLibWinQuerySysPointer((ULONG)lpszCursor,GetSystemMetrics(SM_CXCURSOR),GetSystemMetrics(SM_CYCURSOR));
     301            }
     302            else
     303            {//not a system pointer
     304                winres = (Win32Resource *)FindResourceW(hinst, lpszCursor, RT_CURSORW);
     305                if(winres == 0) {
     306                        winres = (Win32Resource *)FindResourceW(hinst, lpszCursor, RT_GROUP_CURSORW);
     307                }
     308                if(winres) {
     309                        hCursor = OSLibWinCreatePointer(winres->lockOS2Resource());
     310                        delete winres;
     311                }
     312                else    hCursor = 0;
     313            }
    230314    }
    231315    dprintf(("LoadCursorW (%X) returned %x\n", hinst, hCursor));
    232316
    233317    return(hCursor);
     318}
     319//******************************************************************************
     320//******************************************************************************
     321HCURSOR WIN32API LoadCursorA(HINSTANCE hinst, LPCSTR lpszCursor)
     322{
     323    return LoadCursorA(hinst, lpszCursor, 0, 0, 0);
     324}
     325//******************************************************************************
     326//******************************************************************************
     327HCURSOR WIN32API LoadCursorW(HINSTANCE hinst, LPCWSTR lpszCursor)
     328{
     329    return LoadCursorW(hinst, lpszCursor, 0, 0, 0);
    234330}
    235331//******************************************************************************
     
    436532  else  dprintf(("LoadImageA NOT COMPLETE %x %x %d (%d,%d)\n", hinst, lpszName, uType, cxDesired, cyDesired));
    437533
    438   if (fuLoad & LR_DEFAULTSIZE) {
     534  if(fuLoad & LR_DEFAULTSIZE) {
    439535        if (uType == IMAGE_ICON) {
    440536            if (!cxDesired) cxDesired = GetSystemMetrics(SM_CXICON);
     
    453549                break;
    454550        case IMAGE_CURSOR:
    455                 hRet = (HANDLE)LoadCursorA(hinst, lpszName);
     551                hRet = (HANDLE)LoadCursorA(hinst, lpszName, cxDesired, cyDesired, fuLoad);
    456552                break;
    457553        case IMAGE_ICON:
    458                 hRet = (HANDLE)LoadIconA(hinst, lpszName);
     554                hRet = (HANDLE)LoadIconA(hinst, lpszName, cxDesired, cyDesired, fuLoad);
    459555                break;
    460556        default:
     
    492588                break;
    493589        case IMAGE_CURSOR:
    494                 hRet = (HANDLE)LoadCursorW(hinst, lpszName);
     590                hRet = (HANDLE)LoadCursorW(hinst, lpszName, cxDesired, cyDesired, fuLoad);
    495591                break;
    496592        case IMAGE_ICON:
    497                 hRet = (HANDLE)LoadIconW(hinst, lpszName);
     593                hRet = (HANDLE)LoadIconW(hinst, lpszName, cxDesired, cyDesired, fuLoad);
    498594                break;
    499595        default:
Note: See TracChangeset for help on using the changeset viewer.