go my file uploader
This commit is contained in:
723
phlib/include/guisup.h
Normal file
723
phlib/include/guisup.h
Normal file
@@ -0,0 +1,723 @@
|
||||
#ifndef _PH_PHGUI_H
|
||||
#define _PH_PHGUI_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <commctrl.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// guisup
|
||||
|
||||
typedef BOOL (WINAPI *_ChangeWindowMessageFilter)(
|
||||
_In_ UINT message,
|
||||
_In_ DWORD dwFlag
|
||||
);
|
||||
|
||||
typedef BOOL (WINAPI *_IsImmersiveProcess)(
|
||||
_In_ HANDLE hProcess
|
||||
);
|
||||
|
||||
#define RFF_NOBROWSE 0x0001
|
||||
#define RFF_NODEFAULT 0x0002
|
||||
#define RFF_CALCDIRECTORY 0x0004
|
||||
#define RFF_NOLABEL 0x0008
|
||||
#define RFF_NOSEPARATEMEM 0x0020
|
||||
|
||||
#define RFN_VALIDATE (-510)
|
||||
|
||||
typedef struct _NMRUNFILEDLGW
|
||||
{
|
||||
NMHDR hdr;
|
||||
LPCWSTR lpszFile;
|
||||
LPCWSTR lpszDirectory;
|
||||
UINT nShow;
|
||||
} NMRUNFILEDLGW, *LPNMRUNFILEDLGW, *PNMRUNFILEDLGW;
|
||||
|
||||
typedef NMRUNFILEDLGW NMRUNFILEDLG;
|
||||
typedef PNMRUNFILEDLGW PNMRUNFILEDLG;
|
||||
typedef LPNMRUNFILEDLGW LPNMRUNFILEDLG;
|
||||
|
||||
#define RF_OK 0x0000
|
||||
#define RF_CANCEL 0x0001
|
||||
#define RF_RETRY 0x0002
|
||||
|
||||
typedef HANDLE HTHEME;
|
||||
|
||||
typedef BOOL (WINAPI *_RunFileDlg)(
|
||||
_In_ HWND hwndOwner,
|
||||
_In_opt_ HICON hIcon,
|
||||
_In_opt_ LPCWSTR lpszDirectory,
|
||||
_In_opt_ LPCWSTR lpszTitle,
|
||||
_In_opt_ LPCWSTR lpszDescription,
|
||||
_In_ ULONG uFlags
|
||||
);
|
||||
|
||||
typedef HRESULT (WINAPI *_SHAutoComplete)(
|
||||
_In_ HWND hwndEdit,
|
||||
_In_ DWORD dwFlags
|
||||
);
|
||||
|
||||
extern _ChangeWindowMessageFilter ChangeWindowMessageFilter_I;
|
||||
extern _IsImmersiveProcess IsImmersiveProcess_I;
|
||||
extern _RunFileDlg RunFileDlg;
|
||||
extern _SHAutoComplete SHAutoComplete_I;
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhGuiSupportInitialization(
|
||||
VOID
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhSetControlTheme(
|
||||
_In_ HWND Handle,
|
||||
_In_ PWSTR Theme
|
||||
);
|
||||
|
||||
FORCEINLINE VOID PhSetWindowStyle(
|
||||
_In_ HWND Handle,
|
||||
_In_ LONG_PTR Mask,
|
||||
_In_ LONG_PTR Value
|
||||
)
|
||||
{
|
||||
LONG_PTR style;
|
||||
|
||||
style = GetWindowLongPtr(Handle, GWL_STYLE);
|
||||
style = (style & ~Mask) | (Value & Mask);
|
||||
SetWindowLongPtr(Handle, GWL_STYLE, style);
|
||||
}
|
||||
|
||||
FORCEINLINE VOID PhSetWindowExStyle(
|
||||
_In_ HWND Handle,
|
||||
_In_ LONG_PTR Mask,
|
||||
_In_ LONG_PTR Value
|
||||
)
|
||||
{
|
||||
LONG_PTR style;
|
||||
|
||||
style = GetWindowLongPtr(Handle, GWL_EXSTYLE);
|
||||
style = (style & ~Mask) | (Value & Mask);
|
||||
SetWindowLongPtr(Handle, GWL_EXSTYLE, style);
|
||||
}
|
||||
|
||||
#ifndef WM_REFLECT
|
||||
#define WM_REFLECT 0x2000
|
||||
#endif
|
||||
|
||||
#define REFLECT_MESSAGE(hwnd, msg, wParam, lParam) \
|
||||
{ \
|
||||
LRESULT result_ = PhReflectMessage(hwnd, msg, wParam, lParam); \
|
||||
\
|
||||
if (result_) \
|
||||
return result_; \
|
||||
}
|
||||
|
||||
#define REFLECT_MESSAGE_DLG(hwndDlg, hwnd, msg, wParam, lParam) \
|
||||
{ \
|
||||
LRESULT result_ = PhReflectMessage(hwnd, msg, wParam, lParam); \
|
||||
\
|
||||
if (result_) \
|
||||
{ \
|
||||
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, result_); \
|
||||
return TRUE; \
|
||||
} \
|
||||
}
|
||||
|
||||
FORCEINLINE LRESULT PhReflectMessage(
|
||||
_In_ HWND Handle,
|
||||
_In_ UINT Message,
|
||||
_In_ WPARAM wParam,
|
||||
_In_ LPARAM lParam
|
||||
)
|
||||
{
|
||||
if (Message == WM_NOTIFY)
|
||||
{
|
||||
LPNMHDR header = (LPNMHDR)lParam;
|
||||
|
||||
if (header->hwndFrom == Handle)
|
||||
return SendMessage(Handle, WM_REFLECT + Message, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define PH_DEFINE_MAKE_ATOM(AtomName) \
|
||||
do { \
|
||||
static UNICODE_STRING atomName = RTL_CONSTANT_STRING(AtomName); \
|
||||
static PH_INITONCE initOnce = PH_INITONCE_INIT; \
|
||||
static RTL_ATOM atom = 0; \
|
||||
\
|
||||
if (PhBeginInitOnce(&initOnce)) \
|
||||
{ \
|
||||
NtAddAtom(atomName.Buffer, atomName.Length, &atom); \
|
||||
PhEndInitOnce(&initOnce); \
|
||||
} \
|
||||
\
|
||||
if (atom) \
|
||||
return (PWSTR)(ULONG_PTR)atom; \
|
||||
else \
|
||||
return atomName.Buffer; \
|
||||
} while (0)
|
||||
|
||||
FORCEINLINE VOID PhSetListViewStyle(
|
||||
_In_ HWND Handle,
|
||||
_In_ BOOLEAN AllowDragDrop,
|
||||
_In_ BOOLEAN ShowLabelTips
|
||||
)
|
||||
{
|
||||
ULONG style;
|
||||
|
||||
style = LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_INFOTIP;
|
||||
|
||||
if (AllowDragDrop)
|
||||
style |= LVS_EX_HEADERDRAGDROP;
|
||||
if (ShowLabelTips)
|
||||
style |= LVS_EX_LABELTIP;
|
||||
|
||||
ListView_SetExtendedListViewStyleEx(
|
||||
Handle,
|
||||
style,
|
||||
-1
|
||||
);
|
||||
}
|
||||
|
||||
PHLIBAPI
|
||||
INT PhAddListViewColumn(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT Index,
|
||||
_In_ INT DisplayIndex,
|
||||
_In_ INT SubItemIndex,
|
||||
_In_ INT Format,
|
||||
_In_ INT Width,
|
||||
_In_ PWSTR Text
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
INT PhAddListViewItem(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT Index,
|
||||
_In_ PWSTR Text,
|
||||
_In_opt_ PVOID Param
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
INT PhFindListViewItemByFlags(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT StartIndex,
|
||||
_In_ ULONG Flags
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
INT PhFindListViewItemByParam(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT StartIndex,
|
||||
_In_opt_ PVOID Param
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
LOGICAL PhGetListViewItemImageIndex(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT Index,
|
||||
_Out_ PINT ImageIndex
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
LOGICAL PhGetListViewItemParam(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT Index,
|
||||
_Out_ PVOID *Param
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhRemoveListViewItem(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT Index
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhSetListViewItemImageIndex(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT Index,
|
||||
_In_ INT ImageIndex
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhSetListViewSubItem(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ INT Index,
|
||||
_In_ INT SubItemIndex,
|
||||
_In_ PWSTR Text
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
BOOLEAN PhLoadListViewColumnSettings(
|
||||
_In_ HWND ListViewHandle,
|
||||
_In_ PPH_STRING Settings
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
PPH_STRING PhSaveListViewColumnSettings(
|
||||
_In_ HWND ListViewHandle
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
INT PhAddTabControlTab(
|
||||
_In_ HWND TabControlHandle,
|
||||
_In_ INT Index,
|
||||
_In_ PWSTR Text
|
||||
);
|
||||
|
||||
#define PhaGetDlgItemText(hwndDlg, id) \
|
||||
PH_AUTO_T(PH_STRING, PhGetWindowText(GetDlgItem(hwndDlg, id)))
|
||||
|
||||
PHLIBAPI
|
||||
PPH_STRING PhGetWindowText(
|
||||
_In_ HWND hwnd
|
||||
);
|
||||
|
||||
#define PH_GET_WINDOW_TEXT_INTERNAL 0x1
|
||||
#define PH_GET_WINDOW_TEXT_LENGTH_ONLY 0x2
|
||||
|
||||
PHLIBAPI
|
||||
ULONG PhGetWindowTextEx(
|
||||
_In_ HWND hwnd,
|
||||
_In_ ULONG Flags,
|
||||
_Out_opt_ PPH_STRING *Text
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhAddComboBoxStrings(
|
||||
_In_ HWND hWnd,
|
||||
_In_ PWSTR *Strings,
|
||||
_In_ ULONG NumberOfStrings
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
PPH_STRING PhGetComboBoxString(
|
||||
_In_ HWND hwnd,
|
||||
_In_ INT Index
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
INT PhSelectComboBoxString(
|
||||
_In_ HWND hwnd,
|
||||
_In_ PWSTR String,
|
||||
_In_ BOOLEAN Partial
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
PPH_STRING PhGetListBoxString(
|
||||
_In_ HWND hwnd,
|
||||
_In_ INT Index
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhSetStateAllListViewItems(
|
||||
_In_ HWND hWnd,
|
||||
_In_ ULONG State,
|
||||
_In_ ULONG Mask
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
PVOID PhGetSelectedListViewItemParam(
|
||||
_In_ HWND hWnd
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhGetSelectedListViewItemParams(
|
||||
_In_ HWND hWnd,
|
||||
_Out_ PVOID **Items,
|
||||
_Out_ PULONG NumberOfItems
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhSetImageListBitmap(
|
||||
_In_ HIMAGELIST ImageList,
|
||||
_In_ INT Index,
|
||||
_In_ HINSTANCE InstanceHandle,
|
||||
_In_ LPCWSTR BitmapName
|
||||
);
|
||||
|
||||
#define PH_LOAD_ICON_SHARED 0x1
|
||||
#define PH_LOAD_ICON_SIZE_SMALL 0x2
|
||||
#define PH_LOAD_ICON_SIZE_LARGE 0x4
|
||||
#define PH_LOAD_ICON_STRICT 0x8
|
||||
|
||||
PHLIBAPI
|
||||
HICON PhLoadIcon(
|
||||
_In_opt_ HINSTANCE InstanceHandle,
|
||||
_In_ PWSTR Name,
|
||||
_In_ ULONG Flags,
|
||||
_In_opt_ ULONG Width,
|
||||
_In_opt_ ULONG Height
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhGetStockApplicationIcon(
|
||||
_Out_opt_ HICON *SmallIcon,
|
||||
_Out_opt_ HICON *LargeIcon
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
HICON PhGetFileShellIcon(
|
||||
_In_opt_ PWSTR FileName,
|
||||
_In_opt_ PWSTR DefaultExtension,
|
||||
_In_ BOOLEAN LargeIcon
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhSetClipboardString(
|
||||
_In_ HWND hWnd,
|
||||
_In_ PPH_STRINGREF String
|
||||
);
|
||||
|
||||
typedef struct _DLGTEMPLATEEX
|
||||
{
|
||||
WORD dlgVer;
|
||||
WORD signature;
|
||||
DWORD helpID;
|
||||
DWORD exStyle;
|
||||
DWORD style;
|
||||
WORD cDlgItems;
|
||||
short x;
|
||||
short y;
|
||||
short cx;
|
||||
short cy;
|
||||
} DLGTEMPLATEEX, *PDLGTEMPLATEEX;
|
||||
|
||||
PHLIBAPI
|
||||
HWND PhCreateDialogFromTemplate(
|
||||
_In_ HWND Parent,
|
||||
_In_ ULONG Style,
|
||||
_In_ PVOID Instance,
|
||||
_In_ PWSTR Template,
|
||||
_In_ DLGPROC DialogProc,
|
||||
_In_ PVOID Parameter
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
BOOLEAN PhModalPropertySheet(
|
||||
_Inout_ PROPSHEETHEADER *Header
|
||||
);
|
||||
|
||||
#define PH_ANCHOR_LEFT 0x1
|
||||
#define PH_ANCHOR_TOP 0x2
|
||||
#define PH_ANCHOR_RIGHT 0x4
|
||||
#define PH_ANCHOR_BOTTOM 0x8
|
||||
#define PH_ANCHOR_ALL 0xf
|
||||
|
||||
// This interface is horrible and should be rewritten, but it works for now.
|
||||
|
||||
#define PH_LAYOUT_FORCE_INVALIDATE 0x1000 // invalidate the control when it is resized
|
||||
#define PH_LAYOUT_TAB_CONTROL 0x2000 // this is a dummy item, a hack for the tab control
|
||||
#define PH_LAYOUT_IMMEDIATE_RESIZE 0x4000 // needed for the tab control hack
|
||||
|
||||
#define PH_LAYOUT_DUMMY_MASK (PH_LAYOUT_TAB_CONTROL) // items that don't have a window handle, or don't actually get their window resized
|
||||
|
||||
typedef struct _PH_LAYOUT_ITEM
|
||||
{
|
||||
HWND Handle;
|
||||
struct _PH_LAYOUT_ITEM *ParentItem; // for rectangle calculation
|
||||
struct _PH_LAYOUT_ITEM *LayoutParentItem; // for actual resizing
|
||||
ULONG LayoutNumber;
|
||||
ULONG NumberOfChildren;
|
||||
HDWP DeferHandle;
|
||||
|
||||
RECT Rect;
|
||||
RECT OrigRect;
|
||||
RECT Margin;
|
||||
ULONG Anchor;
|
||||
} PH_LAYOUT_ITEM, *PPH_LAYOUT_ITEM;
|
||||
|
||||
typedef struct _PH_LAYOUT_MANAGER
|
||||
{
|
||||
PPH_LIST List;
|
||||
PH_LAYOUT_ITEM RootItem;
|
||||
|
||||
ULONG LayoutNumber;
|
||||
} PH_LAYOUT_MANAGER, *PPH_LAYOUT_MANAGER;
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhInitializeLayoutManager(
|
||||
_Out_ PPH_LAYOUT_MANAGER Manager,
|
||||
_In_ HWND RootWindowHandle
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhDeleteLayoutManager(
|
||||
_Inout_ PPH_LAYOUT_MANAGER Manager
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
PPH_LAYOUT_ITEM PhAddLayoutItem(
|
||||
_Inout_ PPH_LAYOUT_MANAGER Manager,
|
||||
_In_ HWND Handle,
|
||||
_In_opt_ PPH_LAYOUT_ITEM ParentItem,
|
||||
_In_ ULONG Anchor
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
PPH_LAYOUT_ITEM PhAddLayoutItemEx(
|
||||
_Inout_ PPH_LAYOUT_MANAGER Manager,
|
||||
_In_ HWND Handle,
|
||||
_In_opt_ PPH_LAYOUT_ITEM ParentItem,
|
||||
_In_ ULONG Anchor,
|
||||
_In_ RECT Margin
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID PhLayoutManagerLayout(
|
||||
_Inout_ PPH_LAYOUT_MANAGER Manager
|
||||
);
|
||||
|
||||
FORCEINLINE VOID PhResizingMinimumSize(
|
||||
_Inout_ PRECT Rect,
|
||||
_In_ WPARAM Edge,
|
||||
_In_ LONG MinimumWidth,
|
||||
_In_ LONG MinimumHeight
|
||||
)
|
||||
{
|
||||
if (Edge == WMSZ_BOTTOMRIGHT || Edge == WMSZ_RIGHT || Edge == WMSZ_TOPRIGHT)
|
||||
{
|
||||
if (Rect->right - Rect->left < MinimumWidth)
|
||||
Rect->right = Rect->left + MinimumWidth;
|
||||
}
|
||||
else if (Edge == WMSZ_BOTTOMLEFT || Edge == WMSZ_LEFT || Edge == WMSZ_TOPLEFT)
|
||||
{
|
||||
if (Rect->right - Rect->left < MinimumWidth)
|
||||
Rect->left = Rect->right - MinimumWidth;
|
||||
}
|
||||
|
||||
if (Edge == WMSZ_BOTTOMRIGHT || Edge == WMSZ_BOTTOM || Edge == WMSZ_BOTTOMLEFT)
|
||||
{
|
||||
if (Rect->bottom - Rect->top < MinimumHeight)
|
||||
Rect->bottom = Rect->top + MinimumHeight;
|
||||
}
|
||||
else if (Edge == WMSZ_TOPRIGHT || Edge == WMSZ_TOP || Edge == WMSZ_TOPLEFT)
|
||||
{
|
||||
if (Rect->bottom - Rect->top < MinimumHeight)
|
||||
Rect->top = Rect->bottom - MinimumHeight;
|
||||
}
|
||||
}
|
||||
|
||||
FORCEINLINE VOID PhCopyControlRectangle(
|
||||
_In_ HWND ParentWindowHandle,
|
||||
_In_ HWND FromControlHandle,
|
||||
_In_ HWND ToControlHandle
|
||||
)
|
||||
{
|
||||
RECT windowRect;
|
||||
|
||||
GetWindowRect(FromControlHandle, &windowRect);
|
||||
MapWindowPoints(NULL, ParentWindowHandle, (POINT *)&windowRect, 2);
|
||||
MoveWindow(ToControlHandle, windowRect.left, windowRect.top,
|
||||
windowRect.right - windowRect.left, windowRect.bottom - windowRect.top, FALSE);
|
||||
}
|
||||
|
||||
// icotobmp
|
||||
|
||||
PHLIBAPI
|
||||
HBITMAP
|
||||
NTAPI
|
||||
PhIconToBitmap(
|
||||
_In_ HICON Icon,
|
||||
_In_ ULONG Width,
|
||||
_In_ ULONG Height
|
||||
);
|
||||
|
||||
// extlv
|
||||
|
||||
#define PH_ALIGN_CENTER 0x0
|
||||
#define PH_ALIGN_LEFT 0x1
|
||||
#define PH_ALIGN_RIGHT 0x2
|
||||
#define PH_ALIGN_TOP 0x4
|
||||
#define PH_ALIGN_BOTTOM 0x8
|
||||
|
||||
typedef enum _PH_ITEM_STATE
|
||||
{
|
||||
// The item is normal. Use the ItemColorFunction to determine the color of the item.
|
||||
NormalItemState = 0,
|
||||
// The item is new. On the next tick, change the state to NormalItemState. When an item is in
|
||||
// this state, highlight it in NewColor.
|
||||
NewItemState,
|
||||
// The item is being removed. On the next tick, delete the item. When an item is in this state,
|
||||
// highlight it in RemovingColor.
|
||||
RemovingItemState
|
||||
} PH_ITEM_STATE;
|
||||
|
||||
typedef COLORREF (NTAPI *PPH_EXTLV_GET_ITEM_COLOR)(
|
||||
_In_ INT Index,
|
||||
_In_ PVOID Param,
|
||||
_In_opt_ PVOID Context
|
||||
);
|
||||
|
||||
typedef HFONT (NTAPI *PPH_EXTLV_GET_ITEM_FONT)(
|
||||
_In_ INT Index,
|
||||
_In_ PVOID Param,
|
||||
_In_opt_ PVOID Context
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID
|
||||
NTAPI
|
||||
PhSetExtendedListView(
|
||||
_In_ HWND hWnd
|
||||
);
|
||||
|
||||
PHLIBAPI
|
||||
VOID
|
||||
NTAPI
|
||||
PhSetHeaderSortIcon(
|
||||
_In_ HWND hwnd,
|
||||
_In_ INT Index,
|
||||
_In_ PH_SORT_ORDER Order
|
||||
);
|
||||
|
||||
// next 1122
|
||||
|
||||
#define ELVM_ADDFALLBACKCOLUMN (WM_APP + 1106)
|
||||
#define ELVM_ADDFALLBACKCOLUMNS (WM_APP + 1109)
|
||||
#define ELVM_RESERVED5 (WM_APP + 1120)
|
||||
#define ELVM_INIT (WM_APP + 1102)
|
||||
#define ELVM_SETCOLUMNWIDTH (WM_APP + 1121)
|
||||
#define ELVM_SETCOMPAREFUNCTION (WM_APP + 1104)
|
||||
#define ELVM_SETCONTEXT (WM_APP + 1103)
|
||||
#define ELVM_SETCURSOR (WM_APP + 1114)
|
||||
#define ELVM_RESERVED4 (WM_APP + 1118)
|
||||
#define ELVM_SETITEMCOLORFUNCTION (WM_APP + 1111)
|
||||
#define ELVM_SETITEMFONTFUNCTION (WM_APP + 1117)
|
||||
#define ELVM_RESERVED1 (WM_APP + 1112)
|
||||
#define ELVM_SETREDRAW (WM_APP + 1116)
|
||||
#define ELVM_RESERVED2 (WM_APP + 1113)
|
||||
#define ELVM_SETSORT (WM_APP + 1108)
|
||||
#define ELVM_SETSORTFAST (WM_APP + 1119)
|
||||
#define ELVM_RESERVED0 (WM_APP + 1110)
|
||||
#define ELVM_SETTRISTATE (WM_APP + 1107)
|
||||
#define ELVM_SETTRISTATECOMPAREFUNCTION (WM_APP + 1105)
|
||||
#define ELVM_SORTITEMS (WM_APP + 1101)
|
||||
#define ELVM_RESERVED3 (WM_APP + 1115)
|
||||
|
||||
#define ExtendedListView_AddFallbackColumn(hWnd, Column) \
|
||||
SendMessage((hWnd), ELVM_ADDFALLBACKCOLUMN, (WPARAM)(Column), 0)
|
||||
#define ExtendedListView_AddFallbackColumns(hWnd, NumberOfColumns, Columns) \
|
||||
SendMessage((hWnd), ELVM_ADDFALLBACKCOLUMNS, (WPARAM)(NumberOfColumns), (LPARAM)(Columns))
|
||||
#define ExtendedListView_Init(hWnd) \
|
||||
SendMessage((hWnd), ELVM_INIT, 0, 0)
|
||||
#define ExtendedListView_SetColumnWidth(hWnd, Column, Width) \
|
||||
SendMessage((hWnd), ELVM_SETCOLUMNWIDTH, (WPARAM)(Column), (LPARAM)(Width))
|
||||
#define ExtendedListView_SetCompareFunction(hWnd, Column, CompareFunction) \
|
||||
SendMessage((hWnd), ELVM_SETCOMPAREFUNCTION, (WPARAM)(Column), (LPARAM)(CompareFunction))
|
||||
#define ExtendedListView_SetContext(hWnd, Context) \
|
||||
SendMessage((hWnd), ELVM_SETCONTEXT, 0, (LPARAM)(Context))
|
||||
#define ExtendedListView_SetCursor(hWnd, Cursor) \
|
||||
SendMessage((hWnd), ELVM_SETCURSOR, 0, (LPARAM)(Cursor))
|
||||
#define ExtendedListView_SetItemColorFunction(hWnd, ItemColorFunction) \
|
||||
SendMessage((hWnd), ELVM_SETITEMCOLORFUNCTION, 0, (LPARAM)(ItemColorFunction))
|
||||
#define ExtendedListView_SetItemFontFunction(hWnd, ItemFontFunction) \
|
||||
SendMessage((hWnd), ELVM_SETITEMFONTFUNCTION, 0, (LPARAM)(ItemFontFunction))
|
||||
#define ExtendedListView_SetRedraw(hWnd, Redraw) \
|
||||
SendMessage((hWnd), ELVM_SETREDRAW, (WPARAM)(Redraw), 0)
|
||||
#define ExtendedListView_SetSort(hWnd, Column, Order) \
|
||||
SendMessage((hWnd), ELVM_SETSORT, (WPARAM)(Column), (LPARAM)(Order))
|
||||
#define ExtendedListView_SetSortFast(hWnd, Fast) \
|
||||
SendMessage((hWnd), ELVM_SETSORTFAST, (WPARAM)(Fast), 0)
|
||||
#define ExtendedListView_SetTriState(hWnd, TriState) \
|
||||
SendMessage((hWnd), ELVM_SETTRISTATE, (WPARAM)(TriState), 0)
|
||||
#define ExtendedListView_SetTriStateCompareFunction(hWnd, CompareFunction) \
|
||||
SendMessage((hWnd), ELVM_SETTRISTATECOMPAREFUNCTION, 0, (LPARAM)(CompareFunction))
|
||||
#define ExtendedListView_SortItems(hWnd) \
|
||||
SendMessage((hWnd), ELVM_SORTITEMS, 0, 0)
|
||||
|
||||
#define ELVSCW_AUTOSIZE (-1)
|
||||
#define ELVSCW_AUTOSIZE_USEHEADER (-2)
|
||||
#define ELVSCW_AUTOSIZE_REMAININGSPACE (-3)
|
||||
|
||||
/**
|
||||
* Gets the brightness of a color.
|
||||
*
|
||||
* \param Color The color.
|
||||
*
|
||||
* \return A value ranging from 0 to 255, indicating the brightness of the color.
|
||||
*/
|
||||
FORCEINLINE
|
||||
ULONG
|
||||
PhGetColorBrightness(
|
||||
_In_ COLORREF Color
|
||||
)
|
||||
{
|
||||
ULONG r = Color & 0xff;
|
||||
ULONG g = (Color >> 8) & 0xff;
|
||||
ULONG b = (Color >> 16) & 0xff;
|
||||
ULONG min;
|
||||
ULONG max;
|
||||
|
||||
min = r;
|
||||
if (g < min) min = g;
|
||||
if (b < min) min = b;
|
||||
|
||||
max = r;
|
||||
if (g > max) max = g;
|
||||
if (b > max) max = b;
|
||||
|
||||
return (min + max) / 2;
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
COLORREF
|
||||
PhHalveColorBrightness(
|
||||
_In_ COLORREF Color
|
||||
)
|
||||
{
|
||||
/*return RGB(
|
||||
(UCHAR)Color / 2,
|
||||
(UCHAR)(Color >> 8) / 2,
|
||||
(UCHAR)(Color >> 16) / 2
|
||||
);*/
|
||||
// Since all targets are little-endian, we can use the following method.
|
||||
*((PUCHAR)&Color) /= 2;
|
||||
*((PUCHAR)&Color + 1) /= 2;
|
||||
*((PUCHAR)&Color + 2) /= 2;
|
||||
|
||||
return Color;
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
COLORREF
|
||||
PhMakeColorBrighter(
|
||||
_In_ COLORREF Color,
|
||||
_In_ UCHAR Increment
|
||||
)
|
||||
{
|
||||
UCHAR r;
|
||||
UCHAR g;
|
||||
UCHAR b;
|
||||
|
||||
r = (UCHAR)Color;
|
||||
g = (UCHAR)(Color >> 8);
|
||||
b = (UCHAR)(Color >> 16);
|
||||
|
||||
if (r <= 255 - Increment)
|
||||
r += Increment;
|
||||
else
|
||||
r = 255;
|
||||
|
||||
if (g <= 255 - Increment)
|
||||
g += Increment;
|
||||
else
|
||||
g = 255;
|
||||
|
||||
if (b <= 255 - Increment)
|
||||
b += Increment;
|
||||
else
|
||||
b = 255;
|
||||
|
||||
return RGB(r, g, b);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user