Changeset 3145 for trunk/src/comctl32/trackbar.cpp
- Timestamp:
- Mar 17, 2000, 6:13:26 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/trackbar.cpp
r2875 r3145 1 /* $Id: trackbar.cpp,v 1. 1 2000-02-23 17:09:49cbratschi Exp $ */1 /* $Id: trackbar.cpp,v 1.2 2000-03-17 17:13:26 cbratschi Exp $ */ 2 2 /* 3 3 * Trackbar control … … 18 18 #include "winbase.h" 19 19 #include "commctrl.h" 20 #include "ccbase.h" 20 21 #include "trackbar.h" 21 22 #include <stdio.h> 22 23 23 #define TRACKBAR_GetInfoPtr(hwnd) ((TRACKBAR_INFO*) GetWindowLongA(hwnd,0))24 #define TRACKBAR_GetInfoPtr(hwnd) ((TRACKBAR_INFO*)getInfoPtr(hwnd)) 24 25 25 26 … … 60 61 #define CHANNEL_SCALE_SPACE SCALE_SIZE+SCALE_SPACE+BORDER_SIZE 61 62 #define CHANNEL_THUMB_SPACE BORDER_SIZE 63 64 #define TOOLTIP_SPACE 5 62 65 63 66 /* scroll mode */ … … 705 708 706 709 //Custom draw 707 cdraw.hdr.hwndFrom = hwnd;708 cdraw.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID);709 cdraw.hdr.code = NM_CUSTOMDRAW;710 710 cdraw.dwDrawStage = CDDS_PREPAINT; 711 711 cdraw.hdc = hdc; … … 715 715 cdraw.lItemlParam = 0; 716 716 717 cdctlres = SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);717 cdctlres = sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 718 718 719 719 if (cdctlres & CDRF_SKIPDEFAULT) return; … … 750 750 cdraw.rc = infoPtr->rcChannel; 751 751 752 cdres = SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);752 cdres = sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 753 753 } else cdres = 0; 754 754 … … 777 777 cdraw.dwDrawStage = CDDS_ITEMPOSTPAINT; 778 778 779 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);779 sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 780 780 } 781 781 } … … 789 789 SetRectEmpty(&cdraw.rc); 790 790 791 cdres = SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);791 cdres = sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 792 792 } else cdres = 0; 793 793 … … 840 840 cdraw.dwDrawStage = CDDS_ITEMPOSTPAINT; 841 841 842 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);842 sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 843 843 } 844 844 } … … 852 852 cdraw.rc = infoPtr->rcFullThumb; 853 853 854 cdres = SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);854 cdres = sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 855 855 } else cdres = 0; 856 856 … … 863 863 cdraw.dwDrawStage = CDDS_ITEMPOSTPAINT; 864 864 865 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);865 sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 866 866 } 867 867 … … 876 876 GetClientRect(hwnd,&cdraw.rc); 877 877 878 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);878 sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 879 879 } 880 880 … … 977 977 978 978 GetWindowRect(hwnd,&rcSelf); 979 MapWindowPoints(HWND_DESKTOP,hwndParent,(LPPOINT)&rcSelf,2); 979 980 980 981 /* align buddy left or above */ … … 985 986 if (dwStyle & TBS_VERT) 986 987 { //above 987 x = rcSelf.left-(rcBuddy.right-rcBuddy.left)/2+infoPtr->rcChannel.left+(infoPtr->rcChannel.right-infoPtr->rcChannel.left)/2;988 988 x = (infoPtr->rcChannel.right+infoPtr->rcChannel.left)/2-(rcBuddy.right-rcBuddy.left)/2+rcSelf.left; 989 y = rcSelf.top-(rcBuddy.bottom-rcBuddy.top); 989 990 } else 990 991 { //left 991 x = rcSelf.left+infoPtr->rcChannel.left-(rcBuddy.right-rcBuddy.left)/2;992 y = rcSelf.top-(rcBuddy.bottom-rcBuddy.top);992 x = rcSelf.left-(rcBuddy.right-rcBuddy.left); 993 y = (infoPtr->rcChannel.bottom+infoPtr->rcChannel.top)/2-(rcBuddy.bottom-rcBuddy.top)/2+rcSelf.top; 993 994 } 994 995 … … 1004 1005 if (dwStyle & TBS_VERT) 1005 1006 { //below 1006 x = rcSelf.left-(rcBuddy.right-rcBuddy.left)/2+infoPtr->rcChannel.left+(infoPtr->rcChannel.right-infoPtr->rcChannel.left)/2;1007 1007 x = (infoPtr->rcChannel.right+infoPtr->rcChannel.left)/2-(rcBuddy.right-rcBuddy.left)/2+rcSelf.left; 1008 y = rcSelf.bottom; 1008 1009 } else 1009 { 1010 x = rcSelf.right -infoPtr->rcChannel.left-(rcBuddy.right-rcBuddy.left)/2;1011 y = rcSelf.top-(rcBuddy.bottom-rcBuddy.top);1010 { //right 1011 x = rcSelf.right; 1012 y = (infoPtr->rcChannel.bottom+infoPtr->rcChannel.top)/2-(rcBuddy.bottom-rcBuddy.top)/2+rcSelf.top; 1012 1013 } 1013 1014 … … 1227 1228 } 1228 1229 1229 1230 static1231 TRACKBAR_GetUnicodeFormat(HWND hwnd,WPARAM wParam,LPARAM lParam)1232 {1233 return FALSE; //Unicode not used1234 }1235 1230 1236 1231 static LRESULT … … 1675 1670 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE); 1676 1671 1677 infoPtr = (TRACKBAR_INFO *)COMCTL32_Alloc(sizeof(TRACKBAR_INFO)); 1678 SetWindowLongA(hwnd,0,(DWORD)infoPtr); 1672 infoPtr = (TRACKBAR_INFO*)initControl(hwnd,sizeof(TRACKBAR_INFO)); 1679 1673 1680 1674 /* set default values */ … … 1691 1685 infoPtr->tics = NULL; 1692 1686 infoPtr->clrBk = GetSysColor(COLOR_3DFACE); 1693 infoPtr->hwndNotify = GetParent(hwnd);1694 1687 1695 1688 infoPtr->hwndBuddyLA = 0; … … 1711 1704 if (dwStyle & TBS_TOOLTIPS) 1712 1705 { 1713 TTTOOLINFOA ti; 1714 1715 infoPtr->hwndToolTip = 1716 CreateWindowExA (WS_EX_TOOLWINDOW,TOOLTIPS_CLASSA,NULL,WS_POPUP, 1717 CW_USEDEFAULT,CW_USEDEFAULT, 1718 CW_USEDEFAULT,CW_USEDEFAULT, 1719 hwnd,0,0,0); 1720 1721 /* Send NM_TOOLTIPSCREATED notification */ 1722 if (infoPtr->hwndToolTip) 1723 { 1724 NMTOOLTIPSCREATED nmttc; 1725 1726 nmttc.hdr.hwndFrom = hwnd; 1727 nmttc.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 1728 nmttc.hdr.code = NM_TOOLTIPSCREATED; 1729 nmttc.hwndToolTips = infoPtr->hwndToolTip; 1730 1731 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmttc.hdr.idFrom,(LPARAM)&nmttc); 1732 } 1733 1734 ZeroMemory(&ti,sizeof(TTTOOLINFOA)); 1735 ti.cbSize = sizeof(TTTOOLINFOA); 1736 ti.uFlags = TTF_TRACK | TTF_CENTERTIP | TTF_ABSOLUTE; 1737 ti.hwnd = hwnd; 1738 ti.uId = 0; 1739 ti.lpszText = ""; 1740 SetRectEmpty(&ti.rect); 1741 1742 SendMessageA(infoPtr->hwndToolTip,TTM_ADDTOOLA,0,(LPARAM)&ti); 1743 } else infoPtr->hwndToolTip = 0; 1706 UINT uFlags = TTF_TRACK | TTF_ABSOLUTE; 1707 1708 if (dwStyle & TBS_VERT) 1709 if (infoPtr->fLocation == TBTS_RIGHT) 1710 uFlags |= TTF_ALIGNRIGHT | TTF_VCENTER; 1711 else 1712 uFlags |= TTF_ALIGNLEFT | TTF_VCENTER; 1713 else 1714 if (infoPtr->fLocation == TBTS_TOP) 1715 uFlags |= TTF_ALIGNTOP | TTF_HCENTER; 1716 else 1717 uFlags |= TTF_ALIGNBOTTOM | TTF_HCENTER; 1718 1719 infoPtr->hwndToolTip = createToolTip(hwnd,uFlags); 1720 } 1744 1721 1745 1722 return 0; … … 1753 1730 1754 1731 /* delete tooltip control */ 1755 if (infoPtr->hwndToolTip) DestroyWindow(infoPtr->hwndToolTip);1732 destroyToolTip(infoPtr->hwndToolTip); 1756 1733 1757 1734 COMCTL32_Free(infoPtr->tics); 1758 COMCTL32_Free(infoPtr);1735 doneControl(hwnd); 1759 1736 1760 1737 return 0; … … 1767 1744 if (infoPtr->fLocation == TBTS_RIGHT) 1768 1745 { 1769 pt->x = infoPtr->rcFullThumb.right ;1746 pt->x = infoPtr->rcFullThumb.right+TOOLTIP_SPACE; 1770 1747 pt->y = infoPtr->rcFullThumb.top+(infoPtr->rcFullThumb.bottom-infoPtr->rcFullThumb.top)/2; 1771 1748 } else 1772 1749 { 1773 pt->x = infoPtr->rcFullThumb.left- 15; //CB: optimize!1750 pt->x = infoPtr->rcFullThumb.left-TOOLTIP_SPACE; 1774 1751 pt->y = infoPtr->rcFullThumb.top+(infoPtr->rcFullThumb.bottom-infoPtr->rcFullThumb.top)/2; 1775 1752 } … … 1780 1757 { 1781 1758 pt->x = infoPtr->rcFullThumb.left+(infoPtr->rcFullThumb.right-infoPtr->rcFullThumb.left)/2; 1782 pt->y = infoPtr->rcFullThumb.top- 15; //CB: optimize!1759 pt->y = infoPtr->rcFullThumb.top-TOOLTIP_SPACE; 1783 1760 } else 1784 1761 { 1785 1762 pt->x = infoPtr->rcFullThumb.left+(infoPtr->rcFullThumb.right-infoPtr->rcFullThumb.left)/2; 1786 pt->y = infoPtr->rcFullThumb.bottom ;1763 pt->y = infoPtr->rcFullThumb.bottom+TOOLTIP_SPACE; 1787 1764 } 1788 1765 } … … 1877 1854 char buf[80]; 1878 1855 1879 TRACKBAR_CalcToolTipPos(hwnd,dwStyle,infoPtr,&pt);1880 SendMessageA(infoPtr->hwndToolTip,TTM_TRACKPOSITION,0,(LPARAM)MAKELPARAM(pt.x,pt.y));1881 1882 1856 ti.cbSize = sizeof(TTTOOLINFOA); 1883 1857 ti.uId = 0; … … 1891 1865 1892 1866 SendMessageA(infoPtr->hwndToolTip,TTM_UPDATETIPTEXTA,0,(LPARAM)&ti); 1867 TRACKBAR_CalcToolTipPos(hwnd,dwStyle,infoPtr,&pt); 1868 SendMessageA(infoPtr->hwndToolTip,TTM_TRACKPOSITION,0,(LPARAM)MAKELPARAM(pt.x,pt.y)); 1869 1893 1870 SendMessageA(infoPtr->hwndToolTip,TTM_TRACKACTIVATE,(WPARAM)TRUE,(LPARAM)&ti); 1894 1871 } … … 1955 1932 if (GetCapture() == hwnd) 1956 1933 { 1957 NMHDR nmhdr; 1958 1959 nmhdr.hwndFrom = hwnd; 1960 nmhdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 1961 nmhdr.code = NM_RELEASEDCAPTURE; 1962 1963 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.idFrom,(LPARAM)&nmhdr); 1934 sendNotify(hwnd,NM_RELEASEDCAPTURE); 1964 1935 1965 1936 ReleaseCapture(); … … 1975 1946 if (GetCapture() == hwnd) 1976 1947 { 1977 NMHDR nmhdr; 1978 1979 nmhdr.hwndFrom = hwnd; 1980 nmhdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 1981 nmhdr.code = NM_RELEASEDCAPTURE; 1982 1983 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.idFrom,(LPARAM)&nmhdr); 1948 sendNotify(hwnd,NM_RELEASEDCAPTURE); 1984 1949 1985 1950 ReleaseCapture(); … … 2150 2115 2151 2116 2152 static BOOL 2153 TRACKBAR_SendNotify (HWND hwnd, UINT code) 2154 { 2155 // TRACE (trackbar, "%x\n",code); 2156 2157 if (GetWindowLongA(hwnd, GWL_STYLE) & TBS_VERT) 2158 { 2159 return (BOOL)SendMessageA(GetParent(hwnd),WM_VSCROLL,(WPARAM)code,(LPARAM)hwnd); 2160 } else 2161 { 2162 return (BOOL)SendMessageA(GetParent(hwnd),WM_HSCROLL,(WPARAM)code,(LPARAM)hwnd); 2163 } 2117 static BOOL TRACKBAR_SendNotify (HWND hwnd, UINT code) 2118 { 2119 if (GetWindowLongA(hwnd, GWL_STYLE) & TBS_VERT) 2120 return sendVScroll(hwnd,code); 2121 else 2122 return sendHScroll(hwnd,code); 2164 2123 } 2165 2124 … … 2172 2131 SHORT clickPlace; 2173 2132 DOUBLE dragPos; 2174 2175 // TRACE (trackbar, "%x\n",wParam);2176 2133 2177 2134 if (!(infoPtr->flags & TB_DRAG_MODE)) return TRUE; … … 2202 2159 ti.uId = 0; 2203 2160 ti.hinst = 0; 2204 sprintf 2161 sprintf(buf,"%d",infoPtr->nPos); 2205 2162 ti.lpszText = (LPSTR)buf; 2206 2163 … … 2373 2330 return TRACKBAR_GetToolTips (hwnd, wParam, lParam); 2374 2331 2375 case TBM_GETUNICODEFORMAT:2376 return TRACKBAR_GetUnicodeFormat(hwnd,wParam,lParam);2377 2378 2332 case TBM_SETBUDDY: 2379 2333 return TRACKBAR_SetBuddy (hwnd, wParam, lParam); … … 2479 2433 // ERR (trackbar, "unknown msg %04x wp=%08x lp=%08lx\n", 2480 2434 // uMsg, wParam, lParam); 2481 return DefWindowProcA (hwnd, uMsg, wParam, lParam);2435 return defComCtl32ProcA (hwnd, uMsg, wParam, lParam); 2482 2436 } 2483 2437 return 0; … … 2489 2443 { 2490 2444 WNDCLASSA wndClass; 2491 2492 //SvL: Don't check this now2493 // if (GlobalFindAtomA (TRACKBAR_CLASSA)) return;2494 2445 2495 2446 ZeroMemory (&wndClass, sizeof(WNDCLASSA)); … … 2509 2460 TRACKBAR_Unregister (VOID) 2510 2461 { 2511 if (GlobalFindAtomA (TRACKBAR_CLASSA)) 2512 UnregisterClassA (TRACKBAR_CLASSA, (HINSTANCE)NULL); 2513 } 2514 2462 UnregisterClassA (TRACKBAR_CLASSA, (HINSTANCE)NULL); 2463 } 2464
Note:
See TracChangeset
for help on using the changeset viewer.