36#include "wine/unicode.h"
61#define INITIAL_DELAY 500
62#define AUTOPRESS_DELAY 250
63#define REPEAT_DELAY 50
65#define DEFAULT_WIDTH 16
67#define DEFAULT_ADDTOP 0
68#define DEFAULT_ADDBOT 0
69#define DEFAULT_BUDDYBORDER 2
70#define DEFAULT_BUDDYSPACER 2
71#define DEFAULT_BUDDYBORDER_THEMED 1
72#define DEFAULT_BUDDYSPACER_THEMED 0
78#define FLAG_MOUSEIN 0x04
79#define FLAG_PRESSED 0x08
80#define FLAG_BUDDYINT 0x10
81#define FLAG_ARROW (FLAG_INCR | FLAG_DECR)
83#define BUDDY_TYPE_UNKNOWN 0
84#define BUDDY_TYPE_LISTBOX 1
85#define BUDDY_TYPE_EDIT 2
87#define TIMER_AUTOREPEAT 1
89#define TIMER_AUTOPRESS 3
91#define UPDOWN_GetInfoPtr(hwnd) ((UPDOWN_INFO *)GetWindowLongPtrW (hwnd,0))
94#define BUDDY_SUBCLASSID 1
139 delta += (delta < 0 ? -1 : 1) *
142 (delta < 0 ? 1 : -1);
211 rect->right =
rect->left +
len/2 - (theme ? 0 : 1);
215 rect->bottom =
rect->top +
len/2 - (theme ? 0 : 1);
272 if(newVal < 0)
return FALSE;
292 TRACE(
"new value(%d) from buddy (old=%d)\n", newVal, infoPtr->
CurVal);
307 static const WCHAR fmt_hex[] = {
'0',
'x',
'%',
'0',
'4',
'X', 0 };
308 static const WCHAR fmt_dec_oct[] = {
'%',
'd',
'\0' };
310 WCHAR txt[20], txt_old[20] = { 0 };
316 TRACE(
"set new value(%d) to buddy.\n", infoPtr->
CurVal);
324 fmt = (infoPtr->
Base == 16) ? fmt_hex : fmt_dec_oct;
334 memcpy(tmp, txt,
sizeof(txt));
339 if (
len % 3 == 0) *
dst++ = sep;
361 if (!buddyTheme)
return FALSE;
383 BOOL uPressed, uHot, dPressed, dHot;
386 int uPart = 0, uState = 0, dPart = 0, dState = 0;
472 infoPtr->
Flags &= ~FLAG_ARROW;
487 if((infoPtr->
MinVal < infoPtr->
MaxVal && val < infoPtr->MinVal)
505 if((infoPtr->
MinVal < infoPtr->
MaxVal && pos < infoPtr->MinVal)
516 if((infoPtr->
MinVal < infoPtr->
MaxVal && ret < infoPtr->MinVal)
541 TRACE(
"UpDown Ctrl new range(%d to %d), hwnd=%p\n",
559 if (iWheelDelta != 0)
579 TRACE(
"hwnd=%p, uMsg=%04x, wParam=%08lx, lParam=%08lx\n",
627 WCHAR buddyClass[40];
630 TRACE(
"(hwnd=%p, bud=%p)\n", infoPtr->
Self, bud);
632 old_buddy = infoPtr->
Buddy;
639 infoPtr->
Buddy = bud;
728 TRACE(
"current %d, delta: %d\n", infoPtr->
CurVal, delta);
733 ni.hdr.hwndFrom = infoPtr->
Self;
787 infoPtr->
Flags &= ~FLAG_PRESSED;
870 tme.
cbSize =
sizeof( tme );
882 ERR(
"Impossible case (msg=%x)!\n",
msg);
907 infoPtr = heap_alloc_zero(
sizeof(*infoPtr));
911 infoPtr->Self =
hwnd;
913 infoPtr->dwStyle = pcs->
style;
914 infoPtr->AccelCount = 0;
915 infoPtr->AccelVect = 0;
916 infoPtr->AccelIndex = -1;
918 infoPtr->MinVal = 100;
935 TRACE(
"UpDown Ctrl creation, hwnd=%p\n",
hwnd);
946 TRACE(
"UpDown Ctrl destruction, hwnd=%p\n",
hwnd);
951 infoPtr->
dwStyle &= ~WS_DISABLED;
959 case WM_STYLECHANGED:
966 case WM_THEMECHANGED:
1064 TRACE(
"UDM_SETACCEL\n");
1082 TRACE(
"%u: nSec %u nInc %u\n",
i,
1089 return infoPtr->
Base;
1097 if (old_base != infoPtr->
Base)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
BOOL WINAPI SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIDSubclass, DWORD_PTR dwRef)
BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uID)
LRESULT WINAPI DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static WCHAR UPDOWN_GetThousandSep(void)
static void UPDOWN_DoAction(UPDOWN_INFO *infoPtr, int delta, int action)
static void UPDOWN_HandleMouseEvent(UPDOWN_INFO *infoPtr, UINT msg, INT x, INT y)
#define BUDDY_TYPE_UNKNOWN
static BOOL UPDOWN_DrawBuddyBackground(const UPDOWN_INFO *infoPtr, HDC hdc)
static LRESULT CALLBACK UPDOWN_Buddy_SubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uId, DWORD_PTR ref_data)
#define DEFAULT_BUDDYBORDER_THEMED
static int UPDOWN_SetPos(UPDOWN_INFO *infoPtr, int pos)
static void UPDOWN_ResetSubclass(UPDOWN_INFO *infoPtr)
#define DEFAULT_BUDDYSPACER_THEMED
static BOOL UPDOWN_CancelMode(UPDOWN_INFO *infoPtr)
static INT UPDOWN_GetArrowFromPoint(const UPDOWN_INFO *infoPtr, RECT *rect, POINT pt)
static HWND UPDOWN_SetBuddy(UPDOWN_INFO *infoPtr, HWND bud)
static LRESULT UPDOWN_Draw(const UPDOWN_INFO *infoPtr, HDC hdc)
static BOOL UPDOWN_GetBuddyInt(UPDOWN_INFO *infoPtr)
static BOOL UPDOWN_IsBuddyListbox(const UPDOWN_INFO *infoPtr)
void UPDOWN_Unregister(void)
static void UPDOWN_GetArrowRect(const UPDOWN_INFO *infoPtr, RECT *rect, int arrow)
static LRESULT UPDOWN_KeyPressed(UPDOWN_INFO *infoPtr, int key)
#define DEFAULT_BUDDYBORDER
static int UPDOWN_GetPos(UPDOWN_INFO *infoPtr, BOOL *err)
static BOOL UPDOWN_IsEnabled(const UPDOWN_INFO *infoPtr)
void UPDOWN_Register(void)
static LRESULT UPDOWN_Paint(const UPDOWN_INFO *infoPtr, HDC hdc)
static BOOL UPDOWN_HasBuddyBorder(const UPDOWN_INFO *infoPtr)
#define DEFAULT_BUDDYSPACER
static BOOL UPDOWN_InBounds(const UPDOWN_INFO *infoPtr, int val)
static BOOL UPDOWN_OffsetVal(UPDOWN_INFO *infoPtr, int delta)
static LRESULT UPDOWN_SetRange(UPDOWN_INFO *infoPtr, INT Max, INT Min)
static BOOL UPDOWN_IsBuddyEdit(const UPDOWN_INFO *infoPtr)
static LRESULT UPDOWN_MouseWheel(UPDOWN_INFO *infoPtr, WPARAM wParam)
#define UPDOWN_GetInfoPtr(hwnd)
static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
#define BUDDY_TYPE_LISTBOX
static BOOL UPDOWN_SetBuddyInt(const UPDOWN_INFO *infoPtr)
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME hTheme, int iPartId, int iStateId)
HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR classlist)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
static struct netconfig_info ni
GLint GLint GLsizei GLsizei GLsizei GLint border
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
unsigned __int3264 UINT_PTR
#define LOCALE_USER_DEFAULT
#define UDM_GETUNICODEFORMAT
#define UDM_SETUNICODEFORMAT
static __inline const char * wine_dbgstr_point(const POINT *pt)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
HWND WINAPI SetCapture(_In_ HWND hWnd)
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define GetWindowLongPtrW
BOOL WINAPI ReleaseCapture(void)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI DrawFrameControl(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
HWND WINAPI GetCapture(void)
BOOL WINAPI TrackMouseEvent(_Inout_ LPTRACKMOUSEEVENT)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
struct tagSTYLESTRUCT * LPSTYLESTRUCT
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI DrawEdge(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI IsWindowEnabled(_In_ HWND)
HWND WINAPI GetParent(_In_ HWND)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
#define SWP_NOOWNERZORDER
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
#define SetWindowLongPtrW
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)