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);
274 if(newVal < 0)
return FALSE;
294 TRACE(
"new value(%d) from buddy (old=%d)\n", newVal, infoPtr->
CurVal);
309 static const WCHAR fmt_hex[] = {
'0',
'x',
'%',
'0',
'4',
'X', 0 };
310 static const WCHAR fmt_dec_oct[] = {
'%',
'd',
'\0' };
312 WCHAR txt[20], txt_old[20] = { 0 };
318 TRACE(
"set new value(%d) to buddy.\n", infoPtr->
CurVal);
326 fmt = (infoPtr->
Base == 16) ? fmt_hex : fmt_dec_oct;
336 memcpy(tmp, txt,
sizeof(txt));
341 if (
len % 3 == 0) *
dst++ = sep;
363 if (!buddyTheme)
return FALSE;
385 BOOL uPressed, uHot, dPressed, dHot;
388 int uPart = 0, uState = 0, dPart = 0, dState = 0;
474 infoPtr->
Flags &= ~FLAG_ARROW;
489 if((infoPtr->
MinVal < infoPtr->
MaxVal && val < infoPtr->MinVal)
507 if((infoPtr->
MinVal < infoPtr->
MaxVal && pos < infoPtr->MinVal)
518 if((infoPtr->
MinVal < infoPtr->
MaxVal && ret < infoPtr->MinVal)
543 TRACE(
"UpDown Ctrl new range(%d to %d), hwnd=%p\n",
561 if (iWheelDelta != 0)
581 TRACE(
"hwnd=%p, uMsg=%04x, wParam=%08lx, lParam=%08lx\n",
629 WCHAR buddyClass[40];
632 TRACE(
"(hwnd=%p, bud=%p)\n", infoPtr->
Self, bud);
634 old_buddy = infoPtr->
Buddy;
641 infoPtr->
Buddy = bud;
730 TRACE(
"current %d, delta: %d\n", infoPtr->
CurVal, delta);
735 ni.hdr.hwndFrom = infoPtr->
Self;
789 infoPtr->
Flags &= ~FLAG_PRESSED;
872 tme.
cbSize =
sizeof( tme );
884 ERR(
"Impossible case (msg=%x)!\n",
msg);
909 infoPtr = heap_alloc_zero(
sizeof(*infoPtr));
913 infoPtr->Self =
hwnd;
915 infoPtr->dwStyle = pcs->
style;
916 infoPtr->AccelCount = 0;
917 infoPtr->AccelVect = 0;
918 infoPtr->AccelIndex = -1;
920 infoPtr->MinVal = 100;
937 TRACE(
"UpDown Ctrl creation, hwnd=%p\n",
hwnd);
948 TRACE(
"UpDown Ctrl destruction, hwnd=%p\n",
hwnd);
953 infoPtr->
dwStyle &= ~WS_DISABLED;
961 case WM_STYLECHANGED:
968 case WM_THEMECHANGED:
1066 TRACE(
"UDM_SETACCEL\n");
1084 TRACE(
"%u: nSec %u nInc %u\n",
i,
1091 return infoPtr->
Base;
1099 if (old_base != infoPtr->
Base)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static const char * wine_dbgstr_point(const POINT *ppt)
#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 void UPDOWN_GetArrowRect(const UPDOWN_INFO *infoPtr, RECT *rect, unsigned int arrow)
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 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)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
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
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
#define memcpy(s1, s2, n)
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
unsigned __int3264 UINT_PTR
#define LOCALE_USER_DEFAULT
#define UDM_GETUNICODEFORMAT
#define UDM_SETUNICODEFORMAT
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)