| /* |
| * Misc 16-bit USER functions |
| * |
| * Copyright 2002 Patrik Stridvall |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| #include "wine/winuser16.h" |
| #include "winbase.h" |
| |
| /* handle to handle 16 conversions */ |
| #define HANDLE_16(h32) (LOWORD(h32)) |
| #define HBITMAP_16(h32) (LOWORD(h32)) |
| #define HCURSOR_16(h32) (LOWORD(h32)) |
| #define HICON_16(h32) (LOWORD(h32)) |
| |
| /* handle16 to handle conversions */ |
| #define HANDLE_32(h16) ((HANDLE)(ULONG_PTR)(h16)) |
| #define HBRUSH_32(h16) ((HBRUSH)(ULONG_PTR)(h16)) |
| #define HCURSOR_32(h16) ((HCURSOR)(ULONG_PTR)(h16)) |
| #define HDC_32(h16) ((HDC)(ULONG_PTR)(h16)) |
| #define HICON_32(h16) ((HICON)(ULONG_PTR)(h16)) |
| #define HINSTANCE_32(h16) ((HINSTANCE)(ULONG_PTR)(h16)) |
| |
| WORD WINAPI DestroyIcon32(HGLOBAL16, UINT16); |
| |
| |
| /*********************************************************************** |
| * SetCursor (USER.69) |
| */ |
| HCURSOR16 WINAPI SetCursor16(HCURSOR16 hCursor) |
| { |
| return HCURSOR_16(SetCursor(HCURSOR_32(hCursor))); |
| } |
| |
| /*********************************************************************** |
| * ShowCursor (USER.71) |
| */ |
| INT16 WINAPI ShowCursor16(BOOL16 bShow) |
| { |
| return ShowCursor(bShow); |
| } |
| |
| /*********************************************************************** |
| * DrawIcon (USER.84) |
| */ |
| BOOL16 WINAPI DrawIcon16(HDC16 hdc, INT16 x, INT16 y, HICON16 hIcon) |
| { |
| return DrawIcon(HDC_32(hdc), x, y, HICON_32(hIcon)); |
| } |
| |
| /*********************************************************************** |
| * IconSize (USER.86) |
| * |
| * See "Undocumented Windows". Used by W2.0 paint.exe. |
| */ |
| DWORD WINAPI IconSize16(void) |
| { |
| return MAKELONG(GetSystemMetrics(SM_CYICON), GetSystemMetrics(SM_CXICON)); |
| } |
| |
| /*********************************************************************** |
| * LoadCursor (USER.173) |
| */ |
| HCURSOR16 WINAPI LoadCursor16(HINSTANCE16 hInstance, LPCSTR name) |
| { |
| return HCURSOR_16(LoadCursorA(HINSTANCE_32(hInstance), name)); |
| } |
| |
| |
| /*********************************************************************** |
| * LoadIcon (USER.174) |
| */ |
| HICON16 WINAPI LoadIcon16(HINSTANCE16 hInstance, LPCSTR name) |
| { |
| return HICON_16(LoadIconA(HINSTANCE_32(hInstance), name)); |
| } |
| |
| /********************************************************************** |
| * LoadBitmap (USER.175) |
| */ |
| HBITMAP16 WINAPI LoadBitmap16(HINSTANCE16 hInstance, LPCSTR name) |
| { |
| return HBITMAP_16(LoadBitmapA(HINSTANCE_32(hInstance), name)); |
| } |
| |
| /*********************************************************************** |
| * GetCursor (USER.247) |
| */ |
| HCURSOR16 WINAPI GetCursor16(void) |
| { |
| return HCURSOR_16(GetCursor()); |
| } |
| |
| /*********************************************************************** |
| * GlobalAddAtom (USER.268) |
| */ |
| ATOM WINAPI GlobalAddAtom16(LPCSTR lpString) |
| { |
| return GlobalAddAtomA(lpString); |
| } |
| |
| /*********************************************************************** |
| * GlobalDeleteAtom (USER.269) |
| */ |
| ATOM WINAPI GlobalDeleteAtom16(ATOM nAtom) |
| { |
| return GlobalDeleteAtom(nAtom); |
| } |
| |
| /*********************************************************************** |
| * GlobalFindAtom (USER.270) |
| */ |
| ATOM WINAPI GlobalFindAtom16(LPCSTR lpString) |
| { |
| return GlobalFindAtomA(lpString); |
| } |
| |
| /*********************************************************************** |
| * GlobalGetAtomName (USER.271) |
| */ |
| UINT16 WINAPI GlobalGetAtomName16(ATOM nAtom, LPSTR lpBuffer, INT16 nSize) |
| { |
| return GlobalGetAtomNameA(nAtom, lpBuffer, nSize); |
| } |
| |
| /*********************************************************************** |
| * LoadImage (USER.389) |
| * |
| */ |
| HANDLE16 WINAPI LoadImage16(HINSTANCE16 hinst, LPCSTR name, UINT16 type, |
| INT16 desiredx, INT16 desiredy, UINT16 loadflags) |
| { |
| return HANDLE_16(LoadImageA(HINSTANCE_32(hinst), name, type, desiredx, |
| desiredy, loadflags)); |
| } |
| |
| /****************************************************************************** |
| * CopyImage (USER.390) Creates new image and copies attributes to it |
| * |
| */ |
| HICON16 WINAPI CopyImage16(HANDLE16 hnd, UINT16 type, INT16 desiredx, |
| INT16 desiredy, UINT16 flags) |
| { |
| return HICON_16(CopyImage(HANDLE_32(hnd), (UINT)type, (INT)desiredx, |
| (INT)desiredy, (UINT)flags)); |
| } |
| |
| /********************************************************************** |
| * DrawIconEx (USER.394) |
| */ |
| BOOL16 WINAPI DrawIconEx16(HDC16 hdc, INT16 xLeft, INT16 yTop, HICON16 hIcon, |
| INT16 cxWidth, INT16 cyWidth, UINT16 istep, |
| HBRUSH16 hbr, UINT16 flags) |
| { |
| return DrawIconEx(HDC_32(hdc), xLeft, yTop, HICON_32(hIcon), cxWidth, cyWidth, |
| istep, HBRUSH_32(hbr), flags); |
| } |
| |
| /********************************************************************** |
| * GetIconInfo (USER.395) |
| */ |
| BOOL16 WINAPI GetIconInfo16(HICON16 hIcon, LPICONINFO16 iconinfo) |
| { |
| ICONINFO ii32; |
| BOOL16 ret = GetIconInfo(HICON_32(hIcon), &ii32); |
| |
| iconinfo->fIcon = ii32.fIcon; |
| iconinfo->xHotspot = ii32.xHotspot; |
| iconinfo->yHotspot = ii32.yHotspot; |
| iconinfo->hbmMask = HBITMAP_16(ii32.hbmMask); |
| iconinfo->hbmColor = HBITMAP_16(ii32.hbmColor); |
| return ret; |
| } |
| |
| /*********************************************************************** |
| * CreateCursor (USER.406) |
| */ |
| HCURSOR16 WINAPI CreateCursor16(HINSTANCE16 hInstance, |
| INT16 xHotSpot, INT16 yHotSpot, |
| INT16 nWidth, INT16 nHeight, |
| LPCVOID lpANDbits, LPCVOID lpXORbits) |
| { |
| CURSORICONINFO info; |
| |
| info.ptHotSpot.x = xHotSpot; |
| info.ptHotSpot.y = yHotSpot; |
| info.nWidth = nWidth; |
| info.nHeight = nHeight; |
| info.nWidthBytes = 0; |
| info.bPlanes = 1; |
| info.bBitsPerPixel = 1; |
| |
| return CreateCursorIconIndirect16(hInstance, &info, lpANDbits, lpXORbits); |
| } |
| |
| /********************************************************************** |
| * CreateIconFromResourceEx (USER.450) |
| * |
| * FIXME: not sure about exact parameter types |
| */ |
| HICON16 WINAPI CreateIconFromResourceEx16(LPBYTE bits, UINT16 cbSize, |
| BOOL16 bIcon, DWORD dwVersion, |
| INT16 width, INT16 height, |
| UINT16 cFlag) |
| { |
| return HICON_16(CreateIconFromResourceEx(bits, cbSize, bIcon, dwVersion, |
| width, height, cFlag)); |
| } |
| |
| /*********************************************************************** |
| * DestroyIcon (USER.457) |
| */ |
| BOOL16 WINAPI DestroyIcon16(HICON16 hIcon) |
| { |
| return DestroyIcon32(hIcon, 0); |
| } |
| |
| /*********************************************************************** |
| * DestroyCursor (USER.458) |
| */ |
| BOOL16 WINAPI DestroyCursor16(HCURSOR16 hCursor) |
| { |
| return DestroyIcon32(hCursor, 0); |
| } |