Changeset 3154 for trunk/src/comctl32/status.cpp
- Timestamp:
- Mar 18, 2000, 5:17:35 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/status.cpp
r2875 r3154 1 /* $Id: status.cpp,v 1. 1 2000-02-23 17:09:48cbratschi Exp $ */1 /* $Id: status.cpp,v 1.2 2000-03-18 16:17:29 cbratschi Exp $ */ 2 2 /* 3 3 * Interface code to StatusWindow widget/control … … 14 14 #include "commctrl.h" 15 15 #include "comctl32.h" 16 #include "ccbase.h" 16 17 #include "status.h" 17 18 #include <string.h> … … 44 45 #define TEXT_SPACE 3 45 46 46 #define STATUSBAR_GetInfoPtr(hwnd) ((STATUSWINDOWINFO *)GetWindowLongA (hwnd, 0))47 #define STATUSBAR_GetInfoPtr(hwnd) ((STATUSWINDOWINFO*)getInfoPtr(hwnd)) 47 48 48 49 … … 489 490 490 491 return 0; 491 }492 493 494 static LRESULT495 STATUSBAR_GetUnicodeFormat (HWND hwnd)496 {497 STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);498 return infoPtr->bUnicode;499 492 } 500 493 … … 793 786 STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd); 794 787 795 // TRACE (statusbar, "part %d: \"%s\"\n", (INT)wParam, (LPSTR)lParam);796 788 if (infoPtr->hwndToolTip) { 797 789 TTTOOLINFOW ti; … … 808 800 } 809 801 810 811 static LRESULT812 STATUSBAR_SetUnicodeFormat (HWND hwnd, WPARAM wParam)813 {814 STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);815 BOOL bTemp = infoPtr->bUnicode;816 817 // TRACE (statusbar, "(0x%x)\n", (BOOL)wParam);818 infoPtr->bUnicode = (BOOL)wParam;819 820 return bTemp;821 }822 823 824 802 static LRESULT 825 803 STATUSBAR_Simple (HWND hwnd, WPARAM wParam, LPARAM lParam) … … 827 805 STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd); 828 806 HDC hdc; 829 NMHDR nmhdr;830 807 831 808 infoPtr->simple = (BOOL)wParam; 832 809 833 810 /* send notification */ 834 nmhdr.hwndFrom = hwnd; 835 nmhdr.idFrom = GetWindowLongA (hwnd, GWL_ID); 836 nmhdr.code = SBN_SIMPLEMODECHANGE; 837 SendMessageA (GetParent (hwnd), WM_NOTIFY, 0, (LPARAM)&nmhdr); 811 sendNotify(hwnd,SBN_SIMPLEMODECHANGE); 838 812 839 813 hdc = GetDC (hwnd); … … 855 829 STATUSWINDOWINFO *infoPtr; 856 830 857 infoPtr = (STATUSWINDOWINFO*)COMCTL32_Alloc (sizeof(STATUSWINDOWINFO)); 858 SetWindowLongA (hwnd, 0, (DWORD)infoPtr); 831 infoPtr = (STATUSWINDOWINFO*)initControl(hwnd,sizeof(STATUSWINDOWINFO)); 859 832 860 833 infoPtr->numParts = 1; … … 884 857 infoPtr->parts[0].hIcon = 0; 885 858 886 if ( IsWindowUnicode (hwnd)) {887 infoPtr->bUnicode = TRUE;888 if (lpCreate->lpszName &&889 (len = lstrlenW ((LPCWSTR)lpCreate->lpszName))){890 891 892 893 } 894 else{895 if (lpCreate->lpszName &&896 (len = lstrlenA ((LPCSTR)lpCreate->lpszName))){897 898 899 859 if (infoPtr->header.fUnicode) 860 { 861 if (lpCreate->lpszName && (len = lstrlenW ((LPCWSTR)lpCreate->lpszName))) 862 { 863 infoPtr->parts[0].text = (WCHAR*)COMCTL32_Alloc ((len + 1)*sizeof(WCHAR)); 864 lstrcpyW (infoPtr->parts[0].text, (LPCWSTR)lpCreate->lpszName); 865 } 866 } else 867 { 868 if (lpCreate->lpszName && (len = lstrlenA ((LPCSTR)lpCreate->lpszName))) 869 { 870 infoPtr->parts[0].text = (WCHAR*)COMCTL32_Alloc ((len + 1)*sizeof(WCHAR)); 871 lstrcpyAtoW (infoPtr->parts[0].text, (char*)lpCreate->lpszName); 872 } 900 873 } 901 874 … … 912 885 } 913 886 914 if (GetWindowLongA (hwnd, GWL_STYLE) & SBT_TOOLTIPS) { 915 infoPtr->hwndToolTip = 916 CreateWindowExA (0, TOOLTIPS_CLASSA, NULL, 0, 917 CW_USEDEFAULT, CW_USEDEFAULT, 918 CW_USEDEFAULT, CW_USEDEFAULT, 919 hwnd, 0, 920 GetWindowLongA (hwnd, GWL_HINSTANCE), NULL); 921 922 if (infoPtr->hwndToolTip) { 923 NMTOOLTIPSCREATED nmttc; 924 925 nmttc.hdr.hwndFrom = hwnd; 926 nmttc.hdr.idFrom = GetWindowLongA (hwnd, GWL_ID); 927 nmttc.hdr.code = NM_TOOLTIPSCREATED; 928 nmttc.hwndToolTips = infoPtr->hwndToolTip; 929 930 SendMessageA (GetParent (hwnd), WM_NOTIFY, 931 (WPARAM)nmttc.hdr.idFrom, (LPARAM)&nmttc); 932 } 933 } 887 if (GetWindowLongA(hwnd,GWL_STYLE) & SBT_TOOLTIPS) 888 infoPtr->hwndToolTip = createToolTip(hwnd,0,FALSE); 934 889 935 890 GetClientRect (GetParent (hwnd), &rect); … … 948 903 STATUSBAR_WMDestroy (HWND hwnd) 949 904 { 950 STATUSWINDOWINFO * self= STATUSBAR_GetInfoPtr (hwnd);905 STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd); 951 906 int i; 952 907 953 for (i = 0; i < self->numParts; i++) {954 if ( self->parts[i].text && !(self->parts[i].style & SBT_OWNERDRAW))955 COMCTL32_Free ( self->parts[i].text);956 } 957 if ( self->part0.text && !(self->part0.style & SBT_OWNERDRAW))958 COMCTL32_Free ( self->part0.text);959 COMCTL32_Free ( self->parts);908 for (i = 0; i < infoPtr->numParts; i++) { 909 if (infoPtr->parts[i].text && !(infoPtr->parts[i].style & SBT_OWNERDRAW)) 910 COMCTL32_Free (infoPtr->parts[i].text); 911 } 912 if (infoPtr->part0.text && !(infoPtr->part0.style & SBT_OWNERDRAW)) 913 COMCTL32_Free (infoPtr->part0.text); 914 COMCTL32_Free (infoPtr->parts); 960 915 961 916 /* delete default font */ 962 if ( self->hDefaultFont)963 DeleteObject ( self->hDefaultFont);917 if (infoPtr->hDefaultFont) 918 DeleteObject (infoPtr->hDefaultFont); 964 919 965 920 /* delete tool tip control */ 966 if (self->hwndToolTip) 967 DestroyWindow (self->hwndToolTip); 968 969 COMCTL32_Free (self); 921 destroyToolTip(infoPtr->hwndToolTip); 922 923 doneControl(hwnd); 970 924 971 925 return 0; … … 990 944 return 0; 991 945 len = lstrlenW (infoPtr->parts[0].text); 992 if (wParam > len) { 993 if (infoPtr->bUnicode) 994 lstrcpyW ((LPWSTR)lParam, infoPtr->parts[0].text); 995 else 996 lstrcpyWtoA ((LPSTR)lParam, infoPtr->parts[0].text); 997 return len; 946 if (wParam > len) 947 { 948 if (infoPtr->header.fUnicode) 949 lstrcpyW ((LPWSTR)lParam, infoPtr->parts[0].text); 950 else 951 lstrcpyWtoA ((LPSTR)lParam, infoPtr->parts[0].text); 952 return len; 998 953 } 999 954 … … 1109 1064 COMCTL32_Free (part->text); 1110 1065 part->text = 0; 1111 if (infoPtr-> bUnicode) {1066 if (infoPtr->header.fUnicode) { 1112 1067 if (lParam && (len = lstrlenW((LPCWSTR)lParam))) { 1113 1068 part->text = (WCHAR*)COMCTL32_Alloc ((len+1)*sizeof(WCHAR)); … … 1160 1115 } 1161 1116 1162 1163 static LRESULT1164 STATUSBAR_SendNotify (HWND hwnd, UINT code)1165 {1166 NMHDR nmhdr;1167 1168 nmhdr.hwndFrom = hwnd;1169 nmhdr.idFrom = GetWindowLongA (hwnd, GWL_ID);1170 nmhdr.code = code;1171 SendMessageA (GetParent (hwnd), WM_NOTIFY, 0, (LPARAM)&nmhdr);1172 return 0;1173 }1174 1175 1176 1177 1117 static LRESULT WINAPI 1178 1118 StatusWindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) … … 1207 1147 return STATUSBAR_GetTipTextW (hwnd, wParam, lParam); 1208 1148 1209 case SB_GETUNICODEFORMAT:1210 return STATUSBAR_GetUnicodeFormat (hwnd);1211 1212 1149 case SB_ISSIMPLE: 1213 1150 return STATUSBAR_IsSimple (hwnd); … … 1237 1174 return STATUSBAR_SetTipTextW (hwnd, wParam, lParam); 1238 1175 1239 case SB_SETUNICODEFORMAT:1240 return STATUSBAR_SetUnicodeFormat (hwnd, wParam);1241 1242 1176 case SB_SIMPLE: 1243 1177 return STATUSBAR_Simple (hwnd, wParam, lParam); … … 1260 1194 1261 1195 case WM_LBUTTONDBLCLK: 1262 return STATUSBAR_SendNotify (hwnd,NM_DBLCLK);1196 return sendNotify(hwnd,NM_DBLCLK); 1263 1197 1264 1198 case WM_LBUTTONUP: 1265 return STATUSBAR_SendNotify (hwnd,NM_CLICK);1199 return sendNotify(hwnd,NM_CLICK); 1266 1200 1267 1201 case WM_MOUSEMOVE: … … 1281 1215 1282 1216 case WM_RBUTTONDBLCLK: 1283 return STATUSBAR_SendNotify (hwnd,NM_RDBLCLK);1217 return sendNotify(hwnd,NM_RDBLCLK); 1284 1218 1285 1219 case WM_RBUTTONUP: 1286 return STATUSBAR_SendNotify (hwnd,NM_RCLICK);1220 return sendNotify(hwnd,NM_RCLICK); 1287 1221 1288 1222 case WM_SETFONT: … … 1299 1233 // ERR (statusbar, "unknown msg %04x wp=%04x lp=%08lx\n", 1300 1234 // msg, wParam, lParam); 1301 return DefWindowProcA (hwnd, msg, wParam, lParam);1235 return defComCtl32ProcA (hwnd, msg, wParam, lParam); 1302 1236 } 1303 1237 return 0; … … 1315 1249 { 1316 1250 WNDCLASSA wndClass; 1317 1318 //SvL: Don't check this now1319 // if (GlobalFindAtomA (STATUSCLASSNAMEA)) return;1320 1251 1321 1252 ZeroMemory (&wndClass, sizeof(WNDCLASSA)); … … 1341 1272 STATUS_Unregister (VOID) 1342 1273 { 1343 if (GlobalFindAtomA (STATUSCLASSNAMEA)) 1344 UnregisterClassA (STATUSCLASSNAMEA, (HINSTANCE)NULL); 1345 } 1346 1274 UnregisterClassA (STATUSCLASSNAMEA, (HINSTANCE)NULL); 1275 } 1276
Note:
See TracChangeset
for help on using the changeset viewer.