ReactOS 0.4.15-dev-8614-gbc76250
CopyImage.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS API tests
3 * LICENSE: LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
4 * PURPOSE: Test for SetFocus/GetFocus/GetGUIThreadInfo
5 * COPYRIGHT: Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6 */
7
8#include "precomp.h"
9#include <versionhelpers.h>
10
11#define COPYIMAGE_VALID_FLAGS ( \
12 LR_SHARED | LR_COPYFROMRESOURCE | LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS | 0x800 | \
13 LR_VGACOLOR | LR_LOADREALSIZE | LR_DEFAULTSIZE | LR_LOADTRANSPARENT | LR_LOADFROMFILE | \
14 LR_COPYDELETEORG | LR_COPYRETURNORG | LR_COLOR | LR_MONOCHROME \
15)
16
17#define LR_UNKNOWN_0x10000 0x10000
18
20{
21 HANDLE hImage;
22 switch (uType)
23 {
24 case IMAGE_BITMAP:
25 {
27 hImage = (HANDLE)CreateCompatibleBitmap(hDC, 10, 10);
29 break;
30 }
31 case IMAGE_CURSOR:
32 hImage = (HANDLE)LoadCursor(NULL, IDC_ARROW);
33 break;
34 case IMAGE_ICON:
36 break;
37 }
38 return hImage;
39}
40
41static VOID
43{
44 UINT iBit, uBit, uValidFlags = COPYIMAGE_VALID_FLAGS;
45 HANDLE hImage, hCopiedImage;
46
48 uValidFlags |= LR_UNKNOWN_0x10000;
49
50 hImage = CreateTestImage(uType);
51 for (iBit = 0; iBit < sizeof(UINT) * CHAR_BIT; ++iBit)
52 {
53 uBit = (1 << iBit);
54
55 SetLastError(0xDEADFACE);
56 hCopiedImage = CopyImage(hImage, uType, 0, 0, uBit);
57
58 if (uValidFlags & uBit) // Valid flag?
59 {
60 ok(hCopiedImage != NULL, "iBit %u: uType %u: hCopiedImage was NULL\n", iBit, uType);
61 }
62 else
63 {
64 ok(hCopiedImage == NULL, "iBit %u: uType %u: hCopiedImage was %p\n", iBit, uType, hCopiedImage);
66 }
67
68 if (hCopiedImage)
69 DeleteObject(hCopiedImage);
70
71 /* If the original image was deleted, re-create it */
72 if (uBit & LR_COPYDELETEORG)
73 hImage = CreateTestImage(uType);
74 }
75
76 DeleteObject(hImage);
77}
78
80{
84}
static HDC hDC
Definition: 3dtext.c:33
static VOID Test_CopyImage_Flags(UINT uType)
Definition: CopyImage.c:42
static HANDLE CreateTestImage(UINT uType)
Definition: CopyImage.c:19
#define COPYIMAGE_VALID_FLAGS
Definition: CopyImage.c:11
#define LR_UNKNOWN_0x10000
Definition: CopyImage.c:17
#define ok(value,...)
Definition: atltest.h:57
#define ok_err(error)
Definition: atltest.h:124
#define START_TEST(x)
Definition: atltest.h:75
#define NULL
Definition: types.h:112
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
#define CHAR_BIT
Definition: urlcache.c:62
pKey DeleteObject()
static HDC
Definition: imagelist.c:88
unsigned int UINT
Definition: ndis.h:50
PVOID HANDLE
Definition: typedefs.h:73
VERSIONHELPERAPI IsWindowsVistaOrGreater()
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
BOOL WINAPI DeleteDC(_In_ HDC)
#define IMAGE_BITMAP
Definition: winuser.h:211
#define IMAGE_ICON
Definition: winuser.h:212
#define IDC_ARROW
Definition: winuser.h:687
HANDLE WINAPI CopyImage(_In_ HANDLE, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2024
#define IDI_APPLICATION
Definition: winuser.h:704
#define LoadIcon
Definition: winuser.h:5825
#define LoadCursor
Definition: winuser.h:5824
#define LR_COPYDELETEORG
Definition: winuser.h:1094
#define IMAGE_CURSOR
Definition: winuser.h:213