ReactOS  0.4.14-dev-323-g6fe6a88
CreateIconIndirect.c
Go to the documentation of this file.
1 
2 #include "precomp.h"
3 
4 // FIXME user32
5 
6 void
8 {
9  HICON hicon;
10  ICONINFO iconinfo, iconinfo2;
11  BITMAP bitmap;
12 
13  iconinfo.fIcon = fIcon;
14  iconinfo.xHotspot = 0;
15  iconinfo.yHotspot = 0;
16  iconinfo.hbmMask = NULL;
17  iconinfo.hbmColor = NULL;
18 
19  hicon = CreateIconIndirect(&iconinfo);
20  ok(hicon == 0, "should fail\n");
21 
22  iconinfo.hbmMask = CreateBitmap(8, 16, 1, 1, NULL);
23  hicon = CreateIconIndirect(&iconinfo);
24  ok(hicon != 0, "should not fail\n");
25 
26  ok(GetIconInfo(hicon, &iconinfo2), "\n");
27  ok(iconinfo2.fIcon == iconinfo.fIcon, "\n");
28  if (fIcon)
29  {
30  ok(iconinfo2.xHotspot == 4, "%ld\n", iconinfo2.xHotspot);
31  ok(iconinfo2.yHotspot == 4, "%ld\n", iconinfo2.yHotspot);
32  }
33  else
34  {
35  ok(iconinfo2.xHotspot == 0, "%ld\n", iconinfo2.xHotspot);
36  ok(iconinfo2.yHotspot == 0, "%ld\n", iconinfo2.yHotspot);
37  }
38  ok(iconinfo2.hbmMask != NULL, "\n");
39  ok(iconinfo2.hbmMask != iconinfo.hbmMask, "\n");
40  ok(iconinfo2.hbmColor == NULL, "\n");
41 
42  ok(GetIconInfo(hicon, &iconinfo2), "\n");
43  ok(iconinfo2.fIcon == iconinfo.fIcon, "\n");
44  if (fIcon)
45  {
46  ok(iconinfo2.xHotspot == 4, "%ld\n", iconinfo2.xHotspot);
47  ok(iconinfo2.yHotspot == 4, "%ld\n", iconinfo2.yHotspot);
48  }
49  else
50  {
51  ok(iconinfo2.xHotspot == 0, "%ld\n", iconinfo2.xHotspot);
52  ok(iconinfo2.yHotspot == 0, "%ld\n", iconinfo2.yHotspot);
53  }
54  ok(iconinfo2.hbmMask != NULL, "\n");
55  ok(iconinfo2.hbmMask != iconinfo.hbmMask, "\n");
56  ok(iconinfo2.hbmColor == NULL, "\n");
57 
58  iconinfo.hbmColor = CreateBitmap(2, 2, 1, 1, NULL);
59  hicon = CreateIconIndirect(&iconinfo);
60  ok(hicon != 0, "should not fail\n");
61 
62  ok(GetIconInfo(hicon, &iconinfo2), "\n");
63  ok(iconinfo2.fIcon == iconinfo.fIcon, "\n");
64  if (fIcon)
65  {
66  ok(iconinfo2.xHotspot == 4, "%ld\n", iconinfo2.xHotspot);
67  ok(iconinfo2.yHotspot == 8, "%ld\n", iconinfo2.yHotspot);
68  }
69  else
70  {
71  ok(iconinfo2.xHotspot == 0, "%ld\n", iconinfo2.xHotspot);
72  ok(iconinfo2.yHotspot == 0, "%ld\n", iconinfo2.yHotspot);
73  }
74  ok(iconinfo2.hbmMask != NULL, "\n");
75  ok(iconinfo2.hbmMask != iconinfo.hbmMask, "\n");
76  ok(iconinfo2.hbmColor != NULL, "\n");
77  ok(iconinfo2.hbmMask != iconinfo.hbmColor, "\n");
78 
79  ok(GetObject(iconinfo2.hbmMask, sizeof(bitmap), &bitmap), "GetObject failed\n");
80  ok(bitmap.bmType == 0, "\n");
81  ok(bitmap.bmWidth == 8, "\n");
82  ok(bitmap.bmHeight == 16, "\n");
83  ok(bitmap.bmWidthBytes == 2, "\n");
84  ok(bitmap.bmPlanes == 1, "\n");
85  ok(bitmap.bmBitsPixel == 1, "\n");
86  ok(bitmap.bmBits == NULL, "\n");
87 
88  ok(GetObject(iconinfo2.hbmColor, sizeof(bitmap), &bitmap), "GetObject failed\n");
89  ok(bitmap.bmType == 0, "\n");
90  ok(bitmap.bmWidth == 8, "\n");
91  ok(bitmap.bmHeight == 16, "\n");
92  ok(bitmap.bmWidthBytes == 8 * bitmap.bmBitsPixel / 8, "\n");
93  ok(bitmap.bmPlanes == 1, "\n");
94  ok(bitmap.bmBitsPixel == 32, "\n");
95  ok(bitmap.bmBits == NULL, "\n");
96 
97  DeleteObject(iconinfo.hbmMask);
98  iconinfo.hbmMask = NULL;
99  hicon = CreateIconIndirect(&iconinfo);
100  ok(hicon == 0, "should fail\n");
101 
102  DeleteObject(iconinfo.hbmColor);
103  iconinfo.hbmColor = CreateCompatibleBitmap(GetDC(0), 16, 16);
104  hicon = CreateIconIndirect(&iconinfo);
105  ok(hicon == 0, "should fail\n");
106 
107  iconinfo.hbmMask = CreateCompatibleBitmap(GetDC(0), 8, 16);
108  hicon = CreateIconIndirect(&iconinfo);
109  ok(hicon != 0, "should not fail\n");
110 
111  ok(GetIconInfo(hicon, &iconinfo2), "\n");
112 
113  ok(GetObject(iconinfo2.hbmMask, sizeof(bitmap), &bitmap), "GetObject failed\n");
114  ok(bitmap.bmType == 0, "\n");
115  ok(bitmap.bmWidth == 8, "%ld\n", bitmap.bmWidth);
116  ok(bitmap.bmHeight == 16, "%ld\n", bitmap.bmHeight);
117  ok(bitmap.bmWidthBytes == 2, "%ld\n", bitmap.bmWidthBytes);
118  ok(bitmap.bmPlanes == 1, "%d\n", bitmap.bmPlanes);
119  ok(bitmap.bmBitsPixel == 1, "%d\n", bitmap.bmBitsPixel);
120  ok(bitmap.bmBits == NULL, "\n");
121 
122  ok(GetObject(iconinfo2.hbmColor, sizeof(bitmap), &bitmap), "GetObject failed\n");
123  ok(bitmap.bmType == 0, "\n");
124  ok(bitmap.bmWidth == 8, "%ld\n", bitmap.bmWidth);
125  ok(bitmap.bmHeight == 16, "%ld\n", bitmap.bmHeight);
126  ok(bitmap.bmWidthBytes == 32, "%ld\n", bitmap.bmWidthBytes);
127  ok(bitmap.bmPlanes == 1, "%d\n", bitmap.bmPlanes);
128  ok(bitmap.bmBitsPixel == 32, "%d\n", bitmap.bmBitsPixel);
129  ok(bitmap.bmBits == NULL, "\n");
130 
131 
132 }
133 
134 
136 {
137  HCURSOR hcursor;
138  HICON hicon;
139  ICONINFO iconinfo2;
140  BITMAP bitmap;
141  DWORD data[] = {0, 0, 0, 0, 0, 0};
142 
143  Test_GetIconInfo(0);
144  Test_GetIconInfo(1);
145 
146  hcursor = LoadCursor(NULL, IDC_APPSTARTING);
147  ok(hcursor != 0, "should not fail\n");
148  ok(GetIconInfo(hcursor, &iconinfo2), "\n");
149  ok(iconinfo2.fIcon == 0, "\n");
150  ok(iconinfo2.xHotspot == 0, "%ld\n", iconinfo2.xHotspot);
151  ok(iconinfo2.yHotspot == 8, "%ld\n", iconinfo2.yHotspot);
152  ok(iconinfo2.hbmMask != NULL, "\n");
153  ok(iconinfo2.hbmColor != NULL, "\n");
154 
155  ok(GetObject(iconinfo2.hbmMask, sizeof(bitmap), &bitmap), "GetObject failed\n");
156  ok(bitmap.bmType == 0, "\n");
157  ok(bitmap.bmWidth == 32, "%ld\n", bitmap.bmWidth);
158  ok(bitmap.bmHeight == 32, "\n");
159  ok(bitmap.bmWidthBytes == 4, "\n");
160  ok(bitmap.bmPlanes == 1, "\n");
161  ok(bitmap.bmBitsPixel == 1, "\n");
162  ok(bitmap.bmBits == NULL, "\n");
163 
164  ok(GetObject(iconinfo2.hbmColor, sizeof(bitmap), &bitmap), "GetObject failed\n");
165  ok(bitmap.bmType == 0, "\n");
166  ok(bitmap.bmWidth == 32, "\n");
167  ok(bitmap.bmHeight == 32, "\n");
168  ok(bitmap.bmWidthBytes == 32 * bitmap.bmBitsPixel / 8, "\n");
169  ok(bitmap.bmPlanes == 1, "\n");
170  ok(bitmap.bmBitsPixel == 32, "\n");
171  ok(bitmap.bmBits == NULL, "\n");
172 
173  hcursor = CreateCursor(NULL, 1, 2, 4, 4, data, data);
174  ok(hcursor != 0, "should not fail\n");
175  ok(GetIconInfo(hcursor, &iconinfo2), "\n");
176  ok(iconinfo2.fIcon == 0, "\n");
177  ok(iconinfo2.xHotspot == 1, "%ld\n", iconinfo2.xHotspot);
178  ok(iconinfo2.yHotspot == 2, "%ld\n", iconinfo2.yHotspot);
179  ok(iconinfo2.hbmMask != NULL, "\n");
180  ok(iconinfo2.hbmColor == NULL, "\n");
181 
182  ok(GetObject(iconinfo2.hbmMask, sizeof(bitmap), &bitmap), "GetObject failed\n");
183  ok(bitmap.bmType == 0, "\n");
184  ok(bitmap.bmWidth == 4, "%ld\n", bitmap.bmWidth);
185  ok(bitmap.bmHeight == 8, "%ld\n", bitmap.bmHeight);
186  ok(bitmap.bmWidthBytes == 2, "%ld\n", bitmap.bmWidthBytes);
187  ok(bitmap.bmPlanes == 1, "\n");
188  ok(bitmap.bmBitsPixel == 1, "\n");
189  ok(bitmap.bmBits == NULL, "\n");
190 
191 
192  hicon = CreateIcon(0, 4, 4, 1, 1, (PBYTE)data, (PBYTE)data);
193  ok(hicon != 0, "should not fail\n");
194 
195  ok(GetIconInfo(hicon, &iconinfo2), "\n");
196  ok(iconinfo2.fIcon == 0, "\n");
197  ok(iconinfo2.xHotspot == 2, "%ld\n", iconinfo2.xHotspot);
198  ok(iconinfo2.yHotspot == 2, "%ld\n", iconinfo2.yHotspot);
199  ok(iconinfo2.hbmMask != NULL, "\n");
200  ok(iconinfo2.hbmColor == NULL, "\n");
201 
202 }
static HICON
Definition: imagelist.c:84
HDC WINAPI GetDC(_In_opt_ HWND)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
DWORD yHotspot
Definition: winuser.h:3099
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
HICON HCURSOR
Definition: windef.h:284
BOOL WINAPI GetIconInfo(_In_ HICON, _Out_ PICONINFO)
Definition: cursoricon.c:2014
START_TEST(CreateIconIndirect)
unsigned int BOOL
Definition: ntddk_ex.h:94
HBITMAP hbmMask
Definition: winuser.h:3100
smooth NULL
Definition: ftsmooth.c:416
HCURSOR WINAPI CreateCursor(_In_opt_ HINSTANCE, _In_ int, _In_ int, _In_ int, _In_ int, _In_ CONST VOID *, _In_ CONST VOID *)
HBITMAP hbmColor
Definition: winuser.h:3101
Definition: uimain.c:88
BOOL fIcon
Definition: winuser.h:3097
#define IDC_APPSTARTING
Definition: winuser.h:694
DWORD xHotspot
Definition: winuser.h:3098
HICON WINAPI CreateIconIndirect(_In_ PICONINFO)
Definition: cursoricon.c:2546
HICON WINAPI CreateIcon(_In_opt_ HINSTANCE, _In_ int, _In_ int, _In_ BYTE, _In_ BYTE, _In_ const BYTE *, _In_ const BYTE *)
Definition: cursoricon.c:2364
unsigned long DWORD
Definition: ntddk_ex.h:95
#define GetObject
Definition: wingdi.h:4463
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
void Test_GetIconInfo(BOOL fIcon)
#define LoadCursor
Definition: winuser.h:5713
#define ok(value,...)
Definition: atltest.h:57
Definition: bl.h:1331
static HBITMAP bitmap
Definition: clipboard.c:1344
BYTE * PBYTE
Definition: pedump.c:66
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)