Changeset 6709 for trunk/src/comctl32/comctl32.c
- Timestamp:
- Sep 15, 2001, 11:26:26 AM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/comctl32.c
r6705 r6709 1 /* 1 /* 2 2 * Common controls functions 3 3 * … … 99 99 100 100 switch (fdwReason) { 101 101 case DLL_PROCESS_ATTACH: 102 102 COMCTL32_hModule = (HMODULE)hinstDLL; 103 103 … … 130 130 break; 131 131 132 132 case DLL_PROCESS_DETACH: 133 133 /* unregister all common control classes */ 134 134 ANIMATE_Unregister (); … … 204 204 VOID WINAPI 205 205 MenuHelp (UINT uMsg, WPARAM wParam, LPARAM lParam, HMENU hMainMenu, 206 206 HINSTANCE hInst, HWND hwndStatus, LPUINT lpwIDs) 207 207 { 208 208 UINT uMenuID = 0; 209 209 210 210 if (!IsWindow (hwndStatus)) 211 211 return; 212 212 213 213 switch (uMsg) { 214 215 216 214 case WM_MENUSELECT: 215 TRACE("WM_MENUSELECT wParam=0x%X lParam=0x%lX\n", 216 wParam, lParam); 217 217 218 218 if ((HIWORD(wParam) == 0xFFFF) && (lParam == 0)) { 219 219 /* menu was closed */ 220 220 TRACE("menu was closed!\n"); 221 221 SendMessageA (hwndStatus, SB_SIMPLE, FALSE, 0); 222 222 } 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 223 else { 224 /* menu item was selected */ 225 if (HIWORD(wParam) & MF_POPUP) 226 uMenuID = (UINT)*(lpwIDs+1); 227 else 228 uMenuID = (UINT)LOWORD(wParam); 229 TRACE("uMenuID = %u\n", uMenuID); 230 231 if (uMenuID) { 232 CHAR szText[256]; 233 234 if (!LoadStringA (hInst, uMenuID, szText, 256)) 235 szText[0] = '\0'; 236 237 SendMessageA (hwndStatus, SB_SETTEXTA, 238 255 | SBT_NOBORDERS, (LPARAM)szText); 239 SendMessageA (hwndStatus, SB_SIMPLE, TRUE, 0); 240 } 241 } 242 break; 243 243 244 244 case WM_COMMAND : 245 246 247 248 245 TRACE("WM_COMMAND wParam=0x%X lParam=0x%lX\n", 246 wParam, lParam); 247 /* WM_COMMAND is not invalid since it is documented 248 * in the windows api reference. So don't output 249 249 * any FIXME for WM_COMMAND 250 250 */ 251 252 253 254 255 256 257 } 258 } 259 260 261 /*********************************************************************** 262 * ShowHideMenuCtl [COMCTL32.3] 251 WARN("We don't care about the WM_COMMAND\n"); 252 break; 253 254 default: 255 FIXME("Invalid Message 0x%x!\n", uMsg); 256 break; 257 } 258 } 259 260 261 /*********************************************************************** 262 * ShowHideMenuCtl [COMCTL32.3] 263 263 * 264 264 * Shows or hides controls and updates the corresponding menu item. … … 297 297 298 298 if (lpInfo == NULL) 299 299 return FALSE; 300 300 301 301 if (!(lpInfo[0]) || !(lpInfo[1])) 302 302 return FALSE; 303 303 304 304 /* search for control */ 305 305 lpMenuId = &lpInfo[2]; 306 306 while (*lpMenuId != uFlags) 307 307 lpMenuId += 2; 308 308 309 309 if (GetMenuState (lpInfo[1], uFlags, MF_BYCOMMAND) & MFS_CHECKED) { 310 311 312 313 314 315 316 310 /* uncheck menu item */ 311 CheckMenuItem (lpInfo[0], *lpMenuId, MF_BYCOMMAND | MF_UNCHECKED); 312 313 /* hide control */ 314 lpMenuId++; 315 SetWindowPos (GetDlgItem (hwnd, *lpMenuId), 0, 0, 0, 0, 0, 316 SWP_HIDEWINDOW); 317 317 } 318 318 else { 319 320 321 322 323 324 325 319 /* check menu item */ 320 CheckMenuItem (lpInfo[0], *lpMenuId, MF_BYCOMMAND | MF_CHECKED); 321 322 /* show control */ 323 lpMenuId++; 324 SetWindowPos (GetDlgItem (hwnd, *lpMenuId), 0, 0, 0, 0, 0, 325 SWP_SHOWWINDOW); 326 326 } 327 327 … … 357 357 358 358 TRACE("(0x%08lx 0x%08lx 0x%08lx)\n", 359 359 (DWORD)hwnd, (DWORD)lpRect, (DWORD)lpInfo); 360 360 361 361 GetClientRect (hwnd, lpRect); … … 363 363 364 364 do { 365 366 367 368 369 370 371 372 373 374 375 376 365 lpRun += 2; 366 if (*lpRun == 0) 367 return; 368 lpRun++; 369 hwndCtrl = GetDlgItem (hwnd, *lpRun); 370 if (GetWindowLongA (hwndCtrl, GWL_STYLE) & WS_VISIBLE) { 371 TRACE("control id 0x%x\n", *lpRun); 372 GetWindowRect (hwndCtrl, &rcCtrl); 373 MapWindowPoints ((HWND)0, hwnd, (LPPOINT)&rcCtrl, 2); 374 SubtractRect (lpRect, lpRect, &rcCtrl); 375 } 376 lpRun++; 377 377 } while (*lpRun); 378 378 } … … 416 416 r.left += 3; 417 417 DrawTextA (hdc, text, lstrlenA(text), 418 &r, DT_LEFT|DT_VCENTER|DT_SINGLELINE); 418 &r, DT_LEFT|DT_VCENTER|DT_SINGLELINE); 419 419 if (oldbkmode != TRANSPARENT) 420 420 SetBkMode(hdc, oldbkmode); 421 421 } 422 422 } … … 466 466 CreateStatusWindowA (INT style, LPCSTR text, HWND parent, UINT wid) 467 467 { 468 return CreateWindowA(STATUSCLASSNAMEA, text, style, 469 470 CW_USEDEFAULT, CW_USEDEFAULT, 471 468 return CreateWindowA(STATUSCLASSNAMEA, text, style, 469 CW_USEDEFAULT, CW_USEDEFAULT, 470 CW_USEDEFAULT, CW_USEDEFAULT, 471 parent, wid, 0, 0); 472 472 } 473 473 … … 491 491 { 492 492 return CreateWindowW(STATUSCLASSNAMEW, text, style, 493 494 495 493 CW_USEDEFAULT, CW_USEDEFAULT, 494 CW_USEDEFAULT, CW_USEDEFAULT, 495 parent, wid, 0, 0); 496 496 } 497 497 … … 521 521 HWND WINAPI 522 522 CreateUpDownControl (DWORD style, INT x, INT y, INT cx, INT cy, 523 524 523 HWND parent, INT id, HINSTANCE inst, 524 HWND buddy, INT maxVal, INT minVal, INT curVal) 525 525 { 526 526 HWND hUD = 527 528 527 CreateWindowA (UPDOWN_CLASSA, 0, style, x, y, cx, cy, 528 parent, id, inst, 0); 529 529 if (hUD) { 530 531 532 SendMessageA (hUD, UDM_SETPOS, 0, MAKELONG(curVal, 0)); 530 SendMessageA (hUD, UDM_SETBUDDY, buddy, 0); 531 SendMessageA (hUD, UDM_SETRANGE, 0, MAKELONG(maxVal, minVal)); 532 SendMessageA (hUD, UDM_SETPOS, 0, MAKELONG(curVal, 0)); 533 533 } 534 534 … … 584 584 585 585 if (!lpInitCtrls) 586 586 return FALSE; 587 587 if (lpInitCtrls->dwSize != sizeof(INITCOMMONCONTROLSEX)) 588 588 return FALSE; 589 589 590 590 TRACE("(0x%08lx)\n", lpInitCtrls->dwICC); 591 591 592 592 for (cCount = 0; cCount < 32; cCount++) { 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 593 dwMask = 1 << cCount; 594 if (!(lpInitCtrls->dwICC & dwMask)) 595 continue; 596 597 switch (lpInitCtrls->dwICC & dwMask) { 598 /* dummy initialization */ 599 case ICC_ANIMATE_CLASS: 600 case ICC_BAR_CLASSES: 601 case ICC_LISTVIEW_CLASSES: 602 case ICC_TREEVIEW_CLASSES: 603 case ICC_TAB_CLASSES: 604 case ICC_UPDOWN_CLASS: 605 case ICC_PROGRESS_CLASS: 606 case ICC_HOTKEY_CLASS: 607 break; 608 609 /* advanced classes - not included in Win95 */ 610 case ICC_DATE_CLASSES: 611 MONTHCAL_Register (); 612 DATETIME_Register (); 613 break; 614 615 case ICC_USEREX_CLASSES: 616 COMBOEX_Register (); 617 break; 618 619 case ICC_COOL_CLASSES: 620 REBAR_Register (); 621 break; 622 623 case ICC_INTERNET_CLASSES: 624 IPADDRESS_Register (); 625 break; 626 627 case ICC_PAGESCROLLER_CLASS: 628 PAGER_Register (); 629 break; 630 631 case ICC_NATIVEFNTCTL_CLASS: 632 NATIVEFONT_Register (); 633 break; 634 635 default: 636 FIXME("Unknown class! dwICC=0x%lX\n", dwMask); 637 break; 638 } 639 639 } 640 640 … … 681 681 hwndTB = 682 682 CreateWindowExA (0, TOOLBARCLASSNAMEA, "", style|WS_CHILD, 0, 0, 0, 0, 683 683 hwnd, (HMENU)wID, 0, NULL); 684 684 if(hwndTB) { 685 685 TBADDBITMAP tbab; 686 686 687 687 SendMessageA (hwndTB, TB_BUTTONSTRUCTSIZE, 688 688 (WPARAM)uStructSize, 0); 689 689 690 690 /* set bitmap and button size */ … … 705 705 706 706 707 708 709 710 711 712 713 714 715 716 717 718 719 707 /* add bitmaps */ 708 if (nBitmaps > 0) 709 { 710 tbab.hInst = hBMInst; 711 tbab.nID = wBMID; 712 713 SendMessageA (hwndTB, TB_ADDBITMAP, 714 (WPARAM)nBitmaps, (LPARAM)&tbab); 715 } 716 /* add buttons */ 717 if(iNumButtons > 0) 718 SendMessageA (hwndTB, TB_ADDBUTTONSA, 719 (WPARAM)iNumButtons, (LPARAM)lpButtons); 720 720 } 721 721 … … 741 741 HBITMAP WINAPI 742 742 CreateMappedBitmap (HINSTANCE hInstance, INT idBitmap, UINT wFlags, 743 743 LPCOLORMAP lpColorMap, INT iNumMaps) 744 744 { 745 745 HGLOBAL hglb; … … 754 754 COLORREF cRef; 755 755 COLORMAP internalColorMap[4] = 756 756 {{0x000000, 0}, {0x808080, 0}, {0xC0C0C0, 0}, {0xFFFFFF, 0}}; 757 757 758 758 /* initialize pointer to colortable and default color table */ 759 759 if (lpColorMap) { 760 761 760 iMaps = iNumMaps; 761 sysColorMap = lpColorMap; 762 762 } 763 763 else { 764 765 766 767 768 769 764 internalColorMap[0].to = GetSysColor (COLOR_BTNTEXT); 765 internalColorMap[1].to = GetSysColor (COLOR_BTNSHADOW); 766 internalColorMap[2].to = GetSysColor (COLOR_BTNFACE); 767 internalColorMap[3].to = GetSysColor (COLOR_BTNHIGHLIGHT); 768 iMaps = 4; 769 sysColorMap = (LPCOLORMAP)internalColorMap; 770 770 } 771 771 772 772 hRsrc = FindResourceA (hInstance, (LPSTR)idBitmap, RT_BITMAPA); 773 773 if (hRsrc == 0) 774 774 return 0; 775 775 hglb = LoadResource (hInstance, hRsrc); 776 776 if (hglb == 0) 777 777 return 0; 778 778 lpBitmap = (LPBITMAPINFOHEADER)LockResource (hglb); 779 779 if (lpBitmap == NULL) 780 780 return 0; 781 781 782 782 nColorTableSize = (1 << lpBitmap->biBitCount); … … 784 784 lpBitmapInfo = (LPBITMAPINFOHEADER)GlobalAlloc (GMEM_FIXED, nSize); 785 785 if (lpBitmapInfo == NULL) 786 786 return 0; 787 787 RtlMoveMemory (lpBitmapInfo, lpBitmap, nSize); 788 788 … … 790 790 791 791 for (iColor = 0; iColor < nColorTableSize; iColor++) { 792 792 for (i = 0; i < iMaps; i++) { 793 793 cRef = RGB(pColorTable[iColor].rgbRed, 794 794 pColorTable[iColor].rgbGreen, 795 795 pColorTable[iColor].rgbBlue); 796 796 if ( cRef == sysColorMap[i].from) { 797 797 #if 0 798 799 800 801 802 798 if (wFlags & CBS_MASKED) { 799 if (sysColorMap[i].to != COLOR_BTNTEXT) 800 pColorTable[iColor] = RGB(255, 255, 255); 801 } 802 else 803 803 #endif 804 804 pColorTable[iColor].rgbBlue = GetBValue(sysColorMap[i].to); 805 805 pColorTable[iColor].rgbGreen = GetGValue(sysColorMap[i].to); 806 806 pColorTable[iColor].rgbRed = GetRValue(sysColorMap[i].to); 807 808 809 807 break; 808 } 809 } 810 810 } 811 811 nWidth = (INT)lpBitmapInfo->biWidth; … … 814 814 hbm = CreateCompatibleBitmap (hdcScreen, nWidth, nHeight); 815 815 if (hbm) { 816 817 818 819 820 821 822 823 824 816 HDC hdcDst = CreateCompatibleDC (hdcScreen); 817 HBITMAP hbmOld = SelectObject (hdcDst, hbm); 818 LPBYTE lpBits = (LPBYTE)(lpBitmap + 1); 819 lpBits += (1 << (lpBitmapInfo->biBitCount)) * sizeof(RGBQUAD); 820 StretchDIBits (hdcDst, 0, 0, nWidth, nHeight, 0, 0, nWidth, nHeight, 821 lpBits, (LPBITMAPINFO)lpBitmapInfo, DIB_RGB_COLORS, 822 SRCCOPY); 823 SelectObject (hdcDst, hbmOld); 824 DeleteDC (hdcDst); 825 825 } 826 826 ReleaseDC ((HWND)0, hdcScreen); … … 855 855 HWND WINAPI 856 856 CreateToolbar (HWND hwnd, DWORD style, UINT wID, INT nBitmaps, 857 858 857 HINSTANCE hBMInst, UINT wBMID, 858 LPCOLDTBBUTTON lpButtons,INT iNumButtons) 859 859 { 860 860 return CreateToolbarEx (hwnd, style | CCS_NODIVIDER, wID, nBitmaps, 861 862 861 hBMInst, wBMID, (LPCTBBUTTON)lpButtons, 862 iNumButtons, 0, 0, 0, 0, sizeof (OLDTBBUTTON)); 863 863 } 864 864 … … 885 885 if (pdvi->cbSize != sizeof(DLLVERSIONINFO)) { 886 886 WARN("wrong DLLVERSIONINFO size from app"); 887 887 return E_INVALIDARG; 888 888 } 889 889 … … 894 894 895 895 TRACE("%lu.%lu.%lu.%lu\n", 896 897 896 pdvi->dwMajorVersion, pdvi->dwMinorVersion, 897 pdvi->dwBuildNumber, pdvi->dwPlatformID); 898 898 899 899 return S_OK; … … 901 901 902 902 /*********************************************************************** 903 * 903 * DllInstall (COMCTL32.@) 904 904 */ 905 905 HRESULT WINAPI COMCTL32_DllInstall(BOOL bInstall, LPCWSTR cmdline) 906 906 { 907 FIXME("(%s, %s): stub\n", bInstall?"TRUE":"FALSE", 908 907 FIXME("(%s, %s): stub\n", bInstall?"TRUE":"FALSE", 908 debugstr_w(cmdline)); 909 909 910 910 return S_OK; … … 916 916 POINT pos; /* center of hover rectangle */ 917 917 INT iHoverTime; /* elapsed time the cursor has been inside of the hover rect */ 918 } _TRACKINGLIST; 918 } _TRACKINGLIST; 919 919 920 920 static _TRACKINGLIST TrackingList[10]; … … 955 955 if(TrackingList[i].tme.dwFlags & TME_HOVER) { 956 956 /* add the timer interval to the hovering time */ 957 TrackingList[i].iHoverTime+=iTimerInterval; 958 957 TrackingList[i].iHoverTime+=iTimerInterval; 958 959 959 /* has the cursor moved outside the rectangle centered around pos? */ 960 960 if((abs(pos.x - TrackingList[i].pos.x) > (hoverwidth / 2.0)) … … 985 985 } 986 986 } 987 987 988 988 /* stop the timer if the tracking list is empty */ 989 989 if(iTrackMax == 0) { … … 1036 1036 1037 1037 flags = ptme->dwFlags; 1038 1038 1039 1039 /* if HOVER_DEFAULT was specified replace this with the systems current value */ 1040 1040 if(ptme->dwHoverTime == HOVER_DEFAULT) … … 1042 1042 1043 1043 GetCursorPos(&pos); 1044 hwnd = WindowFromPoint(pos); 1044 hwnd = WindowFromPoint(pos); 1045 1045 1046 1046 if ( flags & TME_CANCEL ) { … … 1048 1048 cancel = 1; 1049 1049 } 1050 1050 1051 1051 if ( flags & TME_HOVER ) { 1052 1052 flags &= ~ TME_HOVER; 1053 1053 hover = 1; 1054 1054 } 1055 1055 1056 1056 if ( flags & TME_LEAVE ) { 1057 1057 flags &= ~ TME_LEAVE; … … 1075 1075 else 1076 1076 ptme->dwFlags = 0; 1077 1077 1078 1078 return TRUE; /* return here, TME_QUERY is retrieving information */ 1079 1079 } … … 1098 1098 { 1099 1099 TrackingList[i] = TrackingList[--iTrackMax]; 1100 1100 1101 1101 if(iTrackMax == 0) { 1102 1102 KillTimer(0, timer); … … 1119 1119 TrackingList[i].tme.dwHoverTime = ptme->dwHoverTime; 1120 1120 } 1121 1121 1122 1122 if(leave) 1123 1123 TrackingList[i].tme.dwFlags |= TME_LEAVE; 1124 1124 1125 1125 /* reset iHoverTime as per winapi specs */ 1126 TrackingList[i].iHoverTime = 0; 1127 1126 TrackingList[i].iHoverTime = 0; 1127 1128 1128 return TRUE; 1129 1129 } 1130 } 1130 } 1131 1131 1132 1132 /* if the tracking list is full return FALSE */ … … 1198 1198 1199 1199 hwndToolTip = CreateWindowExA(0, TOOLTIPS_CLASSA, NULL, 0, 1200 1201 1202 1200 CW_USEDEFAULT, CW_USEDEFAULT, 1201 CW_USEDEFAULT, CW_USEDEFAULT, hwndOwner, 1202 0, 0, 0); 1203 1203 1204 1204 /* Send NM_TOOLTIPSCREATED notification */ 1205 1205 if (hwndToolTip) 1206 1206 { 1207 1207 NMTOOLTIPSCREATED nmttc; 1208 1208 /* true owner can be different if hwndOwner is a child window */ 1209 1209 HWND hwndTrueOwner = GetWindow(hwndToolTip, GW_OWNER); 1210 1210 nmttc.hdr.hwndFrom = hwndTrueOwner; 1211 1211 nmttc.hdr.idFrom = GetWindowLongA(hwndTrueOwner, GWL_ID); 1212 1213 1212 nmttc.hdr.code = NM_TOOLTIPSCREATED; 1213 nmttc.hwndToolTips = hwndToolTip; 1214 1214 1215 1215 SendMessageA(GetParent(hwndTrueOwner), WM_NOTIFY, 1216 1216 (WPARAM)GetWindowLongA(hwndTrueOwner, GWL_ID), 1217 1217 (LPARAM)&nmttc); 1218 1218 } 1219 1219
Note:
See TracChangeset
for help on using the changeset viewer.