ReactOS  0.4.15-dev-425-gc40b086
systray.c File Reference
#include <stdarg.h>
#include <windows.h>
#include "shellapi.h"
#include "wine/test.h"
Include dependency graph for systray.c:

Go to the source code of this file.

Functions

static BOOL (WINAPI *pShell_NotifyIconW)(DWORD
 
static void test_cbsize (void)
 
 START_TEST (systray)
 

Variables

static HWND hMainWnd
 
static PNOTIFYICONDATAW
 

Function Documentation

◆ BOOL()

static BOOL ( WINAPI pShell_NotifyIconW)
static

◆ START_TEST()

START_TEST ( systray  )

Definition at line 81 of file systray.c.

82 {
83  WNDCLASSA wc;
84  MSG msg;
85  RECT rc;
86  HMODULE hshell32;
87 
88  hshell32 = GetModuleHandleA("shell32.dll");
89  pShell_NotifyIconW = (void*)GetProcAddress(hshell32, "Shell_NotifyIconW");
90 
92  wc.cbClsExtra = 0;
93  wc.cbWndExtra = 0;
95  wc.hIcon = NULL;
98  wc.lpszMenuName = NULL;
99  wc.lpszClassName = "MyTestWnd";
101  RegisterClassA(&wc);
102 
103  hMainWnd = CreateWindowExA(0, "MyTestWnd", "Blah", WS_OVERLAPPEDWINDOW,
105  GetClientRect(hMainWnd, &rc);
107 
108  test_cbsize();
109 
110  PostQuitMessage(0);
111  while(GetMessageA(&msg,0,0,0)) {
114  }
116 }
BOOL WINAPI TranslateMessage(_In_ const MSG *)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
int cbClsExtra
Definition: winuser.h:3140
#define CS_HREDRAW
Definition: winuser.h:648
LPCSTR lpszMenuName
Definition: winuser.h:3146
HBRUSH hbrBackground
Definition: winuser.h:3145
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
char * LPSTR
Definition: xmlstorage.h:182
BOOL WINAPI DestroyWindow(_In_ HWND)
#define COLOR_WINDOW
Definition: winuser.h:908
#define IDC_IBEAM
Definition: winuser.h:683
int cbWndExtra
Definition: winuser.h:3141
HCURSOR hCursor
Definition: winuser.h:3144
#define CW_USEDEFAULT
Definition: winuser.h:225
smooth NULL
Definition: ftsmooth.c:416
#define SW_SHOW
Definition: winuser.h:769
#define CS_VREDRAW
Definition: winuser.h:653
static HWND hMainWnd
Definition: systray.c:28
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LPCSTR lpszClassName
Definition: winuser.h:3147
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
Definition: cursoricon.c:2059
UINT style
Definition: winuser.h:3138
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HINSTANCE hInstance
Definition: winuser.h:3142
static void test_cbsize(void)
Definition: systray.c:31
WNDPROC lpfnWndProc
Definition: winuser.h:3139
#define msg(x)
Definition: auth_time.c:54
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define GetProcAddress(x, y)
Definition: compat.h:419
HBRUSH WINAPI GetSysColorBrush(_In_ int)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HICON hIcon
Definition: winuser.h:3143

◆ test_cbsize()

static void test_cbsize ( void  )
static

Definition at line 31 of file systray.c.

32 {
33  NOTIFYICONDATAA nidA;
34  BOOL ret;
35 
36  if (pShell_NotifyIconW)
37  {
38  NOTIFYICONDATAW nidW;
39 
40  ZeroMemory(&nidW, sizeof(nidW));
42  nidW.hWnd = hMainWnd;
43  nidW.uID = 1;
46  nidW.uCallbackMessage = WM_USER+17;
47  ret = pShell_NotifyIconW(NIM_ADD, &nidW);
48  ok(ret, "NIM_ADD failed!\n");
49  /* using an invalid cbSize does work */
50  nidW.cbSize = 3;
51  nidW.hWnd = hMainWnd;
52  nidW.uID = 1;
53  ret = pShell_NotifyIconW(NIM_DELETE, &nidW);
54  ok( ret || broken(!ret), /* nt4 */ "NIM_DELETE failed!\n");
55  /* as icon doesn't exist anymore - now there will be an error */
56  nidW.cbSize = sizeof(nidW);
57  ok(!pShell_NotifyIconW(NIM_DELETE, &nidW) != !ret, "The icon was not deleted\n");
58  }
59 
60  /* same for Shell_NotifyIconA */
61  ZeroMemory(&nidA, sizeof(nidA));
63  nidA.hWnd = hMainWnd;
64  nidA.uID = 1;
67  nidA.uCallbackMessage = WM_USER+17;
68  ok(Shell_NotifyIconA(NIM_ADD, &nidA), "NIM_ADD failed!\n");
69 
70  /* using an invalid cbSize does work */
71  nidA.cbSize = 3;
72  nidA.hWnd = hMainWnd;
73  nidA.uID = 1;
75  ok(ret, "NIM_DELETE failed!\n");
76  /* as icon doesn't exist anymore - now there will be an error */
77  nidA.cbSize = sizeof(nidA);
78  ok(!Shell_NotifyIconA(NIM_DELETE, &nidA) != !ret, "The icon was not deleted\n");
79 }
#define NIF_MESSAGE
Definition: shellapi.h:102
#define NOTIFYICONDATAA_V1_SIZE
Definition: shellapi.h:284
#define ZeroMemory
Definition: winbase.h:1648
#define IDI_APPLICATION
Definition: winuser.h:699
char * LPSTR
Definition: xmlstorage.h:182
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE, _In_ LPCSTR)
Definition: cursoricon.c:2029
UINT uCallbackMessage
Definition: shellapi.h:259
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
#define NIF_ICON
Definition: shellapi.h:103
#define NIM_DELETE
Definition: shellapi.h:93
int ret
static HWND hMainWnd
Definition: systray.c:28
#define NOTIFYICONDATAW_V1_SIZE
Definition: shellapi.h:285
#define WM_USER
Definition: winuser.h:1877
#define broken(x)
Definition: _sntprintf.h:21
UINT uCallbackMessage
Definition: shellapi.h:229
#define ok(value,...)
Definition: atltest.h:57
BOOL WINAPI Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA pnid)
Definition: systray.cpp:31
#define NIM_ADD
Definition: shellapi.h:91

Referenced by START_TEST().

Variable Documentation

◆ hMainWnd

HWND hMainWnd
static

Definition at line 28 of file systray.c.

Referenced by START_TEST(), and test_cbsize().

◆ PNOTIFYICONDATAW

Definition at line 29 of file systray.c.