mirror of
https://codeberg.org/armin/justasample.git
synced 2026-09-01 04:10:48 +02:00
1470 lines
39 KiB
C
1470 lines
39 KiB
C
/* Cockos SWELL (Simple/Small Win32 Emulation Layer for Linux/OSX)
|
|
Copyright (C) 2006 and later, Cockos, Inc.
|
|
|
|
This software is provided 'as-is', without any express or implied
|
|
warranty. In no event will the authors be held liable for any damages
|
|
arising from the use of this software.
|
|
|
|
Permission is granted to anyone to use this software for any purpose,
|
|
including commercial applications, and to alter it and redistribute it
|
|
freely, subject to the following restrictions:
|
|
|
|
1. The origin of this software must not be misrepresented; you must not
|
|
claim that you wrote the original software. If you use this software
|
|
in a product, an acknowledgment in the product documentation would be
|
|
appreciated but is not required.
|
|
2. Altered source versions must be plainly marked as such, and must not be
|
|
misrepresented as being the original software.
|
|
3. This notice may not be removed or altered from any source distribution.
|
|
|
|
|
|
SWELL provides _EXTREMELY BASIC_ win32 wrapping for OS X and maybe other platforms.
|
|
|
|
*/
|
|
|
|
#ifndef _WDL_SWELL_H_TYPES_DEFINED_
|
|
#define _WDL_SWELL_H_TYPES_DEFINED_
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <dlfcn.h>
|
|
#include <ctype.h>
|
|
|
|
#if defined(__cplusplus)
|
|
#include <cstddef>
|
|
#endif
|
|
|
|
#include <stdint.h>
|
|
typedef intptr_t INT_PTR, *PINT_PTR, LONG_PTR, *PLONG_PTR;
|
|
typedef uintptr_t UINT_PTR, *PUINT_PTR, ULONG_PTR, *PULONG_PTR, DWORD_PTR, *PDWORD_PTR;
|
|
|
|
#ifndef FALSE
|
|
#define FALSE 0
|
|
#endif
|
|
#ifndef TRUE
|
|
#define TRUE 1
|
|
#endif
|
|
|
|
#ifndef S_OK
|
|
#define S_OK 0
|
|
#endif
|
|
#ifndef E_FAIL
|
|
#define E_FAIL (-1)
|
|
#endif
|
|
|
|
|
|
#ifdef SWELL_USE_WIN32_RGB
|
|
|
|
// define SWELL_USE_WIN32_RGB project-wide if you want the RGB byte ordering
|
|
// of RGB(), GetRValue(), etc, to match win32
|
|
|
|
#define RGB(r,g,b) ((((BYTE)(b))<<16)|(((BYTE)(g))<<8)|((BYTE)(r)))
|
|
#define GetBValue(x) (((x)>>16)&0xff)
|
|
#define GetGValue(x) (((x)>>8)&0xff)
|
|
#define GetRValue(x) ((x)&0xff)
|
|
|
|
#else
|
|
|
|
// the byte ordering of RGB() etc is different than on win32
|
|
#define RGB(r,g,b) ((((BYTE)(r))<<16)|(((BYTE)(g))<<8)|((BYTE)(b)))
|
|
#define GetRValue(x) (((x)>>16)&0xff)
|
|
#define GetGValue(x) (((x)>>8)&0xff)
|
|
#define GetBValue(x) ((x)&0xff)
|
|
|
|
#define SWELL_BROKEN_RGB_ORDER
|
|
|
|
#endif
|
|
|
|
// basic platform compat defines
|
|
#ifndef stricmp
|
|
#define stricmp(x,y) strcasecmp(x,y)
|
|
#endif
|
|
#ifndef strnicmp
|
|
#define strnicmp(x,y,z) strncasecmp(x,y,z)
|
|
#endif
|
|
|
|
#define DeleteFile(x) (!unlink(x))
|
|
#define MoveFile(x,y) (!rename(x,y))
|
|
#define GetCurrentDirectory(sz,buf) (!getcwd(buf,sz))
|
|
#define SetCurrentDirectory(buf) (!chdir(buf))
|
|
#define CreateDirectory(x,y) (!mkdir((x),0755))
|
|
|
|
#ifndef wsprintf
|
|
#define wsprintf sprintf
|
|
#endif
|
|
|
|
#ifndef LOWORD
|
|
#define MAKEWORD(a, b) ((unsigned short)(((BYTE)(a)) | ((WORD)((BYTE)(b))) << 8))
|
|
#define MAKELONG(a, b) ((int)(((unsigned short)(a)) | ((DWORD)((unsigned short)(b))) << 16))
|
|
#define MAKEWPARAM(l, h) (WPARAM)MAKELONG(l, h)
|
|
#define MAKELPARAM(l, h) (LPARAM)MAKELONG(l, h)
|
|
#define MAKELRESULT(l, h) (LRESULT)MAKELONG(l, h)
|
|
#define LOWORD(l) ((unsigned short)(l))
|
|
#define HIWORD(l) ((unsigned short)(((unsigned int)(l) >> 16) & 0xFFFF))
|
|
#define LOBYTE(w) ((BYTE)(w))
|
|
#define HIBYTE(w) ((BYTE)(((unsigned short)(w) >> 8) & 0xFF))
|
|
#endif
|
|
|
|
#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
|
|
#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
|
|
|
|
#define UNREFERENCED_PARAMETER(P) (P)
|
|
#define _T(T) T
|
|
|
|
#define CallWindowProc(A,B,C,D,E) ((WNDPROC)A)(B,C,D,E)
|
|
#define OffsetRect WinOffsetRect //to avoid OSX's OffsetRect function
|
|
#define SetRect WinSetRect //to avoid OSX's SetRect function
|
|
#define UnionRect WinUnionRect
|
|
#define IntersectRect WinIntersectRect
|
|
|
|
|
|
#define MAX_PATH 1024
|
|
|
|
|
|
#if !defined(max) && !defined(WDL_NO_DEFINE_MINMAX) && !defined(NOMINMAX)
|
|
#define max(x,y) ((x)<(y)?(y):(x))
|
|
#define min(x,y) ((x)<(y)?(x):(y))
|
|
#endif
|
|
|
|
// SWELLAPP stuff (swellappmain.mm)
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
INT_PTR SWELLAppMain(int msg, INT_PTR parm1, INT_PTR parm2); // to be implemented by app (if using swellappmain.mm)
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
|
|
#if defined(__APPLE__) && !defined(SWELL_USE_OBJC_BOOL)
|
|
#include <AvailabilityMacros.h>
|
|
// this may be safe to always use, but for now only use when using a very very modern SDK
|
|
#ifdef MAC_OS_X_VERSION_10_16
|
|
#define SWELL_USE_OBJC_BOOL
|
|
#endif
|
|
#endif
|
|
|
|
// basic types
|
|
#ifdef SWELL_USE_OBJC_BOOL
|
|
#include <objc/objc.h>
|
|
#ifndef __OBJC__
|
|
#undef NO
|
|
#undef YES
|
|
#undef Nil
|
|
#undef nil
|
|
#endif
|
|
#else
|
|
typedef signed char BOOL;
|
|
#endif
|
|
typedef unsigned char BYTE;
|
|
typedef unsigned short WORD;
|
|
typedef unsigned int DWORD;
|
|
typedef DWORD COLORREF;
|
|
typedef unsigned int UINT;
|
|
typedef int INT;
|
|
|
|
typedef ULONG_PTR WPARAM;
|
|
typedef LONG_PTR LPARAM;
|
|
typedef LONG_PTR LRESULT;
|
|
|
|
|
|
typedef void *LPVOID, *PVOID;
|
|
|
|
#if defined(__APPLE__) && !defined(__LP64__)
|
|
typedef signed long HRESULT;
|
|
typedef signed long LONG;
|
|
typedef unsigned long ULONG;
|
|
#else
|
|
typedef signed int HRESULT;
|
|
typedef signed int LONG;
|
|
typedef unsigned int ULONG;
|
|
#endif
|
|
|
|
typedef short SHORT;
|
|
typedef int *LPINT;
|
|
typedef char CHAR;
|
|
typedef char *LPSTR, *LPTSTR;
|
|
typedef const char *LPCSTR, *LPCTSTR;
|
|
|
|
#define __int64 long long // define rather than typedef, for unsigned __int64 support
|
|
|
|
typedef unsigned __int64 ULONGLONG;
|
|
|
|
typedef union {
|
|
unsigned long long QuadPart;
|
|
struct {
|
|
#ifdef __ppc__
|
|
DWORD HighPart;
|
|
DWORD LowPart;
|
|
#else
|
|
DWORD LowPart;
|
|
DWORD HighPart;
|
|
#endif
|
|
};
|
|
} ULARGE_INTEGER;
|
|
|
|
|
|
typedef struct HWND__ *HWND;
|
|
typedef struct HMENU__ *HMENU;
|
|
typedef void *HANDLE, *HINSTANCE, *HDROP;
|
|
typedef void *HGLOBAL;
|
|
|
|
typedef void (*TIMERPROC)(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);
|
|
|
|
typedef struct
|
|
{
|
|
LONG x,y;
|
|
} POINT, *LPPOINT;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
SHORT x;
|
|
SHORT y;
|
|
} POINTS;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
LONG left,top, right, bottom;
|
|
} RECT, *LPRECT;
|
|
|
|
|
|
typedef struct {
|
|
unsigned char fVirt;
|
|
unsigned short key,cmd;
|
|
} ACCEL, *LPACCEL;
|
|
|
|
|
|
typedef struct {
|
|
DWORD dwLowDateTime;
|
|
DWORD dwHighDateTime;
|
|
} FILETIME;
|
|
|
|
typedef struct _GUID {
|
|
unsigned int Data1;
|
|
unsigned short Data2;
|
|
unsigned short Data3;
|
|
unsigned char Data4[8];
|
|
} GUID;
|
|
|
|
typedef struct {
|
|
HWND hwnd;
|
|
UINT message;
|
|
WPARAM wParam;
|
|
LPARAM lParam;
|
|
DWORD time;
|
|
POINT pt;
|
|
} MSG, *LPMSG;
|
|
|
|
typedef struct HDC__ *HDC;
|
|
typedef struct HCURSOR__ *HCURSOR;
|
|
typedef struct HRGN__ *HRGN;
|
|
|
|
typedef struct HGDIOBJ__ *HBITMAP;
|
|
typedef struct HGDIOBJ__ *HICON;
|
|
typedef struct HGDIOBJ__ *HGDIOBJ;
|
|
typedef struct HGDIOBJ__ *HBRUSH;
|
|
typedef struct HGDIOBJ__ *HPEN;
|
|
typedef struct HGDIOBJ__ *HFONT;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
HWND hwndFrom;
|
|
UINT_PTR idFrom;
|
|
UINT code;
|
|
} NMHDR, *LPNMHDR;
|
|
|
|
|
|
typedef struct {
|
|
NMHDR hdr;
|
|
DWORD_PTR dwItemSpec;
|
|
DWORD_PTR dwItemData;
|
|
POINT pt;
|
|
DWORD dwHitInfo;
|
|
} NMMOUSE, *LPNMMOUSE;
|
|
typedef NMMOUSE NMCLICK;
|
|
typedef LPNMMOUSE LPNMCLICK;
|
|
|
|
typedef struct
|
|
{
|
|
int mask, fmt,cx;
|
|
char *pszText;
|
|
int cchTextMax, iSubItem;
|
|
} LVCOLUMN;
|
|
typedef struct
|
|
{
|
|
int mask, iItem, iSubItem, state, stateMask;
|
|
char *pszText;
|
|
int cchTextMax, iImage;
|
|
LPARAM lParam;
|
|
} LVITEM;
|
|
|
|
typedef int (*PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
|
|
|
|
typedef struct HIMAGELIST__ *HIMAGELIST;
|
|
|
|
typedef struct
|
|
{
|
|
POINT pt;
|
|
UINT flags;
|
|
int iItem;
|
|
int iSubItem; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
|
|
} LVHITTESTINFO, *LPLVHITTESTINFO;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
NMHDR hdr;
|
|
int iItem;
|
|
int iSubItem;
|
|
UINT uNewState;
|
|
UINT uOldState;
|
|
UINT uChanged;
|
|
POINT ptAction;
|
|
LPARAM lParam;
|
|
} NMLISTVIEW, *LPNMLISTVIEW;
|
|
|
|
typedef struct
|
|
{
|
|
NMHDR hdr;
|
|
LVITEM item;
|
|
} NMLVDISPINFO, *LPNMLVDISPINFO;
|
|
|
|
typedef struct
|
|
{
|
|
UINT mask;
|
|
int cxy;
|
|
char* pszText;
|
|
HBITMAP hbm;
|
|
int cchTextMax;
|
|
int fmt;
|
|
LPARAM lParam;
|
|
int iImage;
|
|
int iOrder;
|
|
UINT type;
|
|
void *pvFilter;
|
|
UINT state;
|
|
} HDITEM, *LPHDITEM;
|
|
|
|
typedef struct TCITEM
|
|
{
|
|
UINT mask;
|
|
DWORD dwState;
|
|
DWORD dwStateMask;
|
|
char *pszText;
|
|
int cchTextMax;
|
|
int iImage;
|
|
|
|
LPARAM lParam;
|
|
} TCITEM, *LPTCITEM;
|
|
|
|
typedef struct tagDRAWITEMSTRUCT {
|
|
UINT CtlType;
|
|
UINT CtlID;
|
|
UINT itemID;
|
|
UINT itemAction;
|
|
UINT itemState;
|
|
HWND hwndItem;
|
|
HDC hDC;
|
|
RECT rcItem;
|
|
DWORD_PTR itemData;
|
|
} DRAWITEMSTRUCT, *PDRAWITEMSTRUCT, *LPDRAWITEMSTRUCT;
|
|
|
|
typedef struct tagBITMAP {
|
|
LONG bmWidth;
|
|
LONG bmHeight;
|
|
LONG bmWidthBytes;
|
|
WORD bmPlanes;
|
|
WORD bmBitsPixel;
|
|
LPVOID bmBits;
|
|
} BITMAP, *PBITMAP, *LPBITMAP;
|
|
#define ODT_MENU 1
|
|
#define ODT_LISTBOX 2
|
|
#define ODT_COMBOBOX 3
|
|
#define ODT_BUTTON 4
|
|
|
|
#define ODS_SELECTED 0x0001
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
{
|
|
DWORD cbSize;
|
|
HWND hWnd;
|
|
UINT uID;
|
|
UINT uFlags;
|
|
UINT uCallbackMessage;
|
|
HICON hIcon;
|
|
CHAR szTip[64];
|
|
} NOTIFYICONDATA,*PNOTIFYICONDATA, *LPNOTIFYICONDATA;
|
|
|
|
|
|
#define NIM_ADD 0x00000000
|
|
#define NIM_MODIFY 0x00000001
|
|
#define NIM_DELETE 0x00000002
|
|
|
|
#define NIF_MESSAGE 0x00000001
|
|
#define NIF_ICON 0x00000002
|
|
#define NIF_TIP 0x00000004
|
|
|
|
|
|
|
|
typedef struct HTREEITEM__ *HTREEITEM;
|
|
|
|
#define TVIF_TEXT 0x0001
|
|
#define TVIF_IMAGE 0x0002
|
|
#define TVIF_PARAM 0x0004
|
|
#define TVIF_STATE 0x0008
|
|
#define TVIF_HANDLE 0x0010
|
|
#define TVIF_SELECTEDIMAGE 0x0020
|
|
#define TVIF_CHILDREN 0x0040
|
|
|
|
#define TVIS_SELECTED 0x0002
|
|
#define TVIS_DROPHILITED 0x0008
|
|
#define TVIS_BOLD 0x0010
|
|
#define TVIS_EXPANDED 0x0020
|
|
|
|
#define TVE_COLLAPSE 0x0001
|
|
#define TVE_EXPAND 0x0002
|
|
#define TVE_TOGGLE 0x0003
|
|
|
|
#define TVN_FIRST (0U-400U) // treeview
|
|
#define TVN_SELCHANGED (TVN_FIRST-2)
|
|
#define TVN_ITEMEXPANDING (TVN_FIRST-5)
|
|
|
|
// swell-extension: WM_MOUSEMOVE set via capture in TVN_BEGINDRAG can return:
|
|
// -1 = drag not possible
|
|
// -2 = destination at end of list
|
|
// (HTREEITEM) = will end up before this item
|
|
#define TVN_BEGINDRAG (TVN_FIRST-7)
|
|
|
|
#define TVI_ROOT ((HTREEITEM)0xFFFF0000)
|
|
#define TVI_FIRST ((HTREEITEM)0xFFFF0001)
|
|
#define TVI_LAST ((HTREEITEM)0xFFFF0002)
|
|
#define TVI_SORT ((HTREEITEM)0xFFFF0003)
|
|
|
|
#define TVHT_NOWHERE 0x0001
|
|
#define TVHT_ONITEMICON 0x0002
|
|
#define TVHT_ONITEMLABEL 0x0004
|
|
#define TVHT_ONITEM (TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON)
|
|
#define TVHT_ONITEMINDENT 0x0008
|
|
#define TVHT_ONITEMBUTTON 0x0010
|
|
#define TVHT_ONITEMRIGHT 0x0020
|
|
#define TVHT_ONITEMSTATEICON 0x0040
|
|
|
|
#define TVHT_ABOVE 0x0100
|
|
#define TVHT_BELOW 0x0200
|
|
#define TVHT_TORIGHT 0x0400
|
|
#define TVHT_TOLEFT 0x0800
|
|
|
|
typedef struct {
|
|
UINT mask;
|
|
HTREEITEM hItem;
|
|
UINT state;
|
|
UINT stateMask;
|
|
char *pszText;
|
|
int cchTextMax;
|
|
int iImage;
|
|
int iSelectedImage;
|
|
int cChildren;
|
|
LPARAM lParam;
|
|
} TVITEM, TV_ITEM, *LPTVITEM, *LPTV_ITEM;
|
|
|
|
typedef struct {
|
|
HTREEITEM hParent;
|
|
HTREEITEM hInsertAfter;
|
|
TVITEM item;
|
|
} TVINSERTSTRUCT, *LPTVINSERTSTRUCT, TV_INSERTSTRUCT, *LPTV_INSERTSTRUCT;
|
|
|
|
typedef struct {
|
|
POINT pt;
|
|
UINT flags;
|
|
HTREEITEM hItem;
|
|
} TVHITTESTINFO, *LPTVHITTESTINFO;
|
|
|
|
typedef struct {
|
|
NMHDR hdr;
|
|
UINT action;
|
|
TVITEM itemOld;
|
|
TVITEM itemNew;
|
|
POINT ptDrag;
|
|
} NMTREEVIEW, *LPNMTREEVIEW;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
unsigned int cbSize, fMask, fType, fState, wID;
|
|
HMENU hSubMenu;
|
|
HICON hbmpChecked,hbmpUnchecked;
|
|
DWORD_PTR dwItemData;
|
|
char *dwTypeData;
|
|
int cch;
|
|
HBITMAP hbmpItem;
|
|
} MENUITEMINFO;
|
|
|
|
#define SetMenuDefaultItem(a,b,c) do { if ((a)||(b)||(c)) { } } while(0)
|
|
|
|
typedef struct {
|
|
POINT ptReserved, ptMaxSize, ptMaxPosition, ptMinTrackSize, ptMaxTrackSize;
|
|
} MINMAXINFO, *LPMINMAXINFO;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
int lfHeight, lfWidth, lfEscapement,lfOrientation, lfWeight;
|
|
char lfItalic, lfUnderline, lfStrikeOut, lfCharSet, lfOutPrecision, lfClipPrecision,
|
|
lfQuality, lfPitchAndFamily;
|
|
char lfFaceName[32];
|
|
} LOGFONT;
|
|
typedef struct
|
|
{
|
|
LONG tmHeight;
|
|
LONG tmAscent;
|
|
LONG tmDescent;
|
|
LONG tmInternalLeading;
|
|
LONG tmAveCharWidth;
|
|
// todo: implement rest
|
|
} TEXTMETRIC;
|
|
|
|
typedef struct {
|
|
HDC hdc;
|
|
BOOL fErase;
|
|
RECT rcPaint;
|
|
} PAINTSTRUCT;
|
|
|
|
typedef struct
|
|
{
|
|
UINT cbSize;
|
|
UINT fMask;
|
|
int nMin;
|
|
int nMax;
|
|
UINT nPage;
|
|
int nPos;
|
|
int nTrackPos;
|
|
} SCROLLINFO, *LPSCROLLINFO;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD styleOld;
|
|
DWORD styleNew;
|
|
} STYLESTRUCT, *LPSTYLESTRUCT;
|
|
|
|
typedef struct _DROPFILES {
|
|
DWORD pFiles; // offset of file list
|
|
POINT pt; // drop point (client coords)
|
|
BOOL fNC; // is it on NonClient area
|
|
// and pt is in screen coords
|
|
BOOL fWide; // WIDE character switch
|
|
} DROPFILES, *LPDROPFILES;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
HWND hwnd;
|
|
HWND hwndInsertAfter;
|
|
int x;
|
|
int y;
|
|
int cx;
|
|
int cy;
|
|
UINT flags;
|
|
} WINDOWPOS, *LPWINDOWPOS, *PWINDOWPOS;
|
|
|
|
typedef struct
|
|
{
|
|
RECT rgrc[3];
|
|
PWINDOWPOS lppos;
|
|
} NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
|
|
|
|
|
|
|
|
typedef INT_PTR (*DLGPROC)(HWND, UINT, WPARAM, LPARAM);
|
|
typedef LRESULT (*WNDPROC)(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
|
|
|
|
#define GF_BEGIN 1
|
|
#define GF_INERTIA 2
|
|
#define GF_END 4
|
|
|
|
#define GID_BEGIN 1
|
|
#define GID_END 2
|
|
#define GID_ZOOM 3
|
|
#define GID_PAN 4
|
|
#define GID_ROTATE 5
|
|
#define GID_TWOFINGERTAP 6
|
|
#define GID_ROLLOVER 7
|
|
|
|
typedef struct tagGESTUREINFO
|
|
{
|
|
UINT cbSize;
|
|
DWORD dwFlags;
|
|
DWORD dwID;
|
|
HWND hwndTarget;
|
|
POINTS ptsLocation;
|
|
DWORD dwInstanceID;
|
|
DWORD dwSequenceID;
|
|
ULONGLONG ullArguments;
|
|
UINT cbExtraArgs;
|
|
} GESTUREINFO;
|
|
|
|
// not using this stuff yet
|
|
#define GC_PAN 1
|
|
#define GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 2
|
|
#define GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 4
|
|
|
|
typedef struct tagGESTURECONFIG
|
|
{
|
|
DWORD dwID;
|
|
DWORD dwWant;
|
|
DWORD dwBlock;
|
|
} GESTURECONFIG;
|
|
|
|
|
|
|
|
#ifndef WINAPI
|
|
#define WINAPI
|
|
#endif
|
|
|
|
#ifndef CALLBACK
|
|
#define CALLBACK
|
|
#endif
|
|
|
|
|
|
typedef BOOL (*PROPENUMPROCEX)(HWND hwnd, const char *lpszString, HANDLE hData, LPARAM lParam);
|
|
|
|
// swell specific type
|
|
typedef HWND (*SWELL_ControlCreatorProc)(HWND parent, const char *cname, int idx, const char *classname, int style, int x, int y, int w, int h);
|
|
|
|
#define DLL_PROCESS_DETACH 0
|
|
#define DLL_PROCESS_ATTACH 1
|
|
|
|
// if the user implements this (and links with swell-modstub[-generic], this will get called for DLL_PROCESS_[AT|DE]TACH
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
__attribute__ ((visibility ("default"))) BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved);
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
/*
|
|
** win32 specific constants
|
|
*/
|
|
#define MB_OK 0
|
|
#define MB_OKCANCEL 1
|
|
#define MB_ABORTRETRYIGNORE 2
|
|
#define MB_YESNOCANCEL 3
|
|
#define MB_YESNO 4
|
|
#define MB_RETRYCANCEL 5
|
|
|
|
#define MB_DEFBUTTON1 0
|
|
#define MB_DEFBUTTON2 0x00000100
|
|
#define MB_DEFBUTTON3 0x00000200
|
|
|
|
#define MB_ICONERROR 0
|
|
#define MB_ICONSTOP 0
|
|
#define MB_ICONINFORMATION 0
|
|
#define MB_ICONWARNING 0
|
|
#define MB_ICONQUESTION 0
|
|
#define MB_TOPMOST 0
|
|
#define MB_ICONEXCLAMATION 0
|
|
|
|
#define IDOK 1
|
|
#define IDCANCEL 2
|
|
#define IDABORT 3
|
|
#define IDRETRY 4
|
|
#define IDIGNORE 5
|
|
#define IDYES 6
|
|
#define IDNO 7
|
|
|
|
#define GW_HWNDFIRST 0
|
|
#define GW_HWNDLAST 1
|
|
#define GW_HWNDNEXT 2
|
|
#define GW_HWNDPREV 3
|
|
#define GW_OWNER 4
|
|
#define GW_CHILD 5
|
|
|
|
#define GWL_HWNDPARENT (-25)
|
|
#define GWL_USERDATA (-21)
|
|
#define GWL_ID (-12)
|
|
#define GWL_STYLE (-16) // only supported for BS_ for now I think
|
|
#define GWL_EXSTYLE (-20)
|
|
#define GWL_WNDPROC (-4)
|
|
#define DWL_DLGPROC (-8)
|
|
|
|
#define SWELL_NOT_WS_VISIBLE ((int)0x80000000)
|
|
// oops these don't match real windows
|
|
#define WS_CHILDWINDOW (WS_CHILD)
|
|
#define WS_CHILD 0x40000000L
|
|
#define WS_DISABLED 0x08000000L
|
|
#define WS_CLIPSIBLINGS 0x04000000L
|
|
#define WS_VISIBLE 0x02000000L // only used by GetWindowLong(GWL_STYLE) -- not settable
|
|
#define WS_CAPTION 0x00C00000L
|
|
#define WS_VSCROLL 0x00200000L
|
|
#define WS_HSCROLL 0x00100000L
|
|
#define WS_SYSMENU 0x00080000L
|
|
#define WS_THICKFRAME 0x00040000L
|
|
#define WS_GROUP 0x00020000L
|
|
#define WS_TABSTOP 0x00010000L
|
|
|
|
#define TVS_DISABLEDRAGDROP 0x10
|
|
|
|
#define WS_BORDER 0 // ignored for now
|
|
|
|
#define WM_CTLCOLORMSGBOX 0x0132
|
|
#define WM_CTLCOLOREDIT 0x0133
|
|
#define WM_CTLCOLORLISTBOX 0x0134
|
|
#define WM_CTLCOLORBTN 0x0135
|
|
#define WM_CTLCOLORDLG 0x0136
|
|
#define WM_CTLCOLORSCROLLBAR 0x0137
|
|
#define WM_CTLCOLORSTATIC 0x0138
|
|
|
|
#define CB_ADDSTRING 0x0143
|
|
#define CB_DELETESTRING 0x0144
|
|
#define CB_GETCOUNT 0x0146
|
|
#define CB_GETCURSEL 0x0147
|
|
#define CB_GETLBTEXT 0x0148
|
|
#define CB_GETLBTEXTLEN 0x0149
|
|
#define CB_INSERTSTRING 0x014A
|
|
#define CB_RESETCONTENT 0x014B
|
|
#define CB_FINDSTRING 0x014C
|
|
#define CB_SETCURSEL 0x014E
|
|
#define CB_GETITEMDATA 0x0150
|
|
#define CB_SETITEMDATA 0x0151
|
|
#define CB_FINDSTRINGEXACT 0x0158
|
|
#define CB_INITSTORAGE 0x0161
|
|
|
|
#define LB_ADDSTRING 0x0180 // oops these don't all match real windows, todo fix (maybe)
|
|
#define LB_INSERTSTRING 0x0181
|
|
#define LB_DELETESTRING 0x0182
|
|
#define LB_GETTEXT 0x0183
|
|
#define LB_RESETCONTENT 0x0184
|
|
#define LB_SETSEL 0x0185
|
|
#define LB_SETCURSEL 0x0186
|
|
#define LB_GETSEL 0x0187
|
|
#define LB_GETCURSEL 0x0188
|
|
#define LB_GETTEXTLEN 0x018A
|
|
#define LB_GETCOUNT 0x018B
|
|
#define LB_GETSELCOUNT 0x0190
|
|
#define LB_GETITEMDATA 0x0199
|
|
#define LB_SETITEMDATA 0x019A
|
|
#define LB_FINDSTRINGEXACT 0x01A2
|
|
|
|
#define TBM_GETPOS (WM_USER)
|
|
#define TBM_SETTIC (WM_USER+4)
|
|
#define TBM_SETPOS (WM_USER+5)
|
|
#define TBM_SETRANGE (WM_USER+6)
|
|
#define TBM_SETSEL (WM_USER+10)
|
|
|
|
#define PBM_SETRANGE (WM_USER+1)
|
|
#define PBM_SETPOS (WM_USER+2)
|
|
#define PBM_DELTAPOS (WM_USER+3)
|
|
|
|
#define BM_GETCHECK 0x00F0
|
|
#define BM_SETCHECK 0x00F1
|
|
#define BM_GETIMAGE 0x00F6
|
|
#define BM_SETIMAGE 0x00F7
|
|
#define IMAGE_BITMAP 0
|
|
#define IMAGE_ICON 1
|
|
|
|
#define NM_FIRST (0U- 0U) // generic to all controls
|
|
#define NM_LAST (0U- 99U)
|
|
#define NM_CLICK (NM_FIRST-2) // uses NMCLICK struct
|
|
#define NM_DBLCLK (NM_FIRST-3)
|
|
#define NM_RCLICK (NM_FIRST-5) // uses NMCLICK struct
|
|
#define NM_CUSTOMDRAW (NM_FIRST-12)
|
|
|
|
|
|
#define LVSIL_STATE 1
|
|
#define LVSIL_SMALL 2
|
|
|
|
#define LVIR_BOUNDS 0
|
|
#define LVIR_ICON 1
|
|
#define LVIR_LABEL 2
|
|
#define LVIR_SELECTBOUNDS 3
|
|
|
|
|
|
#define LVHT_NOWHERE 0x0001
|
|
#define LVHT_ONITEMICON 0x0002
|
|
#define LVHT_ONITEMLABEL 0x0004
|
|
#define LVHT_ONITEMSTATEICON 0x0008
|
|
#define LVHT_ONITEM (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON)
|
|
|
|
#define LVHT_ABOVE 0x0010
|
|
#define LVHT_BELOW 0x0020
|
|
#define LVHT_TORIGHT 0x0040
|
|
#define LVHT_TOLEFT 0x0080
|
|
|
|
#define LVCF_FMT 1
|
|
#define LVCF_WIDTH 2
|
|
#define LVCF_TEXT 4
|
|
|
|
#define LVCFMT_LEFT 0
|
|
#define LVCFMT_RIGHT 1
|
|
#define LVCFMT_CENTER 2
|
|
|
|
#define LVIF_TEXT 1
|
|
#define LVIF_IMAGE 2
|
|
#define LVIF_PARAM 4
|
|
#define LVIF_STATE 8
|
|
|
|
#define LVIS_SELECTED 1
|
|
#define LVIS_FOCUSED 2
|
|
#define LVNI_SELECTED 1
|
|
#define LVNI_FOCUSED 2
|
|
#define INDEXTOSTATEIMAGEMASK(x) ((x)<<16)
|
|
#define LVIS_STATEIMAGEMASK (255<<16)
|
|
|
|
#define LVN_FIRST (0U-100U) // listview
|
|
#define LVN_LAST (0U-199U)
|
|
#define LVN_BEGINDRAG (LVN_FIRST-9)
|
|
#define LVN_COLUMNCLICK (LVN_FIRST-8)
|
|
#define LVN_ITEMCHANGED (LVN_FIRST-1)
|
|
#define LVN_ODFINDITEM (LVN_FIRST-52)
|
|
#define LVN_GETDISPINFO (LVN_FIRST-50)
|
|
|
|
#define LVS_EX_GRIDLINES 0x01
|
|
#define LVS_EX_SUBITEMIMAGES 0x02
|
|
#define LVS_EX_HEADERDRAGDROP 0x10
|
|
#define LVS_EX_FULLROWSELECT 0x20 // ignored for now (enabled by default on OSX)
|
|
|
|
#define HDI_FORMAT 0x4
|
|
#define HDF_SORTUP 0x0400
|
|
#define HDF_SORTDOWN 0x0200
|
|
|
|
#define TCIF_TEXT 0x0001
|
|
#define TCIF_IMAGE 0x0002
|
|
#define TCIF_PARAM 0x0008
|
|
//#define TCIF_STATE 0x0010
|
|
|
|
|
|
|
|
#define TCN_FIRST (0U-550U) // tab control
|
|
#define TCN_LAST (0U-580U)
|
|
#define TCN_SELCHANGE (TCN_FIRST - 1)
|
|
|
|
|
|
#define BS_AUTOCHECKBOX 0x00000003L
|
|
#define BS_AUTO3STATE 0x00000006L
|
|
#define BS_AUTORADIOBUTTON 0x00000009L
|
|
#define BS_OWNERDRAW 0x0000000BL
|
|
#define BS_BITMAP 0x00000080L
|
|
|
|
|
|
|
|
#define BST_CHECKED 1
|
|
#define BST_UNCHECKED 0
|
|
#define BST_INDETERMINATE 2
|
|
|
|
// note: these differ in values from their win32 counterparts, because we got them
|
|
// wrong to begin with, and we'd like to keep backwards compatibility for things compiled
|
|
// against an old swell.h (and using the SWELL API via an exported mechanism, i.e. third party
|
|
// plug-ins).
|
|
#define SW_HIDE 0
|
|
#define SW_SHOWNA 1 // 8 on win32
|
|
#define SW_SHOW 2 // 1 on win32
|
|
#define SW_SHOWMINIMIZED 3 // 2 on win32
|
|
#define SW_SHOWMAXIMIZED 4
|
|
#define SW_RESTORE 5
|
|
|
|
// aliases (todo implement these as needed)
|
|
#define SW_SHOWNOACTIVATE SW_SHOWNA
|
|
#define SW_NORMAL SW_SHOW
|
|
#define SW_SHOWNORMAL SW_SHOW
|
|
#define SW_SHOWDEFAULT SW_SHOWNORMAL
|
|
|
|
#define SWP_NOMOVE 1
|
|
#define SWP_NOSIZE 2
|
|
#define SWP_NOZORDER 4
|
|
#define SWP_NOACTIVATE 8
|
|
#define SWP_SHOWWINDOW 16
|
|
#define SWP_FRAMECHANGED 32
|
|
#define SWP_NOCOPYBITS 0
|
|
#define HWND_TOP ((HWND)0)
|
|
#define HWND_BOTTOM ((HWND)1)
|
|
#define HWND_TOPMOST ((HWND)-1)
|
|
#define HWND_NOTOPMOST ((HWND)-2)
|
|
|
|
// most of these are ignored, actually, but TPM_NONOTIFY and TPM_RETURNCMD are now used
|
|
#define TPM_LEFTBUTTON 0x0000L
|
|
#define TPM_RIGHTBUTTON 0x0002L
|
|
#define TPM_LEFTALIGN 0x0000L
|
|
#define TPM_CENTERALIGN 0x0004L
|
|
#define TPM_RIGHTALIGN 0x0008L
|
|
#define TPM_TOPALIGN 0x0000L
|
|
#define TPM_VCENTERALIGN 0x0010L
|
|
#define TPM_BOTTOMALIGN 0x0020L
|
|
#define TPM_HORIZONTAL 0x0000L /* Horz alignment matters more */
|
|
#define TPM_VERTICAL 0x0040L /* Vert alignment matters more */
|
|
#define TPM_NONOTIFY 0x0080L /* Don't send any notification msgs */
|
|
#define TPM_RETURNCMD 0x0100L
|
|
|
|
#define MIIM_ID 1
|
|
#define MIIM_STATE 2
|
|
#define MIIM_TYPE 4
|
|
#define MIIM_SUBMENU 8
|
|
#define MIIM_DATA 16
|
|
#define MIIM_BITMAP 0x80
|
|
#ifdef __APPLE__
|
|
#define MIIM_SWELL_DO_NOT_CALC_MODIFIERS (1<<30)
|
|
#endif
|
|
|
|
#define MF_ENABLED 0
|
|
#define MF_GRAYED 1
|
|
#define MF_DISABLED 2
|
|
#define MF_STRING 0
|
|
#define MF_BITMAP 4
|
|
#define MF_UNCHECKED 0
|
|
#define MF_CHECKED 8
|
|
#define MF_POPUP 0x10
|
|
#define MF_BYCOMMAND 0
|
|
#define MF_BYPOSITION 0x400
|
|
#define MF_SEPARATOR 0x800
|
|
#ifdef __APPLE__
|
|
#define MF_SWELL_DO_NOT_CALC_MODIFIERS (1<<30)
|
|
#endif
|
|
|
|
#define MFT_STRING MF_STRING
|
|
#define MFT_BITMAP MF_BITMAP
|
|
#define MFT_SEPARATOR MF_SEPARATOR
|
|
#define MFT_RADIOCHECK 0x200
|
|
|
|
#define MFS_GRAYED (MF_GRAYED|MF_DISABLED)
|
|
#define MFS_DISABLED MFS_GRAYED
|
|
#define MFS_CHECKED MF_CHECKED
|
|
#define MFS_ENABLED MF_ENABLED
|
|
#define MFS_UNCHECKED MF_UNCHECKED
|
|
|
|
#define EN_SETFOCUS 0x0100
|
|
#define EN_KILLFOCUS 0x0200
|
|
#define EN_CHANGE 0x0300
|
|
#define STN_CLICKED 0
|
|
#define STN_DBLCLK 1
|
|
#define WM_CREATE 0x0001
|
|
#define WM_DESTROY 0x0002
|
|
#define WM_MOVE 0x0003
|
|
#define WM_SIZE 0x0005
|
|
#define WM_ACTIVATE 0x0006
|
|
#define WM_SETFOCUS 0x0007
|
|
#define WM_KILLFOCUS 0x0008
|
|
#define WM_SETREDRAW 0x000B // implemented on macOS NSTableViews, maybe elsewhere?
|
|
#define WM_SETTEXT 0x000C // not implemented on OSX, used internally on Linux
|
|
#define WM_PAINT 0x000F
|
|
#define WM_CLOSE 0x0010
|
|
#define WM_ERASEBKGND 0x0014
|
|
#define WM_SHOWWINDOW 0x0018
|
|
#define WM_ACTIVATEAPP 0x001C
|
|
#define WM_SETCURSOR 0x0020
|
|
#define WM_MOUSEACTIVATE 0x0021
|
|
#define WM_GETMINMAXINFO 0x0024
|
|
#define WM_DRAWITEM 0x002B
|
|
#define WM_SETFONT 0x0030
|
|
#define WM_GETFONT 0x0031
|
|
#define WM_GETOBJECT 0x003D // implemented differently than win32 -- see virtwnd/virtwnd-nsaccessibility.mm
|
|
#define WM_COPYDATA 0x004A
|
|
#define WM_NOTIFY 0x004E
|
|
#define WM_CONTEXTMENU 0x007B
|
|
#define WM_STYLECHANGED 0x007D
|
|
#define WM_DISPLAYCHANGE 0x007E
|
|
#define WM_NCDESTROY 0x0082
|
|
#define WM_NCCALCSIZE 0x0083
|
|
#define WM_NCHITTEST 0x0084
|
|
#define WM_NCPAINT 0x0085
|
|
#define WM_NCMOUSEMOVE 0x00A0
|
|
#define WM_NCLBUTTONDOWN 0x00A1
|
|
#define WM_NCLBUTTONUP 0x00A2
|
|
#define WM_NCLBUTTONDBLCLK 0x00A3
|
|
#define WM_NCRBUTTONDOWN 0x00A4
|
|
#define WM_NCRBUTTONUP 0x00A5
|
|
#define WM_NCRBUTTONDBLCLK 0x00A6
|
|
#define WM_NCMBUTTONDOWN 0x00A7
|
|
#define WM_NCMBUTTONUP 0x00A8
|
|
#define WM_NCMBUTTONDBLCLK 0x00A9
|
|
#define WM_KEYFIRST 0x0100
|
|
#define WM_KEYDOWN 0x0100
|
|
#define WM_KEYUP 0x0101
|
|
#define WM_CHAR 0x0102
|
|
#define WM_DEADCHAR 0x0103
|
|
#define WM_SYSKEYDOWN 0x0104
|
|
#define WM_SYSKEYUP 0x0105
|
|
#define WM_SYSCHAR 0x0106
|
|
#define WM_SYSDEADCHAR 0x0107
|
|
#define WM_KEYLAST 0x0108
|
|
#define WM_INITDIALOG 0x0110
|
|
#define WM_COMMAND 0x0111
|
|
#define WM_SYSCOMMAND 0x0112
|
|
#define WM_TIMER 0x0113
|
|
#define WM_HSCROLL 0x0114
|
|
#define WM_VSCROLL 0x0115
|
|
#define WM_INITMENUPOPUP 0x0117
|
|
#define WM_GESTURE 0x0119
|
|
#define WM_MOUSEFIRST 0x0200
|
|
#define WM_MOUSEMOVE 0x0200
|
|
#define WM_LBUTTONDOWN 0x0201
|
|
#define WM_LBUTTONUP 0x0202
|
|
#define WM_LBUTTONDBLCLK 0x0203
|
|
#define WM_RBUTTONDOWN 0x0204
|
|
#define WM_RBUTTONUP 0x0205
|
|
#define WM_RBUTTONDBLCLK 0x0206
|
|
#define WM_MBUTTONDOWN 0x0207
|
|
#define WM_MBUTTONUP 0x0208
|
|
#define WM_MBUTTONDBLCLK 0x0209
|
|
#define WM_MOUSEWHEEL 0x020A
|
|
#define WM_MOUSEHWHEEL 0x020E
|
|
#define WM_MOUSELAST 0x020A
|
|
#define WM_CAPTURECHANGED 0x0215
|
|
#define WM_DROPFILES 0x0233
|
|
#define WM_SWELL_EXTENDED 0x0399 /* wParam = message specific type */
|
|
#define WM_USER 0x0400
|
|
|
|
#define SC_CLOSE 0xF060
|
|
|
|
#define HTTRANSPARENT (-1)
|
|
#define HTCAPTION 2
|
|
#define HTBOTTOMRIGHT 17
|
|
|
|
#define WA_INACTIVE 0
|
|
#define WA_ACTIVE 1
|
|
#define WA_CLICKACTIVE 2
|
|
|
|
#define BN_CLICKED 0
|
|
|
|
#define LBN_SELCHANGE 1
|
|
#define LBN_DBLCLK 2
|
|
#define LB_ERR (-1)
|
|
|
|
#define CBN_SELCHANGE 1
|
|
#define CBN_EDITCHANGE 5
|
|
#define CBN_DROPDOWN 7
|
|
#define CBN_CLOSEUP 8
|
|
#define CB_ERR (-1)
|
|
|
|
#define EM_GETSEL 0xF0B0
|
|
#define EM_SETSEL 0xF0B1
|
|
#define EM_SCROLL 0xF0B5
|
|
#define EM_REPLACESEL 0xF0C2
|
|
#define EM_SETPASSWORDCHAR 0xF0CC
|
|
|
|
#define SB_HORZ 0
|
|
#define SB_VERT 1
|
|
#define SB_CTL 2
|
|
#define SB_BOTH 3
|
|
|
|
#define SB_LINEUP 0
|
|
#define SB_LINELEFT 0
|
|
#define SB_LINEDOWN 1
|
|
#define SB_LINERIGHT 1
|
|
#define SB_PAGEUP 2
|
|
#define SB_PAGELEFT 2
|
|
#define SB_PAGEDOWN 3
|
|
#define SB_PAGERIGHT 3
|
|
#define SB_THUMBPOSITION 4
|
|
#define SB_THUMBTRACK 5
|
|
#define SB_TOP 6
|
|
#define SB_LEFT 6
|
|
#define SB_BOTTOM 7
|
|
#define SB_RIGHT 7
|
|
#define SB_ENDSCROLL 8
|
|
|
|
#define DFCS_SCROLLUP 0x0000
|
|
#define DFCS_SCROLLDOWN 0x0001
|
|
#define DFCS_SCROLLLEFT 0x0002
|
|
#define DFCS_SCROLLRIGHT 0x0003
|
|
#define DFCS_SCROLLCOMBOBOX 0x0005
|
|
#define DFCS_SCROLLSIZEGRIP 0x0008
|
|
#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
|
|
|
|
#define DFCS_INACTIVE 0x0100
|
|
#define DFCS_PUSHED 0x0200
|
|
#define DFCS_CHECKED 0x0400
|
|
#define DFCS_FLAT 0x4000
|
|
|
|
#define DFCS_BUTTONPUSH 0x0010
|
|
|
|
#define DFC_SCROLL 3
|
|
#define DFC_BUTTON 4
|
|
|
|
#define ESB_ENABLE_BOTH 0x0000
|
|
#define ESB_DISABLE_BOTH 0x0003
|
|
|
|
#define ESB_DISABLE_LEFT 0x0001
|
|
#define ESB_DISABLE_RIGHT 0x0002
|
|
|
|
#define ESB_DISABLE_UP 0x0001
|
|
#define ESB_DISABLE_DOWN 0x0002
|
|
|
|
#define BDR_RAISEDOUTER 0x0001
|
|
#define BDR_SUNKENOUTER 0x0002
|
|
#define BDR_RAISEDINNER 0x0004
|
|
#define BDR_SUNKENINNER 0x0008
|
|
|
|
#define BDR_OUTER 0x0003
|
|
#define BDR_INNER 0x000c
|
|
|
|
#define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
|
|
#define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
|
|
#define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER)
|
|
#define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER)
|
|
|
|
#define BF_ADJUST 0x2000
|
|
#define BF_FLAT 0x4000
|
|
#define BF_LEFT 0x0001
|
|
#define BF_TOP 0x0002
|
|
#define BF_RIGHT 0x0004
|
|
#define BF_BOTTOM 0x0008
|
|
#define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
|
|
|
|
#define PATCOPY (DWORD)0x00F00021
|
|
|
|
#define HTHSCROLL 6
|
|
#define HTVSCROLL 7
|
|
|
|
#define WS_EX_LEFTSCROLLBAR 0x00004000L
|
|
#define WS_EX_ACCEPTFILES 0x00000010L
|
|
|
|
#define SIF_RANGE 0x0001
|
|
#define SIF_PAGE 0x0002
|
|
#define SIF_POS 0x0004
|
|
#define SIF_DISABLENOSCROLL 0x0008
|
|
#define SIF_TRACKPOS 0x0010
|
|
#define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
|
|
|
|
#define SIZE_RESTORED 0
|
|
#define SIZE_MINIMIZED 1
|
|
#define SIZE_MAXIMIZED 2
|
|
#define SIZE_MAXSHOW 3
|
|
#define SIZE_MAXHIDE 4
|
|
|
|
typedef struct tagNMLVCUSTOMDRAW
|
|
{
|
|
struct {
|
|
NMHDR hdr;
|
|
DWORD dwDrawStage;
|
|
HDC hdc; // not implemented
|
|
RECT rc; // not implemented
|
|
DWORD dwItemSpec;
|
|
UINT uItemState; // not implemented
|
|
LPARAM lItemlParam; // not implemented
|
|
} nmcd;
|
|
|
|
COLORREF clrText, clrTextBk;
|
|
int iSubItem;
|
|
} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
|
|
// only currently used by listviews for color override
|
|
#define CDDS_PREPAINT (0x00001)
|
|
#define CDDS_ITEM (0x10000)
|
|
#define CDDS_ITEMPREPAINT (CDDS_ITEM | CDDS_PREPAINT)
|
|
|
|
#ifndef MAKEINTRESOURCE
|
|
#define MAKEINTRESOURCE(x) ((const char *)(UINT_PTR)(x))
|
|
#endif
|
|
|
|
#ifdef FSHIFT
|
|
#undef FSHIFT
|
|
#endif
|
|
|
|
#define FVIRTKEY 1
|
|
#define FSHIFT 0x04
|
|
#define FCONTROL 0x08
|
|
#define FALT 0x10
|
|
#define FLWIN 0x20
|
|
|
|
|
|
#define VK_LBUTTON 0x01
|
|
#define VK_RBUTTON 0x02
|
|
#define VK_MBUTTON 0x04
|
|
|
|
#define VK_BACK 0x08
|
|
#define VK_TAB 0x09
|
|
|
|
#define VK_CLEAR 0x0C
|
|
#define VK_RETURN 0x0D
|
|
|
|
#define VK_SHIFT 0x10
|
|
#define VK_CONTROL 0x11
|
|
#define VK_MENU 0x12
|
|
#define VK_PAUSE 0x13
|
|
#define VK_CAPITAL 0x14
|
|
|
|
#define VK_ESCAPE 0x1B
|
|
|
|
#define VK_SPACE 0x20
|
|
#define VK_PRIOR 0x21
|
|
#define VK_NEXT 0x22
|
|
#define VK_END 0x23
|
|
#define VK_HOME 0x24
|
|
#define VK_LEFT 0x25
|
|
#define VK_UP 0x26
|
|
#define VK_RIGHT 0x27
|
|
#define VK_DOWN 0x28
|
|
#define VK_SELECT 0x29
|
|
#define VK_PRINT 0x2A
|
|
#define VK_SNAPSHOT 0x2C
|
|
#define VK_INSERT 0x2D
|
|
#define VK_DELETE 0x2E
|
|
#define VK_HELP 0x2F
|
|
|
|
#define VK_LWIN 0x5B
|
|
|
|
#define VK_NUMPAD0 0x60
|
|
#define VK_NUMPAD1 0x61
|
|
#define VK_NUMPAD2 0x62
|
|
#define VK_NUMPAD3 0x63
|
|
#define VK_NUMPAD4 0x64
|
|
#define VK_NUMPAD5 0x65
|
|
#define VK_NUMPAD6 0x66
|
|
#define VK_NUMPAD7 0x67
|
|
#define VK_NUMPAD8 0x68
|
|
#define VK_NUMPAD9 0x69
|
|
#define VK_MULTIPLY 0x6A
|
|
#define VK_ADD 0x6B
|
|
#define VK_SEPARATOR 0x6C
|
|
#define VK_SUBTRACT 0x6D
|
|
#define VK_DECIMAL 0x6E
|
|
#define VK_DIVIDE 0x6F
|
|
#define VK_F1 0x70
|
|
#define VK_F2 0x71
|
|
#define VK_F3 0x72
|
|
#define VK_F4 0x73
|
|
#define VK_F5 0x74
|
|
#define VK_F6 0x75
|
|
#define VK_F7 0x76
|
|
#define VK_F8 0x77
|
|
#define VK_F9 0x78
|
|
#define VK_F10 0x79
|
|
#define VK_F11 0x7A
|
|
#define VK_F12 0x7B
|
|
#define VK_F13 0x7C
|
|
#define VK_F14 0x7D
|
|
#define VK_F15 0x7E
|
|
#define VK_F16 0x7F
|
|
#define VK_F17 0x80
|
|
#define VK_F18 0x81
|
|
#define VK_F19 0x82
|
|
#define VK_F20 0x83
|
|
#define VK_F21 0x84
|
|
#define VK_F22 0x85
|
|
#define VK_F23 0x86
|
|
#define VK_F24 0x87
|
|
|
|
#define VK_NUMLOCK 0x90
|
|
#define VK_SCROLL 0x91
|
|
|
|
// these should probably not be used (wParam is not set in WM_LBUTTONDOWN/WM_MOUSEMOVE etc)
|
|
#define MK_LBUTTON 0x01
|
|
#define MK_RBUTTON 0x02
|
|
#define MK_MBUTTON 0x10
|
|
|
|
#define IDC_SIZENESW MAKEINTRESOURCE(32643)
|
|
#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
|
|
#define IDC_IBEAM MAKEINTRESOURCE(32513)
|
|
#define IDC_UPARROW MAKEINTRESOURCE(32516)
|
|
#define IDC_NO MAKEINTRESOURCE(32648)
|
|
#define IDC_SIZEALL MAKEINTRESOURCE(32646)
|
|
#define IDC_SIZENS MAKEINTRESOURCE(32645)
|
|
#define IDC_SIZEWE MAKEINTRESOURCE(32644)
|
|
#define IDC_ARROW MAKEINTRESOURCE(32512)
|
|
#define IDC_HAND MAKEINTRESOURCE(32649)
|
|
|
|
|
|
|
|
#define COLOR_3DSHADOW 0
|
|
#define COLOR_3DHILIGHT 1
|
|
#define COLOR_3DFACE 2
|
|
#define COLOR_BTNTEXT 3
|
|
#define COLOR_WINDOW 4
|
|
#define COLOR_SCROLLBAR 5
|
|
#define COLOR_3DDKSHADOW 6
|
|
#define COLOR_BTNFACE 7
|
|
#define COLOR_INFOBK 8
|
|
#define COLOR_INFOTEXT 9
|
|
|
|
#define SRCCOPY 0
|
|
#define SRCCOPY_USEALPHACHAN 0xdeadbeef
|
|
#define PS_SOLID 0
|
|
|
|
#define DT_TOP 0
|
|
#define DT_LEFT 0
|
|
#define DT_CENTER 1
|
|
#define DT_RIGHT 2
|
|
#define DT_VCENTER 4
|
|
#define DT_BOTTOM 8
|
|
#define DT_WORDBREAK 0x10
|
|
#define DT_SINGLELINE 0x20
|
|
#define DT_NOCLIP 0x100
|
|
#define DT_CALCRECT 0x400
|
|
#define DT_NOPREFIX 0x800
|
|
#define DT_END_ELLIPSIS 0x8000
|
|
|
|
#define FW_DONTCARE 0
|
|
#define FW_THIN 100
|
|
#define FW_EXTRALIGHT 200
|
|
#define FW_LIGHT 300
|
|
#define FW_NORMAL 400
|
|
#define FW_MEDIUM 500
|
|
#define FW_SEMIBOLD 600
|
|
#define FW_BOLD 700
|
|
#define FW_EXTRABOLD 800
|
|
#define FW_HEAVY 900
|
|
|
|
#define FW_ULTRALIGHT FW_EXTRALIGHT
|
|
#define FW_REGULAR FW_NORMAL
|
|
#define FW_DEMIBOLD FW_SEMIBOLD
|
|
#define FW_ULTRABOLD FW_EXTRABOLD
|
|
#define FW_BLACK FW_HEAVY
|
|
|
|
#define OUT_DEFAULT_PRECIS 0
|
|
#define CLIP_DEFAULT_PRECIS 0
|
|
#define DEFAULT_QUALITY 0
|
|
#define DRAFT_QUALITY 1
|
|
#define PROOF_QUALITY 2
|
|
#define NONANTIALIASED_QUALITY 3
|
|
#define ANTIALIASED_QUALITY 4
|
|
#define DEFAULT_PITCH 0
|
|
#define DEFAULT_CHARSET 0
|
|
#define ANSI_CHARSET 0
|
|
#define TRANSPARENT 0
|
|
#define OPAQUE 1
|
|
|
|
#define NULL_PEN 1
|
|
#define NULL_BRUSH 2
|
|
|
|
#define GGI_MARK_NONEXISTING_GLYPHS 1
|
|
|
|
#define GMEM_ZEROINIT 1
|
|
#define GMEM_FIXED 0
|
|
#define GMEM_MOVEABLE 0
|
|
#define GMEM_DDESHARE 0
|
|
#define GMEM_DISCARDABLE 0
|
|
#define GMEM_SHARE 0
|
|
#define GMEM_LOWER 0
|
|
#define GHND (GMEM_MOVEABLE|GM_ZEROINIT)
|
|
#define GPTR (GMEM_FIXED|GMEM_ZEROINIT)
|
|
|
|
#define CF_TEXT (1)
|
|
#define CF_HDROP (2)
|
|
|
|
#define _MCW_RC 0x00000300 /* Rounding Control */
|
|
#define _RC_NEAR 0x00000000 /* near */
|
|
#define _RC_DOWN 0x00000100 /* down */
|
|
#define _RC_UP 0x00000200 /* up */
|
|
#define _RC_CHOP 0x00000300 /* chop */
|
|
|
|
|
|
extern struct SWELL_DialogResourceIndex *SWELL_curmodule_dialogresource_head;
|
|
extern struct SWELL_MenuResourceIndex *SWELL_curmodule_menuresource_head;
|
|
|
|
#define HTNOWHERE 0
|
|
#define HTCLIENT 1
|
|
#define HTMENU 5
|
|
#define HTHSCROLL 6
|
|
#define HTVSCROLL 7
|
|
|
|
#define SM_CXSCREEN 0
|
|
#define SM_CYSCREEN 1
|
|
#define SM_CXVSCROLL 2
|
|
#define SM_CYHSCROLL 3
|
|
#define SM_CYMENU 15
|
|
#define SM_CYVSCROLL 20
|
|
#define SM_CXHSCROLL 21
|
|
|
|
|
|
#if 0 // these are disabled until implemented
|
|
|
|
#define SM_CYCAPTION 4
|
|
#define SM_CXBORDER 5
|
|
#define SM_CYBORDER 6
|
|
#define SM_CXDLGFRAME 7
|
|
#define SM_CYDLGFRAME 8
|
|
#define SM_CYVTHUMB 9
|
|
#define SM_CXHTHUMB 10
|
|
#define SM_CXICON 11
|
|
#define SM_CYICON 12
|
|
#define SM_CXCURSOR 13
|
|
#define SM_CYCURSOR 14
|
|
#define SM_CXFULLSCREEN 16
|
|
#define SM_CYFULLSCREEN 17
|
|
#define SM_CYKANJIWINDOW 18
|
|
#define SM_MOUSEPRESENT 19
|
|
#define SM_DEBUG 22
|
|
#define SM_SWAPBUTTON 23
|
|
#define SM_CXMIN 28
|
|
#define SM_CYMIN 29
|
|
#define SM_CXSIZE 30
|
|
#define SM_CYSIZE 31
|
|
#define SM_CXFRAME 32
|
|
#define SM_CYFRAME 33
|
|
#define SM_CXMINTRACK 34
|
|
#define SM_CYMINTRACK 35
|
|
#define SM_CXDOUBLECLK 36
|
|
#define SM_CYDOUBLECLK 37
|
|
#define SM_CXICONSPACING 38
|
|
#define SM_CYICONSPACING 39
|
|
|
|
#endif // unimplemented system metrics
|
|
|
|
|
|
#define THREAD_BASE_PRIORITY_LOWRT 15
|
|
#define THREAD_BASE_PRIORITY_MAX 2
|
|
#define THREAD_BASE_PRIORITY_MIN -2
|
|
#define THREAD_BASE_PRIORITY_IDLE -15
|
|
#define THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN
|
|
#define THREAD_PRIORITY_BELOW_NORMAL (THREAD_PRIORITY_LOWEST+1)
|
|
#define THREAD_PRIORITY_NORMAL 0
|
|
#define THREAD_PRIORITY_HIGHEST THREAD_BASE_PRIORITY_MAX
|
|
#define THREAD_PRIORITY_ABOVE_NORMAL (THREAD_PRIORITY_HIGHEST-1)
|
|
#define THREAD_PRIORITY_TIME_CRITICAL THREAD_BASE_PRIORITY_LOWRT
|
|
#define THREAD_PRIORITY_IDLE THREAD_BASE_PRIORITY_IDLE
|
|
|
|
|
|
|
|
#define WAIT_OBJECT_0 (0 )
|
|
#define WAIT_TIMEOUT (0x00000102L)
|
|
#define WAIT_FAILED (DWORD)0xFFFFFFFF
|
|
#define INFINITE 0xFFFFFFFF
|
|
|
|
|
|
#define FR_PRIVATE 1 // AddFontResourceEx()
|
|
|
|
typedef struct _ICONINFO
|
|
{
|
|
BOOL fIcon;
|
|
DWORD xHotspot;
|
|
DWORD yHotspot;
|
|
HBITMAP hbmMask;
|
|
HBITMAP hbmColor;
|
|
} ICONINFO, *PICONINFO;
|
|
|
|
typedef struct _COPYDATASTRUCT
|
|
{
|
|
ULONG_PTR dwData;
|
|
DWORD cbData;
|
|
PVOID lpData;
|
|
} COPYDATASTRUCT, *PCOPYDATASTRUCT;
|
|
|
|
typedef void *HMONITOR;
|
|
|
|
typedef struct _MONITORINFO {
|
|
DWORD cbSize;
|
|
RECT rcMonitor, rcWork;
|
|
DWORD dwFlags;
|
|
} MONITORINFO, *LPMONITORINFO;
|
|
|
|
|
|
typedef struct _MONITORINFOEX {
|
|
DWORD cbSize;
|
|
RECT rcMonitor, rcWork;
|
|
DWORD dwFlags;
|
|
char szDevice[256];
|
|
} MONITORINFOEX, *LPMONITORINFOEX;
|
|
|
|
typedef BOOL (*MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
|
|
|
|
#endif //_WDL_SWELL_H_TYPES_DEFINED_
|