[EXPLORER][SHELL32][SHELL32_APITEST][SDK] AppBar: Initial support (#7778)

Supporting AppBars.
JIRA issue: CORE-7237
- Rewrite shell32!SHAppBarMessage
  function.
- Introduce CAppBarManager class in
  base/shell/explorer/appbar.cpp.
- Add support of ABM_NEW,
  ABM_REMOVE, ABM_QUERYPOS,
  and ABM_SETPOS messages for
  AppBar in Tray Window.
This commit is contained in:
Katayama Hirofumi MZ 2025-04-28 19:08:13 +09:00 committed by GitHub
parent 378a335468
commit f19c62c80e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 780 additions and 495 deletions

View file

@ -494,7 +494,12 @@ FindExecutableW(
_In_opt_ LPCWSTR lpDirectory,
_Out_writes_(MAX_PATH) LPWSTR lpResult);
UINT_PTR WINAPI SHAppBarMessage(_In_ DWORD, _Inout_ PAPPBARDATA);
UINT_PTR
WINAPI
SHAppBarMessage(
_In_ DWORD dwMessage,
_Inout_ PAPPBARDATA pData);
BOOL WINAPI Shell_NotifyIconA(_In_ DWORD, _In_ PNOTIFYICONDATAA);
BOOL WINAPI Shell_NotifyIconW(_In_ DWORD, _In_ PNOTIFYICONDATAW);

View file

@ -1,23 +1,14 @@
/*
* Copyright 1999, 2000 Juergen Schmied
*
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
* PROJECT: ReactOS Shell
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Undocumented shell definitions
* COPYRIGHT: Copyright 1999, 2000 Juergen Schmied
* Copyright 2025 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
*/
#ifndef __WINE_UNDOCSHELL_H
#define __WINE_UNDOCSHELL_H
#pragma once
#include <shellapi.h>
#ifndef SHSTDAPI
#if defined(_SHELL32_) /* DECLSPEC_IMPORT disabled because of CORE-6504: */ || TRUE
@ -1231,8 +1222,33 @@ typedef struct SFVM_CUSTOMVIEWINFO_DATA
#include <poppack.h>
/*
* Private structures for internal AppBar messaging.
* These structures can be sent from 32-bit shell32 to 64-bit Explorer.
* See also: https://learn.microsoft.com/en-us/windows/win32/winprog64/interprocess-communication
* > ... only the lower 32 bits are significant, so it is safe to truncate the handle
*/
#include <pshpack8.h>
typedef struct tagAPPBARDATA3264
{
DWORD cbSize; /* == sizeof(APPBARDATA3264) */
UINT32 hWnd32;
UINT uCallbackMessage;
UINT uEdge;
RECT rc;
LONGLONG lParam64;
} APPBARDATA3264, *PAPPBARDATA3264;
typedef struct tagAPPBAR_COMMAND
{
APPBARDATA3264 abd;
DWORD dwMessage;
UINT32 hOutput32; /* For shlwapi!SHAllocShared */
DWORD dwProcessId;
} APPBAR_COMMAND, *PAPPBAR_COMMAND;
#include <poppack.h>
C_ASSERT(sizeof(APPBAR_COMMAND) == 0x38);
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */
#endif /* __WINE_UNDOCSHELL_H */