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 66 #define DEFAULT_XSEP 0 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 76 #define FLAG_INCR 0x01 77 #define FLAG_DECR 0x02 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;
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;
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);
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)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
static LRESULT UPDOWN_Paint(const UPDOWN_INFO *infoPtr, HDC hdc)
GLint GLint GLsizei width
#define DEFAULT_BUDDYSPACER
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
static int UPDOWN_GetPos(UPDOWN_INFO *infoPtr, BOOL *err)
void UPDOWN_Unregister(void)
#define DEFAULT_BUDDYBORDER
static LRESULT UPDOWN_Draw(const UPDOWN_INFO *infoPtr, HDC hdc)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI IsWindow(_In_opt_ HWND)
static BOOL UPDOWN_OffsetVal(UPDOWN_INFO *infoPtr, int delta)
#define DEFAULT_BUDDYSPACER_THEMED
GLdouble GLdouble GLdouble r
static BOOL UPDOWN_InBounds(const UPDOWN_INFO *infoPtr, int val)
static struct netconfig_info ni
#define LOCALE_USER_DEFAULT
static INT UPDOWN_GetArrowFromPoint(const UPDOWN_INFO *infoPtr, RECT *rect, POINT pt)
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
GLint GLint GLint GLint GLint x
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
BOOL WINAPI DrawFrameControl(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
#define GetWindowLongPtrW
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
static void * heap_alloc(size_t len)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define UPDOWN_GetInfoPtr(hwnd)
BOOL WINAPI TrackMouseEvent(_Inout_ LPTRACKMOUSEEVENT)
#define BUDDY_TYPE_UNKNOWN
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
static BOOL UPDOWN_IsEnabled(const UPDOWN_INFO *infoPtr)
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME hTheme, int iPartId, int iStateId)
#define BUDDY_TYPE_LISTBOX
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
static int UPDOWN_SetPos(UPDOWN_INFO *infoPtr, int pos)
static BOOL UPDOWN_IsBuddyEdit(const UPDOWN_INFO *infoPtr)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
BOOL WINAPI DrawEdge(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
HWND WINAPI GetCapture(void)
void UPDOWN_Register(void)
BOOL WINAPI IsWindowEnabled(_In_ HWND)
static void UPDOWN_ResetSubclass(UPDOWN_INFO *infoPtr)
LRESULT WINAPI DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
WINE_DEFAULT_DEBUG_CHANNEL(updown)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
BOOL WINAPI SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIDSubclass, DWORD_PTR dwRef)
struct tagSTYLESTRUCT * LPSTYLESTRUCT
const char * wine_dbgstr_point(const POINT *guid)
GLint GLint GLsizei GLsizei GLsizei GLint border
static BOOL UPDOWN_SetBuddyInt(const UPDOWN_INFO *infoPtr)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
static void UPDOWN_GetArrowRect(const UPDOWN_INFO *infoPtr, RECT *rect, int arrow)
static BOOL UPDOWN_DrawBuddyBackground(const UPDOWN_INFO *infoPtr, HDC hdc)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
unsigned __int3264 UINT_PTR
HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR classlist)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
static LRESULT UPDOWN_MouseWheel(UPDOWN_INFO *infoPtr, WPARAM wParam)
#define memcpy(s1, s2, n)
static LRESULT UPDOWN_SetRange(UPDOWN_INFO *infoPtr, INT Max, INT Min)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
HWND WINAPI SetCapture(_In_ HWND hWnd)
static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static BOOL(WINAPI *pSetWindowSubclass)(HWND
BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uID)
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 GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static BOOL UPDOWN_HasBuddyBorder(const UPDOWN_INFO *infoPtr)
static WCHAR UPDOWN_GetThousandSep(void)
#define DEFAULT_BUDDYBORDER_THEMED
GLint GLint GLint GLint GLint GLint y
static HWND UPDOWN_SetBuddy(UPDOWN_INFO *infoPtr, HWND bud)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
static BOOL UPDOWN_CancelMode(UPDOWN_INFO *infoPtr)
BOOL WINAPI ReleaseCapture(void)
static LRESULT CALLBACK UPDOWN_Buddy_SubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uId, DWORD_PTR ref_data)
static BOOL UPDOWN_IsBuddyListbox(const UPDOWN_INFO *infoPtr)
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
static BOOL UPDOWN_GetBuddyInt(UPDOWN_INFO *infoPtr)
#define SetWindowLongPtrW
#define UDM_GETUNICODEFORMAT
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
static LRESULT UPDOWN_KeyPressed(UPDOWN_INFO *infoPtr, int key)
static void UPDOWN_DoAction(UPDOWN_INFO *infoPtr, int delta, int action)
static BOOL heap_free(void *mem)
static void UPDOWN_HandleMouseEvent(UPDOWN_INFO *infoPtr, UINT msg, INT x, INT y)
#define SWP_NOOWNERZORDER
#define UDM_SETUNICODEFORMAT