278 lines
9.5 KiB
C
278 lines
9.5 KiB
C
/******************************************************************************
|
|
*
|
|
* Common definitions (resource ids and global variables)
|
|
*
|
|
* Copyright 1999 Thuy Nguyen
|
|
* Copyright 1999 Eric Kohl
|
|
* Copyright 2002 Dimitrie O. Paun
|
|
*
|
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
#ifndef __WINE_COMCTL32_H
|
|
#define __WINE_COMCTL32_H
|
|
|
|
#include "commctrl.h"
|
|
|
|
extern HMODULE COMCTL32_hModule;
|
|
extern HBRUSH COMCTL32_hPattern55AABrush;
|
|
|
|
/* Property sheet / Wizard */
|
|
#define IDD_PROPSHEET 1006
|
|
#define IDD_WIZARD 1020
|
|
|
|
#define IDC_TABCONTROL 12320
|
|
#define IDC_APPLY_BUTTON 12321
|
|
#define IDC_BACK_BUTTON 12323
|
|
#define IDC_NEXT_BUTTON 12324
|
|
#define IDC_FINISH_BUTTON 12325
|
|
#define IDC_SUNKEN_LINE 12326
|
|
|
|
#define IDS_CLOSE 4160
|
|
|
|
/* Toolbar customization dialog */
|
|
#define IDD_TBCUSTOMIZE 200
|
|
|
|
#define IDC_AVAILBTN_LBOX 201
|
|
#define IDC_RESET_BTN 202
|
|
#define IDC_TOOLBARBTN_LBOX 203
|
|
#define IDC_REMOVE_BTN 204
|
|
#define IDC_HELP_BTN 205
|
|
#define IDC_MOVEUP_BTN 206
|
|
#define IDC_MOVEDN_BTN 207
|
|
|
|
#define IDS_SEPARATOR 1024
|
|
|
|
/* Toolbar imagelist bitmaps */
|
|
#define IDB_STD_SMALL 120
|
|
#define IDB_STD_LARGE 121
|
|
#define IDB_VIEW_SMALL 124
|
|
#define IDB_VIEW_LARGE 125
|
|
#define IDB_HIST_SMALL 130
|
|
#define IDB_HIST_LARGE 131
|
|
|
|
|
|
/* Month calendar month menu popup */
|
|
#define IDD_MCMONTHMENU 300
|
|
|
|
#define IDM_JAN 301
|
|
#define IDM_FEB 302
|
|
#define IDM_MAR 303
|
|
#define IDM_APR 304
|
|
#define IDM_MAY 305
|
|
#define IDM_JUN 306
|
|
#define IDM_JUL 307
|
|
#define IDM_AUG 308
|
|
#define IDM_SEP 309
|
|
#define IDM_OCT 310
|
|
#define IDM_NOV 311
|
|
#define IDM_DEC 312
|
|
|
|
#define IDM_TODAY 4163
|
|
#define IDM_GOTODAY 4164
|
|
|
|
/* Treeview Checkboxes */
|
|
|
|
#define IDT_CHECK 401
|
|
|
|
|
|
/* Header cursors */
|
|
#define IDC_DIVIDER 106
|
|
#define IDC_DIVIDEROPEN 107
|
|
|
|
|
|
/* DragList icon */
|
|
#define IDI_DRAGARROW 150
|
|
|
|
|
|
/* HOTKEY internal strings */
|
|
#define HKY_NONE 2048
|
|
|
|
typedef struct
|
|
{
|
|
COLORREF clrBtnHighlight; /* COLOR_BTNHIGHLIGHT */
|
|
COLORREF clrBtnShadow; /* COLOR_BTNSHADOW */
|
|
COLORREF clrBtnText; /* COLOR_BTNTEXT */
|
|
COLORREF clrBtnFace; /* COLOR_BTNFACE */
|
|
COLORREF clrHighlight; /* COLOR_HIGHLIGHT */
|
|
COLORREF clrHighlightText; /* COLOR_HIGHLIGHTTEXT */
|
|
COLORREF clr3dHilight; /* COLOR_3DHILIGHT */
|
|
COLORREF clr3dShadow; /* COLOR_3DSHADOW */
|
|
COLORREF clr3dDkShadow; /* COLOR_3DDKSHADOW */
|
|
COLORREF clr3dFace; /* COLOR_3DFACE */
|
|
COLORREF clrWindow; /* COLOR_WINDOW */
|
|
COLORREF clrWindowText; /* COLOR_WINDOWTEXT */
|
|
COLORREF clrGrayText; /* COLOR_GREYTEXT */
|
|
COLORREF clrActiveCaption; /* COLOR_ACTIVECAPTION */
|
|
COLORREF clrInfoBk; /* COLOR_INFOBK */
|
|
COLORREF clrInfoText; /* COLOR_INFOTEXT */
|
|
} COMCTL32_SysColor;
|
|
|
|
extern COMCTL32_SysColor comctl32_color;
|
|
|
|
/* Internal function */
|
|
HWND COMCTL32_CreateToolTip (HWND);
|
|
VOID COMCTL32_RefreshSysColors(void);
|
|
INT Str_GetPtrWtoA (LPCWSTR lpSrc, LPSTR lpDest, INT nMaxLen);
|
|
BOOL Str_SetPtrAtoW (LPWSTR *lppDest, LPCSTR lpSrc);
|
|
|
|
#define COMCTL32_VERSION_MINOR 0
|
|
#define WINE_FILEVERSION 5, COMCTL32_VERSION_MINOR, 0, 0
|
|
#define WINE_FILEVERSIONSTR "5.00"
|
|
|
|
/* Notification support */
|
|
|
|
inline static LRESULT send_notify(HWND hwnd, UINT code, NMHDR *hdr)
|
|
{
|
|
hdr->hwndFrom = hwnd;
|
|
hdr->idFrom = GetWindowLongW (hwnd, GWL_ID);
|
|
hdr->code = code;
|
|
|
|
return SendMessageW (GetParent(hwnd), WM_NOTIFY, hdr->idFrom, (LPARAM)hdr);
|
|
}
|
|
|
|
|
|
inline static LRESULT hwnd_notify(HWND hwnd, UINT code)
|
|
{
|
|
NMHDR hdr;
|
|
|
|
return send_notify(hwnd, code, &hdr);
|
|
}
|
|
|
|
inline static BOOL hwnd_notify_char(HWND hwnd, UINT ch, DWORD prev, DWORD next)
|
|
{
|
|
NMCHAR nmch;
|
|
|
|
nmch.ch = ch;
|
|
nmch.dwItemPrev = prev;
|
|
nmch.dwItemNext = next;
|
|
return (BOOL)send_notify(hwnd, NM_CHAR, &nmch.hdr);
|
|
}
|
|
|
|
inline static BOOL hwnd_notify_keydown(HWND hwnd, UINT nVKey, UINT uFlags)
|
|
{
|
|
NMKEY nmk;
|
|
|
|
nmk.nVKey = nVKey;
|
|
nmk.uFlags = uFlags;
|
|
return (BOOL)send_notify(hwnd, NM_KEYDOWN, &nmk.hdr);
|
|
}
|
|
|
|
inline static DWORD hwnd_notify_mouse(HWND hwnd, UINT code, DWORD spec, DWORD data, POINT *pt, LPARAM dwHitInfo)
|
|
{
|
|
NMMOUSE nmm;
|
|
|
|
nmm.dwItemSpec = spec;
|
|
nmm.dwItemData = data;
|
|
nmm.pt.x = pt->x;
|
|
nmm.pt.y = pt->y;
|
|
nmm.dwHitInfo = dwHitInfo;
|
|
return send_notify(hwnd, code, &nmm.hdr);
|
|
}
|
|
|
|
#define DEFINE_CHAR_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static BOOL notify_char(CTRLINFO *infoPtr, UINT ch, DWORD prev, DWORD next) \
|
|
{ return hwnd_notify_char(infoPtr->hwndSelf, ch, prev, next); }
|
|
|
|
#define DEFINE_CLICK_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_click(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_CLICK); }
|
|
|
|
#define DEFINE_DBLCLK_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_dblclk(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_DBLCLK); }
|
|
|
|
#define DEFINE_HOVER_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static BOOL notify_hover(CTRLINFO *infoPtr) \
|
|
{ return hwnd_notify(infoPtr->hwndSelf, NM_HOVER); }
|
|
|
|
#define DEFINE_KEYDOWN_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static BOOL notify_keydown(CTRLINFO *infoPtr, UINT nVKey, UINT uFlags) \
|
|
{ return hwnd_notify_keydown(infoPtr->hwndSelf, nVKey, uFlags); }
|
|
|
|
#define DEFINE_KILLFOCUS_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_killfocus(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_KILLFOCUS); }
|
|
|
|
#define DEFINE_NCHITTEST_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static DWORD notify_nchittest(CTRLINFO *infoPtr, DWORD spec, DWORD data, POINT *pt, LPARAM dwHitInfo) \
|
|
{ return hwnd_notify_mouse(infoPtr->hwndSelf, NM_NCHITTEST, spec, data, pt, dwHitInfo); }
|
|
|
|
#define DEFINE_OUTOFMEMORY_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_outofmemory(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_OUTOFMEMORY); }
|
|
|
|
#define DEFINE_RCLICK_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static BOOL notify_rclick(CTRLINFO *infoPtr) \
|
|
{ return hwnd_notify(infoPtr->hwndSelf, NM_RCLICK); }
|
|
|
|
#define DEFINE_RDBLCLK_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_rdblclk(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_RDBLCLK); }
|
|
|
|
#define DEFINE_RELEASEDCAPTURE_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_releasedcapture(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_RELEASEDCAPTURE); }
|
|
|
|
#define DEFINE_RETURN_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_return(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_RETURN); }
|
|
|
|
#define DEFINE_SETCURSOR_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static BOOL notify_setcursor(CTRLINFO *infoPtr, DWORD spec, DWORD data, POINT *pt, LPARAM dwHitInfo) \
|
|
{ return hwnd_notify_mouse(infoPtr->hwndSelf, NM_SETCURSOR, spec, data, pt, dwHitInfo); }
|
|
|
|
#define DEFINE_SETFOCUS_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_setfocus(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_SETFOCUS); }
|
|
|
|
#define DEFINE_TOOLTIPSCREATED_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
inline static void notify_tooltipscreated(CTRLINFO *infoPtr) \
|
|
{ hwnd_notify(infoPtr->hwndSelf, NM_TOOLTIPSCREATED); }
|
|
|
|
#define DEFINE_COMMON_NOTIFICATIONS(CTRLINFO, hwndSelf) \
|
|
DEFINE_CHAR_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_CLICK_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_DBLCLK_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_HOVER_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_KEYDOWN_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_KILLFOCUS_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_NCHITTEST_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_OUTOFMEMORY_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_RCLICK_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_RDBLCLK_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_RELEASEDCAPTURE_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_RETURN_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_SETCURSOR_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_SETFOCUS_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
DEFINE_TOOLTIPSCREATED_NOTIFICATION(CTRLINFO, hwndSelf) \
|
|
struct __forward_dummy_struc_dec_to_catch_missing_semicolon
|
|
|
|
/* Our internal stack structure of the window procedures to subclass */
|
|
typedef struct
|
|
{
|
|
struct {
|
|
SUBCLASSPROC subproc;
|
|
UINT_PTR id;
|
|
DWORD_PTR ref;
|
|
} SubclassProcs[31];
|
|
int stackpos;
|
|
int stacknum;
|
|
int stacknew;
|
|
WNDPROC origproc;
|
|
} SUBCLASS_INFO, *LPSUBCLASS_INFO;
|
|
|
|
#endif /* __WINE_COMCTL32_H */
|