89#define EXTRA_ITEM_SIZE(infoPtr) (max((infoPtr)->cbInfo, sizeof(LPARAM)))
90#define TAB_ITEM_SIZE(infoPtr) FIELD_OFFSET(TAB_ITEM, extra[EXTRA_ITEM_SIZE(infoPtr)])
132#define SELECTED_TAB_OFFSET 2
133#define ROUND_CORNER_SIZE 2
134#define DISPLAY_AREA_PADDINGX 2
135#define DISPLAY_AREA_PADDINGY 2
136#define CONTROL_BORDER_SIZEX 2
137#define CONTROL_BORDER_SIZEY 2
138#define BUTTON_SPACINGX 3
139#define BUTTON_SPACINGY 3
140#define FLAT_BTN_SPACINGX 8
141#define DEFAULT_MIN_TAB_WIDTH 54
142#define DEFAULT_PADDING_X 6
143#define EXTRA_ICON_PADDING 3
145#define TAB_GetInfoPtr(hwnd) ((TAB_INFO *)GetWindowLongPtrW(hwnd,0))
147#define GET_DEFAULT_MIN_TAB_WIDTH(infoPtr) (DEFAULT_MIN_TAB_WIDTH - (DEFAULT_PADDING_X - (infoPtr)->uHItemPadding) * 2)
152#define TAB_HOTTRACK_TIMER 1
153#define TAB_HOTTRACK_TIMER_INTERVAL 100
159 assert(
i >= 0 && i < infoPtr->uNumItem);
206 TRACE(
"external tab %d, mask=0x%08x, dwState=0x%08x, dwStateMask=0x%08x, cchTextMax=0x%08x\n",
208 TRACE(
"external tab %d, iImage=%d, lParam=0x%08lx, pszTextW=%s\n",
219 TRACE(
"tab %d, dwState=0x%08x, pszText=%s, iImage=%d\n",
221 TRACE(
"tab %d, rect.left=%d, rect.top(row)=%d\n",
230 TRACE(
"(%p)\n", infoPtr);
239 TRACE(
"(%p)\n", infoPtr);
245 TRACE(
"(%p)\n", infoPtr);
253 TRACE(
"(%p %d)\n", infoPtr, iItem);
258 if (prevItem != iItem) {
283 TRACE(
"(%p %d)\n", infoPtr, iItem);
296 else if (iItem < infoPtr->uNumItem) {
299 if (infoPtr->
uFocus != iItem) {
320 if (infoPtr->
iSelected != iItem || oldFocus == -1 ) {
322 if (oldFocus != -1) {
348 TRACE(
"%p %p\n", infoPtr, hwndToolTip);
378 RECT tmpItemRect,clientRect;
384 (itemIndex < infoPtr->leftmostVisible)))
386 TRACE(
"Not Visible\n");
396 if (itemRect ==
NULL)
397 itemRect = &tmpItemRect;
462 TRACE(
"item %d tab h=%d, rect=(%s)\n",
466 if (selectedRect!=
NULL)
468 *selectedRect = *itemRect;
479 selectedRect->
left -= 2;
485 selectedRect->
right += 1;
494 selectedRect->
bottom -= 1;
533 newItem = infoPtr->
uFocus - 1;
536 newItem = infoPtr->
uFocus + 1;
541 if (newItem >= 0 && newItem < infoPtr->uNumItem && infoPtr->
uFocus != newItem)
599 for (iCount = 0; iCount < infoPtr->
uNumItem; iCount++)
617 TRACE(
"(%p, %p)\n", infoPtr, lptest);
673 TRACE(
"On Tab, item %d\n", newItem);
675 if ((newItem != -1) && (infoPtr->
iSelected != newItem))
759 if (tabIndex == -1)
return;
839 int* out_redrawLeave,
846 if (out_redrawLeave !=
NULL)
847 *out_redrawLeave = -1;
848 if (out_redrawEnter !=
NULL)
849 *out_redrawEnter = -1;
875 if (out_redrawLeave !=
NULL)
904 if (out_redrawEnter !=
NULL)
905 *out_redrawEnter =
item;
943 LONG *iRightBottom, *iLeftTop;
945 TRACE (
"hwnd=%p fLarger=%ld (%s)\n", infoPtr->
hwnd, fLarger,
1005 if(nPos < infoPtr->leftmostVisible)
1027 const RECT* clientRect)
1035 INT vsize, tabwidth;
1062 controlPos.
left, controlPos.
top,
1071 controlPos.
left, controlPos.
top,
1083 vsize = clientRect->
right - (controlPos.
right - controlPos.
left + 1);
1087 for(; maxRange > 0; maxRange--)
1122 INT curItemRowCount;
1151 iTemp = clientRect.
bottom;
1153 clientRect.
right = iTemp;
1162 curItemRowCount = infoPtr->
uNumItem ? 1 : 0;
1167 INT icon_height = 0,
cx;
1177 if (fontMetrics.
tmHeight > icon_height)
1178 item_height = fontMetrics.
tmHeight + 2;
1180 item_height = icon_height;
1190 TRACE(
"tabH=%d, tmH=%d, iconh=%d\n",
1194 TRACE(
"client right=%d\n", clientRect.
right);
1210 for (curItem = 0; curItem < infoPtr->
uNumItem; curItem++)
1276 curr->
rect.
top = curItemRowCount - 1;
1317 infoPtr->
uNumRows = curItemRowCount;
1325 INT tabPerRow,remTab,iRow;
1337 for (iItm=0,iRow=0,iCount=0,curItemLeftPos=0;
1348 TRACE(
"r=%d, cl=%d, cl.r=%d, iCount=%d, iRow=%d, uNumRows=%d, remTab=%d, tabPerRow=%d\n",
1350 iCount, iRow, infoPtr->
uNumRows, remTab, tabPerRow);
1358 if (iCount >= ((iRow>=(
INT)infoPtr->
uNumRows - remTab)?tabPerRow + 1:tabPerRow)) {
1365 if (iCount >= ((iRow<remTab)?tabPerRow + 1:tabPerRow)) {
1392 INT widthDiff, iIndexStart=0, iIndexEnd=0;
1396 while(iIndexStart < infoPtr->uNumItem)
1404 for (iIndexEnd=iIndexStart;
1421 iCount = iIndexEnd - iIndexStart;
1426 widthDiff = widthDiff / iCount;
1428 for (iIndex=iIndexStart, iCount=0; iIndex < iIndexEnd; iIndex++, iCount++)
1432 item->rect.left += iCount * widthDiff;
1433 item->rect.right += (iCount + 1) * widthDiff;
1448 iIndexStart = iIndexEnd;
1457 for(iIndex = 0; iIndex < infoPtr->
uNumItem; iIndex++)
1461 rcOriginal = *rcItem;
1464 rcItem->
top = (rcOriginal.
left - clientRect.
left);
1466 rcItem->
left = rcOriginal.
top;
1485 RECT rTemp = *drawRect;
1507 deleteBrush =
FALSE;
1539 deleteBrush =
FALSE;
1584 drawRect = &localRect;
1593 *drawRect = selectedRect;
1595 *drawRect = itemRect;
1601 drawRect->
left += 4;
1603 drawRect->
right -= 4;
1630 drawRect->
left += 2;
1638 drawRect->
right += 1;
1642 drawRect->
right -= 2;
1680 (iItem == infoPtr->
uFocus) )
1682 RECT rFocus = *drawRect;
1724 drawRect->
right -= 1;
1738 if (infoPtr->
uFocus == iItem)
1766 INT center_offset_h, center_offset_v;
1769 rcImage = *drawRect;
1784 if (infoPtr->
himl &&
item->iImage != -1)
1794 center_offset_v = ((drawRect->
right - drawRect->
left) -
cx) / 2;
1799 center_offset_v = ((drawRect->
bottom - drawRect->
top) -
cy) / 2;
1811 if (center_offset_h < 2)
1812 center_offset_h = 2;
1814 if (center_offset_v < 0)
1815 center_offset_v = 0;
1817 TRACE(
"for <%s>, c_o_h=%d, c_o_v=%d, draw=(%s), textlen=%d\n",
1823 rcImage.
top = drawRect->
top + center_offset_h;
1827 rcImage.
left = drawRect->
right -
cx - center_offset_v;
1832 rcImage.
top = drawRect->
bottom -
cy - center_offset_h;
1833 rcImage.
left = drawRect->
left + center_offset_v;
1838 rcImage.
left = drawRect->
left + center_offset_h;
1839 rcImage.
top = drawRect->
top + center_offset_v;
1843 TRACE(
"drawing image=%d, left=%d, top=%d\n",
1861 center_offset_h = ((drawRect->
bottom - drawRect->
top) - (rcText.
right - rcText.
left)) / 2;
1863 center_offset_h = ((drawRect->
right - drawRect->
left) - (rcText.
right - rcText.
left)) / 2;
1868 drawRect->
top+=center_offset_h;
1870 drawRect->
bottom-=center_offset_h;
1872 center_offset_v = ((drawRect->
right - drawRect->
left) - (rcText.
bottom - rcText.
top)) / 2;
1876 drawRect->
left += center_offset_h;
1877 center_offset_v = ((drawRect->
bottom - drawRect->
top) - (rcText.
bottom - rcText.
top)) / 2;
1886 if (center_offset_v < 0)
1887 center_offset_v = 0;
1890 drawRect->
left += center_offset_v;
1892 drawRect->
top += center_offset_v;
1899 INT nEscapement = 900;
1900 INT nOrientation = 900;
1905 nOrientation = -900;
1934 TRACE(
"for <%s>, c_o_h=%d, c_o_v=%d, draw=(%s), textlen=%d\n",
1938 if (theme &&
item->pszText)
1947 else if (iItem == infoPtr->
uFocus)
2066 clRight =
rect.right;
2067 clBottom =
rect.bottom;
2088 static const int partIds[8] = {
2109 if(selectedRect.
left == 0)
2111 if(selectedRect.
right ==
r1.right)
2118 else if (iItem == infoPtr->
uFocus)
2137 if(selectedRect.
top == 0)
2140 if(selectedRect.
bottom == clBottom)
2149 TRACE(
"<right> item=%d, fill=(%s), edge=(%s)\n",
2171 r1.bottom =
r.bottom;
2178 if ((iItem == infoPtr->
iSelected) && (selectedRect.
top == 0)) {
2188 TRACE(
"<left> item=%d, fill=(%s), edge=(%s)\n",
2210 r1.bottom =
r.bottom;
2224 if(selectedRect.
left == 0)
2227 if(selectedRect.
right == clRight)
2240 TRACE(
"<bottom> item=%d, fill=(%s), edge=(%s)\n",
2253 r1.bottom =
r.bottom;
2262 r1.bottom =
r.bottom;
2273 if (selectedRect.
left == 0)
2292 TRACE(
"<top> item=%d, fill=(%s), edge=(%s)\n",
2410 TRACE(
"(%p)\n", infoPtr);
2450 iTargetRow = infoPtr->
uNumRows - 1;
2452 if (newselected != iTargetRow)
2462 if (
item->rect.left == newselected )
2463 item->rect.left = iTargetRow;
2466 if (
item->rect.left > newselected)
2477 if (
item->rect.top == newselected )
2478 item->rect.top = iTargetRow;
2481 if (
item->rect.top > newselected)
2550 RECT clientRect, rInvalidate, rAdjClient;
2554 if (lastRow < 0)
return;
2557 rInvalidate = clientRect;
2558 rAdjClient = clientRect;
2592 if (rInvalidate.
right > clientRect.
right -
r.left)
2593 rInvalidate.
right = rInvalidate.
right - (
r.right -
r.left);
2633 if (iItem < 0)
return -1;
2648 else if (iItem <= infoPtr->iSelected)
2678 TRACE(
"[%p]: added item %d %s\n",
2682 if (infoPtr->
uFocus == -1)
2710 TRACE(
"was h=%d,w=%d, now h=%d,w=%d\n",
2727 TRACE(
"(%p,%d)\n", infoPtr,
cx);
2745 TRACE(
"(%p,%d,%s)\n", infoPtr, iItem, fHighlight ?
"true" :
"false");
2747 if (iItem < 0 || iItem >= infoPtr->
uNumItem)
2751 oldState = *lpState;
2756 *lpState &= ~TCIS_HIGHLIGHTED;
2769 TRACE(
"(%p,%d,%p,%s)\n", infoPtr, iItem, tabItem, bUnicode ?
"true" :
"false");
2771 if (iItem < 0 || iItem >= infoPtr->
uNumItem)
2785 FIXME(
"TCIF_RTLREADING\n");
2788 wineItem->
dwState = (wineItem->
dwState & ~tabItem->dwStateMask) |
2824 TRACE(
"(%p,%d,%p,%s)\n", infoPtr, iItem, tabItem, bUnicode ?
"true" :
"false");
2826 if (!tabItem)
return FALSE;
2828 if (iItem < 0 || iItem >= infoPtr->
uNumItem)
2846 FIXME(
"TCIF_RTLREADING\n");
2869 TRACE(
"(%p, %d)\n", infoPtr, iItem);
2892 if (iItem <= infoPtr->iHotTracked)
2895 FIXME(
"Recalc hot track\n");
2902 else if (iItem < infoPtr->iSelected)
2913 TRACE(
"(%p)\n", infoPtr);
2922 TRACE(
"(%p) returning %p\n", infoPtr, infoPtr->
hFont);
2928 TRACE(
"(%p,%p)\n", infoPtr, hNewFont);
2930 infoPtr->
hFont = hNewFont;
2949 TRACE(
"himl=%p\n", himlNew);
2950 infoPtr->
himl = himlNew;
2958 TRACE(
"(%p)\n", infoPtr);
2966 TRACE(
"(%p %d)\n", infoPtr, bUnicode);
3043 TRACE(
"Created tab control, hwnd [%p]\n",
hwnd);
3119 for (iItem = infoPtr->
uNumItem - 1; iItem >= 0; iItem--)
3166 TRACE(
"(%p %d)\n", infoPtr, cbInfo);
3168 if (cbInfo < 0 || infoPtr->uNumItem)
return FALSE;
3170 infoPtr->
cbInfo = cbInfo;
3210 if (exMask == 0) exMask = ~0;
3214 FIXME(
"TCS_EX_REGISTERDROP style unimplemented\n");
3215 exMask &= ~TCS_EX_REGISTERDROP;
3216 exStyle &= ~TCS_EX_REGISTERDROP;
3243 TRACE(
"(%p, %d)\n", infoPtr, excludesel);
3258 if (!excludesel && (
selected != -1))
3286 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
3444 case WM_STYLECHANGED:
3451 case WM_THEMECHANGED:
3471 WARN(
"unknown msg %04x wp=%08lx lp=%08lx\n",
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
INT Str_GetPtrWtoA(LPCWSTR lpSrc, LPSTR lpDest, INT nMaxLen) DECLSPEC_HIDDEN
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
BOOL Str_SetPtrAtoW(LPWSTR *lppDest, LPCSTR lpSrc) DECLSPEC_HIDDEN
VOID COMCTL32_RefreshSysColors(void) DECLSPEC_HIDDEN
INT WINAPI Str_GetPtrW(LPCWSTR, LPWSTR, INT)
COMCTL32_SysColor comctl32_color
HBRUSH COMCTL32_hPattern55AABrush
static char selected[MAX_PATH+1]
LPVOID WINAPI DPA_DeletePtr(HDPA hdpa, INT i)
BOOL WINAPI DPA_Destroy(HDPA hdpa)
HDPA WINAPI DPA_Create(INT nGrow)
INT WINAPI DPA_InsertPtr(HDPA hdpa, INT i, LPVOID p)
BOOL WINAPI ImageList_Draw(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, UINT fStyle)
BOOL WINAPI ImageList_Remove(HIMAGELIST himl, INT i)
BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, INT *cx, INT *cy)
BOOL WINAPI Str_SetPtrW(LPWSTR *lppDest, LPCWSTR lpSrc)
static LRESULT TAB_MouseMove(TAB_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static void TAB_RButtonUp(const TAB_INFO *infoPtr)
static LRESULT TAB_KeyDown(TAB_INFO *infoPtr, WPARAM keyCode, LPARAM lParam)
#define TAB_GetInfoPtr(hwnd)
static LRESULT TAB_SetRedraw(TAB_INFO *infoPtr, BOOL doRedraw)
static void TAB_DrawLoneItemInterior(const TAB_INFO *infoPtr, int iItem)
static LRESULT TAB_OnHScroll(TAB_INFO *infoPtr, int nScrollCode, int nPos)
static LRESULT TAB_Size(TAB_INFO *infoPtr)
static LRESULT TAB_RemoveImage(TAB_INFO *infoPtr, INT image)
static LRESULT TAB_GetItemT(TAB_INFO *infoPtr, INT iItem, LPTCITEMW tabItem, BOOL bUnicode)
static LRESULT TAB_GetFont(const TAB_INFO *infoPtr)
static LRESULT TAB_SetCurSel(TAB_INFO *infoPtr, INT iItem)
static LRESULT TAB_NCCalcSize(WPARAM wParam)
static LRESULT TAB_SetFont(TAB_INFO *infoPtr, HFONT hNewFont)
static LRESULT TAB_SetPadding(TAB_INFO *infoPtr, LPARAM lParam)
static void TAB_DumpItemExternalT(const TCITEMW *pti, UINT iItem, BOOL isW)
static LRESULT TAB_GetUnicodeFormat(const TAB_INFO *infoPtr)
static LRESULT TAB_SetItemT(TAB_INFO *infoPtr, INT iItem, LPTCITEMW tabItem, BOOL bUnicode)
#define SELECTED_TAB_OFFSET
static LRESULT TAB_SetExtendedStyle(TAB_INFO *infoPtr, DWORD exMask, DWORD exStyle)
#define CONTROL_BORDER_SIZEY
static LRESULT TAB_LButtonUp(const TAB_INFO *infoPtr)
#define ROUND_CORNER_SIZE
static LRESULT TAB_SetItemSize(TAB_INFO *infoPtr, INT cx, INT cy)
static BOOL TAB_InternalGetItemRect(const TAB_INFO *, INT, RECT *, RECT *)
static LRESULT TAB_DeleteItem(TAB_INFO *infoPtr, INT iItem)
#define EXTRA_ICON_PADDING
static LRESULT WINAPI TAB_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static INT TAB_StyleChanged(TAB_INFO *infoPtr, WPARAM wStyleType, const STYLESTRUCT *lpss)
static LRESULT TAB_AdjustRect(const TAB_INFO *infoPtr, WPARAM fLarger, LPRECT prc)
static LRESULT TAB_DeleteAllItems(TAB_INFO *infoPtr)
static void TAB_SetItemBounds(TAB_INFO *infoPtr)
void TAB_Unregister(void)
#define EXTRA_ITEM_SIZE(infoPtr)
static LRESULT TAB_SetToolTips(TAB_INFO *infoPtr, HWND hwndToolTip)
static void TAB_RelayEvent(HWND hwndTip, HWND hwndMsg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static void TAB_SetupScrolling(TAB_INFO *infoPtr, const RECT *clientRect)
static LRESULT TAB_LButtonDown(TAB_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static void CALLBACK TAB_HotTrackTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
static DWORD TAB_GetRowCount(const TAB_INFO *infoPtr)
static INT TAB_InternalHitTest(const TAB_INFO *infoPtr, POINT pt, UINT *flags)
#define GET_DEFAULT_MIN_TAB_WIDTH(infoPtr)
#define DEFAULT_MIN_TAB_WIDTH
static BOOL TAB_GetItemRect(const TAB_INFO *infoPtr, INT item, RECT *rect)
static LRESULT TAB_SetUnicodeFormat(TAB_INFO *infoPtr, BOOL bUnicode)
static LRESULT TAB_HitTest(const TAB_INFO *infoPtr, LPTCHITTESTINFO lptest)
#define TAB_ITEM_SIZE(infoPtr)
static LRESULT TAB_SetImageList(TAB_INFO *infoPtr, HIMAGELIST himlNew)
static const WCHAR themeClass[]
static LRESULT TAB_GetImageList(const TAB_INFO *infoPtr)
#define CONTROL_BORDER_SIZEX
static TAB_ITEM * TAB_GetItem(const TAB_INFO *infoPtr, INT i)
static LRESULT TAB_NCHitTest(const TAB_INFO *infoPtr, LPARAM lParam)
static LRESULT TAB_GetCurFocus(const TAB_INFO *infoPtr)
static LRESULT TAB_GetToolTips(const TAB_INFO *infoPtr)
static LRESULT TAB_GetExtendedStyle(const TAB_INFO *infoPtr)
static LRESULT TAB_SetMinTabWidth(TAB_INFO *infoPtr, INT cx)
static LRESULT TAB_Create(HWND hwnd, LPARAM lParam)
static void TAB_InvalidateTabArea(const TAB_INFO *)
static void TAB_DrawItemInterior(const TAB_INFO *, HDC, INT, RECT *)
static LRESULT TAB_SetCurFocus(TAB_INFO *infoPtr, INT iItem)
static void TAB_KillFocus(TAB_INFO *infoPtr)
static LRESULT TAB_Destroy(TAB_INFO *infoPtr)
static LRESULT TAB_SetItemExtra(TAB_INFO *infoPtr, INT cbInfo)
static void TAB_DrawItem(const TAB_INFO *infoPtr, HDC hdc, INT iItem)
static void TAB_RecalcHotTrack(TAB_INFO *infoPtr, const LPARAM *pos, int *out_redrawLeave, int *out_redrawEnter)
static void TAB_FocusChanging(const TAB_INFO *infoPtr)
static LRESULT theme_changed(const TAB_INFO *infoPtr)
static LRESULT TAB_GetItemCount(const TAB_INFO *infoPtr)
#define DISPLAY_AREA_PADDINGX
static void TAB_EnsureSelectionVisible(TAB_INFO *)
static LRESULT TAB_InsertItemT(TAB_INFO *infoPtr, INT iItem, const TCITEMW *pti, BOOL bUnicode)
static void TAB_Refresh(const TAB_INFO *infoPtr, HDC hdc)
#define TAB_HOTTRACK_TIMER_INTERVAL
static void TAB_DrawBorder(const TAB_INFO *infoPtr, HDC hdc)
static void TAB_DumpItemInternal(const TAB_INFO *infoPtr, UINT iItem)
#define FLAT_BTN_SPACINGX
static void hottrack_refresh(const TAB_INFO *infoPtr, int tabIndex)
static LRESULT TAB_HighlightItem(TAB_INFO *infoPtr, INT iItem, BOOL fHighlight)
static void TAB_EraseTabInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, const RECT *drawRect)
static BOOL TAB_SendSimpleNotify(const TAB_INFO *infoPtr, UINT code)
static LRESULT TAB_GetCurSel(const TAB_INFO *infoPtr)
static LRESULT TAB_DeselectAll(TAB_INFO *, BOOL)
static LRESULT TAB_Paint(TAB_INFO *infoPtr, HDC hdcPaint)
#define TAB_HOTTRACK_TIMER
#define DISPLAY_AREA_PADDINGY
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
HRESULT WINAPI DrawThemeText(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, LPCWSTR pszText, int iCharCount, DWORD dwTextFlags, DWORD dwTextFlags2, const RECT *pRect)
HRESULT WINAPI GetThemeBackgroundContentRect(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pBoundingRect, RECT *pContentRect)
HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR classlist)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
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
static const WCHAR emptyW[]
double __cdecl remainder(double, double)
#define memcpy(s1, s2, n)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
unsigned __int3264 UINT_PTR
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
#define TCS_EX_REGISTERDROP
_Out_opt_ int _Out_opt_ int * cy
#define TCS_EX_FLATSEPARATORS
#define TCS_OWNERDRAWFIXED
#define TCIS_BUTTONPRESSED
#define TCM_DELETEALLITEMS
#define NM_TOOLTIPSCREATED
#define TCS_FORCELABELLEFT
#define TCM_SETEXTENDEDSTYLE
#define TCM_GETEXTENDEDSTYLE
#define TCM_GETUNICODEFORMAT
#define TCM_SETMINTABWIDTH
#define TCM_HIGHLIGHTITEM
#define TCM_SETUNICODEFORMAT
#define TCS_FORCEICONLEFT
COLORREF clrHighlightText
TW_UINT32 TW_UINT16 TW_UINT16 MSG
@ TABP_TOPTABITEMRIGHTEDGE
@ TABP_TOPTABITEMBOTHEDGE
@ TABP_TOPTABITEMLEFTEDGE
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
int WINAPI ExcludeClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
HWND WINAPI GetFocus(void)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI IsWindow(_In_opt_ HWND)
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
#define GetWindowLongPtrW
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
DWORD WINAPI GetMessagePos(void)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
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)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
#define BF_DIAGONAL_ENDTOPRIGHT
#define WM_SYSCOLORCHANGE
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI DrawEdge(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
HWND WINAPI SetFocus(_In_opt_ HWND)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define BF_DIAGONAL_ENDBOTTOMLEFT
HDC WINAPI GetDC(_In_opt_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
LONG WINAPI GetMessageTime(void)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
#define BF_DIAGONAL_ENDBOTTOMRIGHT
HWND WINAPI WindowFromPoint(_In_ POINT)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
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)
BOOL WINAPI DestroyWindow(_In_ HWND)
#define BF_DIAGONAL_ENDTOPLEFT
struct tagCREATESTRUCTW * LPCREATESTRUCTW
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free