Changeset 2895 for trunk/src/comctl32/header.cpp
- Timestamp:
- Feb 25, 2000, 6:00:18 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/header.cpp
r2875 r2895 1 /* $Id: header.cpp,v 1. 1 2000-02-23 17:09:42cbratschi Exp $ */1 /* $Id: header.cpp,v 1.2 2000-02-25 17:00:15 cbratschi Exp $ */ 2 2 /* 3 3 * Header control … … 21 21 #include "winbase.h" 22 22 #include "commctrl.h" 23 #include "ccbase.h" 23 24 #include "header.h" 24 25 #include "comctl32.h" … … 33 34 #define TIMER_MS 200 34 35 35 #define HEADER_GetInfoPtr(hwnd) ((HEADER_INFO *)GetWindowLongA(hwnd,0))36 #define HEADER_GetInfoPtr(hwnd) ((HEADER_INFO*)getInfoPtr(hwnd)) 36 37 37 38 static VOID … … 46 47 if (phdi->iImage == I_IMAGECALLBACK) 47 48 { 48 if (IsWindowUnicode(GetParent(hwnd))) 49 { 50 NMHDDISPINFOW nmhdr; 51 52 nmhdr.hdr.hwndFrom = hwnd; 53 nmhdr.hdr.idFrom = GetWindowLongW(hwnd,GWL_ID); 54 nmhdr.hdr.code = HDN_GETDISPINFOW; 55 nmhdr.iItem = iItem; 56 nmhdr.mask = HDI_IMAGE; 57 nmhdr.iImage = 0; 58 nmhdr.lParam = phdi->lParam; 59 60 SendMessageW(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 61 62 iImage = nmhdr.iImage; 63 if (nmhdr.mask & HDI_DI_SETITEM) phdi->iImage = iImage; 64 } else 65 { 66 NMHDDISPINFOA nmhdr; 67 68 nmhdr.hdr.hwndFrom = hwnd; 69 nmhdr.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 70 nmhdr.hdr.code = HDN_GETDISPINFOA; 71 nmhdr.iItem = iItem; 72 nmhdr.mask = HDI_IMAGE; 73 nmhdr.iImage = 0; 74 nmhdr.lParam = phdi->lParam; 75 76 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 77 78 iImage = nmhdr.iImage; 79 if (nmhdr.mask & HDI_DI_SETITEM) phdi->iImage = iImage; 80 } 49 NMHDDISPINFOW nmhdr; 50 51 nmhdr.iItem = iItem; 52 nmhdr.mask = HDI_IMAGE; 53 nmhdr.iImage = 0; 54 nmhdr.lParam = phdi->lParam; 55 sendNotify(hwnd,isUnicodeNotify(&infoPtr->header) ? HDN_GETDISPINFOW:HDN_GETDISPINFOA,&nmhdr.hdr); 56 57 iImage = nmhdr.iImage; 58 if (nmhdr.mask & HDI_DI_SETITEM) phdi->iImage = iImage; 81 59 } else iImage = phdi->iImage; 82 60 … … 280 258 if (phdi->pszText == LPSTR_TEXTCALLBACKW) 281 259 { 282 if (IsWindowUnicode(GetParent(hwnd))) 283 { 284 NMHDDISPINFOW nmhdr; 285 286 nmhdr.hdr.hwndFrom = hwnd; 287 nmhdr.hdr.idFrom = GetWindowLongW(hwnd,GWL_ID); 288 nmhdr.hdr.code = HDN_GETDISPINFOW; 289 nmhdr.iItem = iItem; 290 nmhdr.mask = HDI_TEXT; 291 nmhdr.cchTextMax = phdi->cchTextMax; 260 NMHDDISPINFOW nmhdr; 261 262 nmhdr.iItem = iItem; 263 nmhdr.mask = HDI_TEXT; 264 nmhdr.cchTextMax = phdi->cchTextMax; 265 if (isUnicodeNotify(&infoPtr->header)) 266 { 292 267 nmhdr.pszText = (WCHAR*)COMCTL32_Alloc(phdi->cchTextMax*sizeof(WCHAR)); 293 268 if (nmhdr.pszText) nmhdr.pszText[0] = 0; 294 nmhdr.lParam = phdi->lParam; 295 296 SendMessageW(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 297 298 pszText = nmhdr.pszText; 299 if (nmhdr.mask & HDI_DI_SETITEM) 269 } else 270 { 271 nmhdr.pszText = (WCHAR*)COMCTL32_Alloc(phdi->cchTextMax*sizeof(CHAR)); 272 if (nmhdr.pszText) ((LPSTR)nmhdr.pszText)[0] = 0; 273 } 274 nmhdr.lParam = phdi->lParam; 275 sendNotify(hwnd,isUnicodeNotify(&infoPtr->header) ? HDN_GETDISPINFOW:HDN_GETDISPINFOA,&nmhdr.hdr); 276 277 pszText = nmhdr.pszText; 278 if (nmhdr.mask & HDI_DI_SETITEM) 279 { 280 if (isUnicodeNotify(&infoPtr->header)) 300 281 { 301 282 INT len = pszText ? lstrlenW(pszText):0; … … 308 289 COMCTL32_Free(pszText); 309 290 pszText = phdi->pszText; 291 } else 292 { 293 INT len = nmhdr.pszText ? lstrlenA((LPSTR)nmhdr.pszText):0; 294 295 if (len) 296 { 297 pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 298 lstrcpyAtoW(pszText,(LPSTR)nmhdr.pszText); 299 } else pszText = NULL; 300 COMCTL32_Free(nmhdr.pszText); 301 302 if (nmhdr.mask & HDI_DI_SETITEM) 303 phdi->pszText = pszText; 310 304 } 311 } else312 {313 NMHDDISPINFOA nmhdr;314 INT len;315 316 nmhdr.hdr.hwndFrom = hwnd;317 nmhdr.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID);318 nmhdr.hdr.code = HDN_GETDISPINFOA;319 nmhdr.iItem = iItem;320 nmhdr.mask = HDI_TEXT;321 nmhdr.cchTextMax = phdi->cchTextMax;322 nmhdr.pszText = (CHAR*)COMCTL32_Alloc(phdi->cchTextMax);323 if (nmhdr.pszText) nmhdr.pszText[0] = 0;324 nmhdr.lParam = phdi->lParam;325 326 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr);327 328 len = nmhdr.pszText ? lstrlenA(nmhdr.pszText):0;329 330 if (len)331 {332 pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR));333 lstrcpyAtoW(pszText,nmhdr.pszText);334 } else pszText = NULL;335 COMCTL32_Free(nmhdr.pszText);336 337 if (nmhdr.mask & HDI_DI_SETITEM)338 phdi->pszText = pszText;339 305 } 340 306 } … … 395 361 396 362 //Custom draw 397 cdraw.hdr.hwndFrom = hwnd;398 cdraw.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID);399 cdraw.hdr.code = NM_CUSTOMDRAW;400 363 cdraw.dwDrawStage = CDDS_PREPAINT; 401 364 cdraw.hdc = hdc; … … 405 368 cdraw.lItemlParam = 0; 406 369 407 cdctlres = SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);370 cdctlres = sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 408 371 409 372 if (cdctlres & CDRF_SKIPDEFAULT) return; … … 426 389 cdraw.rc = infoPtr->items[x].rect; 427 390 428 cdres = SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);391 cdres = sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 429 392 } else cdres = 0; 430 393 … … 442 405 cdraw.dwDrawStage = CDDS_ITEMPOSTPAINT; 443 406 444 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);407 sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 445 408 } 446 409 } 447 410 } 448 411 449 if ( x != -1&& (x <= rect.right) && (infoPtr->uNumItem > 0))412 if ((x != -1) && (x <= rect.right) && (infoPtr->uNumItem > 0)) 450 413 { 451 414 rect.left = x; … … 462 425 if (infoPtr->bDragDrop) 463 426 { 464 if ( infoPtr->iDragItem != infoPtr->iMoveItem && infoPtr->iDragItem != infoPtr->iMoveItem+1 && infoPtr->iDragItem != -1)427 if ((infoPtr->iDragItem != infoPtr->iMoveItem) && (infoPtr->iDragItem != infoPtr->iMoveItem+1) && (infoPtr->iDragItem != -1)) 465 428 { 466 429 INT x,y,width; … … 502 465 GetClientRect(hwnd,&cdraw.rc); 503 466 504 SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)cdraw.hdr.idFrom,(LPARAM)&cdraw);467 sendNotify(hwnd,NM_CUSTOMDRAW,&cdraw.hdr); 505 468 } 506 469 } … … 699 662 } 700 663 701 static BOOL 702 HEADER_SendSimpleNotify (HWND hwnd, UINT code) 703 { 704 NMHDR nmhdr; 705 706 nmhdr.hwndFrom = hwnd; 707 nmhdr.idFrom = GetWindowLongA (hwnd, GWL_ID); 708 nmhdr.code = code; 709 710 return (BOOL)SendMessageA (GetParent (hwnd), WM_NOTIFY, 711 (WPARAM)nmhdr.idFrom, (LPARAM)&nmhdr); 712 } 713 714 static BOOL 715 HEADER_SendHeaderNotifyA(HWND hwnd,UINT code,INT iItem,INT iButton) 664 static BOOL HEADER_SendHeaderNotify(HWND hwnd,UINT code,INT iItem,INT iButton,BOOL unicode) 716 665 { 717 666 HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd); 718 NMHEADER Anmhdr;719 HDITEM Anmitem;720 char* text ;667 NMHEADERW nmhdr; 668 HDITEMW nmitem; 669 char* text = NULL; 721 670 BOOL res; 722 671 723 if (infoPtr->items[iItem].pszText) 724 { 725 INT len = lstrlenW(infoPtr->items[iItem].pszText); 726 727 if (len > 0) 728 { 729 text = (CHAR*)COMCTL32_Alloc(len+1); 730 lstrcpyWtoA(text,infoPtr->items[iItem].pszText); 731 } else text = NULL; 732 } else text = NULL; 733 734 nmhdr.hdr.hwndFrom = hwnd; 735 nmhdr.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 736 nmhdr.hdr.code = code; 672 673 if (unicode) 674 { 675 nmitem.pszText = infoPtr->items[iItem].pszText; 676 } else 677 { 678 if (infoPtr->items[iItem].pszText) 679 { 680 INT len = lstrlenW(infoPtr->items[iItem].pszText); 681 682 if (len > 0) 683 { 684 text = (CHAR*)COMCTL32_Alloc(len+1); 685 lstrcpyWtoA(text,infoPtr->items[iItem].pszText); 686 } 687 } 688 nmitem.pszText = (LPWSTR)text; 689 } 690 737 691 nmhdr.iItem = iItem; 738 692 nmhdr.iButton = 0; … … 742 696 nmitem.cxy = infoPtr->items[iItem].cxy; 743 697 nmitem.hbm = infoPtr->items[iItem].hbm; 744 nmitem.pszText = text;745 698 nmitem.cchTextMax = infoPtr->items[iItem].cchTextMax; 746 699 nmitem.fmt = infoPtr->items[iItem].fmt; … … 751 704 nmitem.pvFilter = infoPtr->items[iItem].pvFilter; 752 705 753 res = (BOOL) SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr);706 res = (BOOL)sendNotify(hwnd,code,&nmhdr.hdr); 754 707 755 708 if (text) COMCTL32_Free(text); … … 758 711 } 759 712 760 static BOOL 761 HEADER_SendHeaderNotifyW(HWND hwnd,UINT code,INT iItem,INT iButton) 762 { 763 HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd); 764 NMHEADERW nmhdr; 765 HDITEMW nmitem; 766 767 nmhdr.hdr.hwndFrom = hwnd; 768 nmhdr.hdr.idFrom = GetWindowLongW(hwnd,GWL_ID); 769 nmhdr.hdr.code = code; 770 nmhdr.iItem = iItem; 771 nmhdr.iButton = 0; 772 nmhdr.pitem = &nmitem; 773 774 nmitem.mask = 0; 775 nmitem.cxy = infoPtr->items[iItem].cxy; 776 nmitem.hbm = infoPtr->items[iItem].hbm; 777 nmitem.pszText = infoPtr->items[iItem].pszText; 778 nmitem.cchTextMax = infoPtr->items[iItem].cchTextMax; 779 nmitem.fmt = infoPtr->items[iItem].fmt; 780 nmitem.lParam = infoPtr->items[iItem].lParam; 781 nmitem.iImage = infoPtr->items[iItem].iImage; 782 nmitem.iOrder = infoPtr->items[iItem].iOrder; 783 nmitem.type = infoPtr->items[iItem].type; 784 nmitem.pvFilter = infoPtr->items[iItem].pvFilter; 785 786 return (BOOL)SendMessageW(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 787 } 788 789 static BOOL 790 HEADER_SendItemChanging(HWND hwnd,INT iItem) 791 { 792 if (IsWindowUnicode(GetParent(hwnd))) 793 return HEADER_SendHeaderNotifyA(hwnd,HDN_ITEMCHANGINGA,iItem,0); 794 else 795 return HEADER_SendHeaderNotifyW(hwnd,HDN_ITEMCHANGINGW,iItem,0); 796 } 797 798 static BOOL 799 HEADER_SendItemChanged(HWND hwnd,INT iItem) 800 { 801 if (IsWindowUnicode(GetParent(hwnd))) 802 return HEADER_SendHeaderNotifyA(hwnd,HDN_ITEMCHANGEDA,iItem,0); 803 else 804 return HEADER_SendHeaderNotifyW(hwnd,HDN_ITEMCHANGEDW,iItem,0); 805 } 806 807 static BOOL 808 HEADER_SendItemDblClick(HWND hwnd,INT iItem,INT iButton) 809 { 810 if (IsWindowUnicode(GetParent(hwnd))) 811 return HEADER_SendHeaderNotifyA(hwnd,HDN_ITEMDBLCLICKA,iItem,iButton); 812 else 813 return HEADER_SendHeaderNotifyW(hwnd,HDN_ITEMDBLCLICKW,iItem,iButton); 814 } 815 816 static BOOL 817 HEADER_SendDividerDblClick(HWND hwnd,INT iItem,INT iButton) 818 { 819 if (IsWindowUnicode(GetParent(hwnd))) 820 return HEADER_SendHeaderNotifyA(hwnd,HDN_DIVIDERDBLCLICKA,iItem,iButton); 821 else 822 return HEADER_SendHeaderNotifyW(hwnd,HDN_DIVIDERDBLCLICKW,iItem,iButton); 823 } 824 825 static BOOL 826 HEADER_SendBeginTrack(HWND hwnd,INT iItem,INT iButton) 827 { 828 if (IsWindowUnicode(GetParent(hwnd))) 829 return HEADER_SendHeaderNotifyA(hwnd,HDN_BEGINTRACKA,iItem,iButton); 830 else 831 return HEADER_SendHeaderNotifyW(hwnd,HDN_BEGINTRACKW,iItem,iButton); 832 } 833 834 static BOOL 835 HEADER_SendEndTrack(HWND hwnd,INT iItem,INT iButton) 836 { 837 if (IsWindowUnicode(GetParent(hwnd))) 838 return HEADER_SendHeaderNotifyA(hwnd,HDN_ENDTRACKA,iItem,iButton); 839 else 840 return HEADER_SendHeaderNotifyW(hwnd,HDN_ENDTRACKW,iItem,iButton); 841 } 842 843 static BOOL 844 HEADER_SendTrack(HWND hwnd,INT iItem) 845 { 846 if (IsWindowUnicode(GetParent(hwnd))) 847 return HEADER_SendHeaderNotifyA(hwnd,HDN_TRACKA,iItem,0); 848 else 849 return HEADER_SendHeaderNotifyW(hwnd,HDN_TRACKW,iItem,0); 850 } 851 852 static BOOL 853 HEADER_SendClickNotifyA(HWND hwnd,UINT code,INT iItem,INT iButton) 854 { 855 NMHEADERA nmhdr; 856 857 nmhdr.hdr.hwndFrom = hwnd; 858 nmhdr.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 859 nmhdr.hdr.code = code; 860 nmhdr.iItem = iItem; 861 nmhdr.iButton = iButton; 862 nmhdr.pitem = NULL; 863 864 return (BOOL)SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 865 } 866 867 static BOOL 868 HEADER_SendClickNotifyW(HWND hwnd,UINT code,INT iItem,INT iButton) 869 { 870 NMHEADERW nmhdr; 871 872 nmhdr.hdr.hwndFrom = hwnd; 873 nmhdr.hdr.idFrom = GetWindowLongW(hwnd,GWL_ID); 874 nmhdr.hdr.code = code; 875 nmhdr.iItem = iItem; 876 nmhdr.iButton = iButton; 877 nmhdr.pitem = NULL; 878 879 return (BOOL)SendMessageW(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 880 } 881 882 static BOOL 883 HEADER_SendItemClick(HWND hwnd,INT iItem,INT iButton) 884 { 885 if (IsWindowUnicode(GetParent(hwnd))) 886 return HEADER_SendClickNotifyA(hwnd,HDN_ITEMCLICKA,iItem,iButton); 887 else 888 return HEADER_SendClickNotifyW(hwnd,HDN_ITEMCLICKW,iItem,iButton); 889 } 890 891 static BOOL 892 HEADER_SendDragNotify(HWND hwnd,UINT code,INT iItem,INT iButton) 893 { 894 NMHEADERA nmhdr; 895 896 nmhdr.hdr.hwndFrom = hwnd; 897 nmhdr.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 898 nmhdr.hdr.code = code; 899 nmhdr.iItem = iItem; 900 nmhdr.iButton = iButton; 901 nmhdr.pitem = NULL; 902 903 return (BOOL)SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 904 } 905 906 static BOOL 907 HEADER_SendFilterBtnClick(HWND hwnd,INT iItem,RECT iRect) 908 { 909 NMHDFILTERBTNCLICK nmhdr; 910 911 nmhdr.hdr.hwndFrom = hwnd; 912 nmhdr.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 913 nmhdr.hdr.code = HDN_FILTERBTNCLICK; 914 nmhdr.iItem = iItem; 915 nmhdr.rc = iRect; 916 917 return (BOOL)SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 713 static BOOL HEADER_SendItemChanging(HWND hwnd,INT iItem) 714 { 715 BOOL unicode = isUnicodeNotify(hwnd); 716 717 return HEADER_SendHeaderNotify(hwnd,unicode ? HDN_ITEMCHANGINGW:HDN_ITEMCHANGINGA,iItem,0,unicode); 718 } 719 720 static BOOL HEADER_SendItemChanged(HWND hwnd,INT iItem) 721 { 722 BOOL unicode = isUnicodeNotify(hwnd); 723 724 return HEADER_SendHeaderNotify(hwnd,unicode ? HDN_ITEMCHANGEDW:HDN_ITEMCHANGEDA,iItem,0,unicode); 725 } 726 727 static BOOL HEADER_SendItemDblClick(HWND hwnd,INT iItem,INT iButton) 728 { 729 BOOL unicode = isUnicodeNotify(hwnd); 730 731 return HEADER_SendHeaderNotify(hwnd,unicode ? HDN_ITEMDBLCLICKW:HDN_ITEMDBLCLICKA,iItem,iButton,unicode); 732 } 733 734 static BOOL HEADER_SendDividerDblClick(HWND hwnd,INT iItem,INT iButton) 735 { 736 BOOL unicode = isUnicodeNotify(hwnd); 737 738 return HEADER_SendHeaderNotify(hwnd,unicode ? HDN_DIVIDERDBLCLICKW:HDN_DIVIDERDBLCLICKA,iItem,iButton,unicode); 739 } 740 741 static BOOL HEADER_SendBeginTrack(HWND hwnd,INT iItem,INT iButton) 742 { 743 BOOL unicode = isUnicodeNotify(hwnd); 744 745 return HEADER_SendHeaderNotify(hwnd,unicode ? HDN_BEGINTRACKW:HDN_BEGINTRACKA,iItem,iButton,unicode); 746 } 747 748 static BOOL HEADER_SendEndTrack(HWND hwnd,INT iItem,INT iButton) 749 { 750 BOOL unicode = isUnicodeNotify(hwnd); 751 752 return HEADER_SendHeaderNotify(hwnd,unicode ? HDN_ENDTRACKW:HDN_ENDTRACKA,iItem,iButton,unicode); 753 } 754 755 static BOOL HEADER_SendTrack(HWND hwnd,INT iItem) 756 { 757 BOOL unicode = isUnicodeNotify(hwnd); 758 759 return HEADER_SendHeaderNotify(hwnd,unicode ? HDN_TRACKW:HDN_TRACKA,iItem,0,unicode); 760 } 761 762 static BOOL HEADER_SendClickNotify(HWND hwnd,UINT code,INT iItem,INT iButton,BOOL unicode) 763 { 764 NMHEADERW nmhdr; 765 766 nmhdr.iItem = iItem; 767 nmhdr.iButton = iButton; 768 nmhdr.pitem = NULL; 769 770 return (BOOL)sendNotify(hwnd,code,&nmhdr.hdr); 771 } 772 773 static BOOL HEADER_SendItemClick(HWND hwnd,INT iItem,INT iButton) 774 { 775 BOOL unicode = isUnicodeNotify(hwnd); 776 777 return HEADER_SendClickNotify(hwnd,unicode ? HDN_ITEMCLICKW:HDN_ITEMCLICKA,iItem,iButton,unicode); 778 } 779 780 static BOOL HEADER_SendDragNotify(HWND hwnd,UINT code,INT iItem,INT iButton) 781 { 782 NMHEADERW nmhdr; 783 784 nmhdr.iItem = iItem; 785 nmhdr.iButton = iButton; 786 nmhdr.pitem = NULL; 787 788 return (BOOL)sendNotify(hwnd,code,&nmhdr.hdr); 789 } 790 791 static BOOL HEADER_SendFilterBtnClick(HWND hwnd,INT iItem,RECT iRect) 792 { 793 NMHDFILTERBTNCLICK nmhdr; 794 795 nmhdr.iItem = iItem; 796 nmhdr.rc = iRect; 797 798 return (BOOL)sendNotify(hwnd,HDN_FILTERBTNCLICK,&nmhdr.hdr); 918 799 } 919 800 … … 921 802 HEADER_SendFilterChange(HWND hwnd,INT iItem) 922 803 { 923 NMHEADERA nmhdr; 924 925 nmhdr.hdr.hwndFrom = hwnd; 926 nmhdr.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID); 927 nmhdr.hdr.code = HDN_FILTERCHANGE; 928 nmhdr.iItem = iItem; 929 nmhdr.iButton = 0; 930 nmhdr.pitem = NULL; 931 932 return (BOOL)SendMessageA(GetParent(hwnd),WM_NOTIFY,(WPARAM)nmhdr.hdr.idFrom,(LPARAM)&nmhdr); 804 NMHEADERW nmhdr; 805 806 nmhdr.iItem = iItem; 807 nmhdr.iButton = 0; 808 nmhdr.pitem = NULL; 809 810 return (BOOL)sendNotify(hwnd,HDN_FILTERCHANGE,&nmhdr.hdr); 933 811 } 934 812 … … 1138 1016 1139 1017 1140 static LRESULT 1141 HEADER_GetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam) 1018 static LRESULT HEADER_GetItem(HWND hwnd,WPARAM wParam,LPARAM lParam,BOOL unicode) 1142 1019 { 1143 1020 HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd); 1144 HDITEM A *phdi = (HDITEMA*)lParam;1145 INT nItem = (INT)wParam;1021 HDITEMW *phdi = (HDITEMW*)lParam; 1022 INT nItem = (INT)wParam; 1146 1023 HEADER_ITEM *lpItem; 1147 1024 … … 1149 1026 if ((nItem < 0) || (nItem >= (INT)infoPtr->uNumItem)) return FALSE; 1150 1027 1151 // TRACE (header, "[nItem=%d]\n", nItem);1152 1153 1028 if (phdi->mask == 0) return TRUE; 1154 1029 … … 1178 1053 { 1179 1054 if (lpItem->pszText) 1180 lstrcpynWtoA (phdi->pszText,lpItem->pszText,phdi->cchTextMax); 1181 else 1182 phdi->pszText = NULL; 1183 } else phdi->pszText = LPSTR_TEXTCALLBACKA; 1055 { 1056 if (unicode) 1057 lstrcpynW (phdi->pszText,lpItem->pszText,phdi->cchTextMax); 1058 else 1059 lstrcpynWtoA((LPSTR)phdi->pszText,lpItem->pszText,phdi->cchTextMax); 1060 } else phdi->pszText = NULL; 1061 } else 1062 { 1063 phdi->pszText = unicode ? LPSTR_TEXTCALLBACKW:(LPWSTR)LPSTR_TEXTCALLBACKA; 1064 } 1184 1065 } 1185 1066 1186 1067 return TRUE; 1187 1068 } 1188 1189 static LRESULT1190 HEADER_GetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)1191 {1192 HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd);1193 HDITEMW *phdi = (HDITEMW*)lParam;1194 INT nItem = (INT)wParam;1195 HEADER_ITEM *lpItem;1196 1197 if (!phdi) return FALSE;1198 if ((nItem < 0) || (nItem >= (INT)infoPtr->uNumItem)) return FALSE;1199 1200 // TRACE (header, "[nItem=%d]\n", nItem);1201 1202 if (phdi->mask == 0) return TRUE;1203 1204 lpItem = (HEADER_ITEM*)&infoPtr->items[nItem];1205 1206 if (phdi->mask & HDI_BITMAP) phdi->hbm = lpItem->hbm;1207 1208 if (phdi->mask & HDI_FORMAT) phdi->fmt = lpItem->fmt;1209 1210 if (phdi->mask & HDI_FILTER)1211 {1212 phdi->type = lpItem->type;1213 phdi->pvFilter = lpItem->pvFilter;1214 }1215 1216 if (phdi->mask & (HDI_WIDTH | HDI_HEIGHT)) phdi->cxy = lpItem->cxy;1217 1218 if (phdi->mask & HDI_IMAGE) phdi->iImage = lpItem->iImage;1219 1220 if (phdi->mask & HDI_LPARAM) phdi->lParam = lpItem->lParam;1221 1222 if (phdi->mask & HDI_ORDER) phdi->iOrder = lpItem->iOrder;1223 1224 if (phdi->mask & HDI_TEXT)1225 {1226 if (lpItem->pszText != LPSTR_TEXTCALLBACKW)1227 {1228 if (lpItem->pszText)1229 lstrcpynW (phdi->pszText,lpItem->pszText,phdi->cchTextMax);1230 else1231 phdi->pszText = NULL;1232 } else phdi->pszText = LPSTR_TEXTCALLBACKW;1233 }1234 1235 return TRUE;1236 }1237 1238 1069 1239 1070 static LRESULT … … 1338 1169 1339 1170 static LRESULT 1340 HEADER_GetUnicodeFormat (HWND hwnd)1341 {1342 HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd);1343 1344 return infoPtr->bUnicode;1345 }1346 1347 1348 static LRESULT1349 1171 HEADER_HitTest (HWND hwnd, WPARAM wParam, LPARAM lParam) 1350 1172 { … … 1357 1179 1358 1180 1359 static LRESULT 1360 HEADER_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam) 1181 static LRESULT HEADER_InsertItem(HWND hwnd,WPARAM wParam,LPARAM lParam,BOOL unicode) 1361 1182 { 1362 1183 HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); 1363 HDITEM A *phdi = (HDITEMA*)lParam;1364 INT nItem = (INT)wParam;1184 HDITEMW *phdi = (HDITEMW*)lParam; 1185 INT nItem = (INT)wParam; 1365 1186 HEADER_ITEM *lpItem; 1366 1187 … … 1397 1218 lpItem->bDown = FALSE; 1398 1219 1399 lpItem->cxy = ( phdi->mask & HDI_WIDTH || phdi->mask & HDI_HEIGHT) ? phdi->cxy:0;1220 lpItem->cxy = ((phdi->mask & HDI_WIDTH) || (phdi->mask & HDI_HEIGHT)) ? phdi->cxy:0; 1400 1221 1401 1222 if (phdi->mask & HDI_TEXT) 1402 1223 { 1403 1224 if (!phdi->pszText) lpItem->pszText = NULL; 1404 else if (phdi->pszText != LPSTR_TEXTCALLBACKA) 1405 { 1406 INT len; 1407 1408 len = lstrlenA(phdi->pszText); 1409 if (len == 0) lpItem->pszText = NULL; else 1410 { 1411 lpItem->pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 1412 lstrcpyAtoW(lpItem->pszText,phdi->pszText); 1413 } 1414 } else lpItem->pszText = LPSTR_TEXTCALLBACKW; 1225 else if (unicode) 1226 { 1227 if (phdi->pszText != LPSTR_TEXTCALLBACKW) 1228 { 1229 INT len; 1230 1231 len = lstrlenW(phdi->pszText); 1232 if (len == 0) lpItem->pszText = NULL; else 1233 { 1234 lpItem->pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 1235 lstrcpyW(lpItem->pszText,phdi->pszText); 1236 } 1237 } else lpItem->pszText = LPSTR_TEXTCALLBACKW; 1238 } else 1239 { 1240 if ((LPSTR)phdi->pszText != LPSTR_TEXTCALLBACKA) 1241 { 1242 INT len; 1243 1244 len = lstrlenA((LPSTR)phdi->pszText); 1245 if (len == 0) lpItem->pszText = NULL; else 1246 { 1247 lpItem->pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 1248 lstrcpyAtoW(lpItem->pszText,(LPSTR)phdi->pszText); 1249 } 1250 } else lpItem->pszText = LPSTR_TEXTCALLBACKW; 1251 } 1415 1252 lpItem->cchTextMax = phdi->cchTextMax; 1416 1253 } else … … 1442 1279 return nItem; 1443 1280 } 1444 1445 static LRESULT1446 HEADER_InsertItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)1447 {1448 HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);1449 HDITEMW *phdi = (HDITEMW*)lParam;1450 INT nItem = (INT)wParam;1451 HEADER_ITEM *lpItem;1452 1453 if ((phdi == NULL) || (nItem < 0)) return -1;1454 1455 if (nItem > infoPtr->uNumItem) nItem = infoPtr->uNumItem;1456 1457 if (infoPtr->uNumItem == 0)1458 {1459 infoPtr->items = (HEADER_ITEM*)COMCTL32_Alloc(sizeof(HEADER_ITEM));1460 infoPtr->uNumItem++;1461 } else1462 {1463 HEADER_ITEM *oldItems = infoPtr->items;1464 1465 infoPtr->uNumItem++;1466 infoPtr->items = (HEADER_ITEM*)COMCTL32_Alloc(sizeof(HEADER_ITEM)*infoPtr->uNumItem);1467 if (nItem == 0)1468 memcpy (&infoPtr->items[1],&oldItems[0],(infoPtr->uNumItem-1)*sizeof(HEADER_ITEM));1469 else1470 {1471 /* pre insert copy */1472 memcpy (&infoPtr->items[0],&oldItems[0],nItem*sizeof(HEADER_ITEM));1473 1474 /* post insert copy */1475 if (nItem < infoPtr->uNumItem-1)1476 memcpy (&infoPtr->items[nItem+1],&oldItems[nItem],(infoPtr->uNumItem - nItem)*sizeof(HEADER_ITEM));1477 }1478 1479 COMCTL32_Free (oldItems);1480 }1481 1482 lpItem = (HEADER_ITEM*)&infoPtr->items[nItem];1483 lpItem->bDown = FALSE;1484 1485 lpItem->cxy = (phdi->mask & HDI_WIDTH || phdi->mask & HDI_HEIGHT) ? phdi->cxy:0;1486 1487 if (phdi->mask & HDI_TEXT)1488 {1489 if (!phdi->pszText) lpItem->pszText = NULL;1490 else if (phdi->pszText != LPSTR_TEXTCALLBACKW)1491 {1492 INT len;1493 1494 len = lstrlenW(phdi->pszText);1495 if (len == 0) lpItem->pszText = NULL; else1496 {1497 lpItem->pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR));1498 lstrcpyW(lpItem->pszText,phdi->pszText);1499 }1500 } else lpItem->pszText = LPSTR_TEXTCALLBACKW;1501 lpItem->cchTextMax = phdi->cchTextMax;1502 } else1503 {1504 lpItem->pszText = NULL;1505 lpItem->cchTextMax = 0;1506 }1507 1508 lpItem->fmt = (phdi->mask & HDI_FORMAT) ? phdi->fmt:HDF_LEFT;1509 if (lpItem->fmt == 0) lpItem->fmt = HDF_LEFT;1510 1511 lpItem->lParam = (phdi->mask & HDI_LPARAM) ? phdi->lParam:0;1512 1513 lpItem->iImage = (phdi->mask & HDI_IMAGE) ? phdi->iImage:0;1514 1515 lpItem->iOrder = (phdi->mask & HDI_ORDER) ? phdi->iOrder:-1;1516 1517 lpItem->hbm = (phdi->mask & HDI_BITMAP) ? phdi->hbm:0;1518 1519 if (phdi->mask & HDI_FILTER)1520 {1521 lpItem->type = phdi->type;1522 lpItem->pvFilter = phdi->pvFilter;1523 }1524 1525 HEADER_SetItemBounds (hwnd,nItem);1526 HEADER_Refresh(hwnd);1527 1528 return nItem;1529 }1530 1531 1281 1532 1282 static LRESULT … … 1572 1322 1573 1323 1574 static LRESULT 1575 HEADER_SetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam) 1324 static LRESULT HEADER_SetItem(HWND hwnd,WPARAM wParam,LPARAM lParam,BOOL unicode) 1576 1325 { 1577 1326 HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); 1578 HDITEM A *phdi = (HDITEMA*)lParam;1579 INT nItem = (INT)wParam;1327 HDITEMW *phdi = (HDITEMW*)lParam; 1328 INT nItem = (INT)wParam; 1580 1329 HEADER_ITEM *lpItem; 1581 1330 HDC hdc; … … 1585 1334 if (phdi->mask == 0) return TRUE; 1586 1335 1587 // TRACE (header, "[nItem=%d]\n", nItem);1588 1336 if (HEADER_SendItemChanging(hwnd,nItem)) return FALSE; 1589 1337 … … 1610 1358 if (phdi->mask & HDI_TEXT) 1611 1359 { 1612 if (phdi->pszText != LPSTR_TEXTCALLBACKA) 1613 { 1614 if (lpItem->pszText) 1615 { 1616 COMCTL32_Free (lpItem->pszText); 1617 lpItem->pszText = NULL; 1618 } 1619 if (phdi->pszText) 1620 { 1621 INT len = lstrlenA (phdi->pszText); 1622 1623 if (len) 1360 if (unicode) 1361 { 1362 if (phdi->pszText != LPSTR_TEXTCALLBACKW) 1363 { 1364 if (lpItem->pszText) 1624 1365 { 1625 lpItem->pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR));1626 l strcpyAtoW(lpItem->pszText,phdi->pszText);1366 COMCTL32_Free(lpItem->pszText); 1367 lpItem->pszText = NULL; 1627 1368 } 1369 if (phdi->pszText) 1370 { 1371 INT len = lstrlenW(phdi->pszText); 1372 1373 if (len) 1374 { 1375 lpItem->pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 1376 lstrcpyW(lpItem->pszText,phdi->pszText); 1377 } 1378 } 1379 } else 1380 { 1381 if (lpItem->pszText != LPSTR_TEXTCALLBACKW) COMCTL32_Free(lpItem->pszText); 1382 lpItem->pszText = LPSTR_TEXTCALLBACKW; 1628 1383 } 1629 1384 } else 1630 1385 { 1631 if (lpItem->pszText != LPSTR_TEXTCALLBACKW) COMCTL32_Free(lpItem->pszText); 1632 lpItem->pszText = LPSTR_TEXTCALLBACKW; 1386 if ((LPSTR)phdi->pszText != LPSTR_TEXTCALLBACKA) 1387 { 1388 if (lpItem->pszText) 1389 { 1390 COMCTL32_Free (lpItem->pszText); 1391 lpItem->pszText = NULL; 1392 } 1393 if (phdi->pszText) 1394 { 1395 INT len = lstrlenA((LPSTR)phdi->pszText); 1396 1397 if (len) 1398 { 1399 lpItem->pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 1400 lstrcpyAtoW(lpItem->pszText,(LPSTR)phdi->pszText); 1401 } 1402 } 1403 } else 1404 { 1405 if (lpItem->pszText != LPSTR_TEXTCALLBACKW) COMCTL32_Free(lpItem->pszText); 1406 lpItem->pszText = LPSTR_TEXTCALLBACKW; 1407 } 1633 1408 } 1634 1409 } … … 1641 1416 return TRUE; 1642 1417 } 1643 1644 1645 static LRESULT1646 HEADER_SetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)1647 {1648 HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);1649 HDITEMW *phdi = (HDITEMW*)lParam;1650 INT nItem = (INT)wParam;1651 HEADER_ITEM *lpItem;1652 HDC hdc;1653 1654 if (phdi == NULL) return FALSE;1655 if ((nItem < 0) || (nItem >= (INT)infoPtr->uNumItem)) return FALSE;1656 if (phdi->mask == 0) return TRUE;1657 1658 // TRACE (header, "[nItem=%d]\n", nItem);1659 1660 if (HEADER_SendItemChanging(hwnd,nItem)) return FALSE;1661 1662 lpItem = (HEADER_ITEM*)&infoPtr->items[nItem];1663 1664 if (phdi->mask & HDI_BITMAP) lpItem->hbm = phdi->hbm;1665 1666 if (phdi->mask & HDI_FORMAT) lpItem->fmt = phdi->fmt;1667 1668 if (phdi->mask & HDI_FILTER)1669 {1670 lpItem->type = lpItem->type;1671 lpItem->pvFilter = lpItem->pvFilter;1672 }1673 1674 if (phdi->mask & (HDI_WIDTH | HDI_WIDTH)) lpItem->cxy = phdi->cxy;1675 1676 if (phdi->mask & HDI_IMAGE) lpItem->iImage = phdi->iImage;1677 1678 if (phdi->mask & HDI_LPARAM) lpItem->lParam = phdi->lParam;1679 1680 if (phdi->mask & HDI_ORDER) lpItem->iOrder = phdi->iOrder;1681 1682 if (phdi->mask & HDI_TEXT)1683 {1684 if (phdi->pszText != LPSTR_TEXTCALLBACKW)1685 {1686 if (lpItem->pszText)1687 {1688 COMCTL32_Free(lpItem->pszText);1689 lpItem->pszText = NULL;1690 }1691 if (phdi->pszText)1692 {1693 INT len = lstrlenW(phdi->pszText);1694 1695 if (len)1696 {1697 lpItem->pszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR));1698 lstrcpyW(lpItem->pszText,phdi->pszText);1699 }1700 }1701 } else1702 {1703 if (lpItem->pszText != LPSTR_TEXTCALLBACKW) COMCTL32_Free(lpItem->pszText);1704 lpItem->pszText = LPSTR_TEXTCALLBACKW;1705 }1706 }1707 1708 HEADER_SendItemChanged(hwnd,nItem);1709 1710 HEADER_SetItemBounds(hwnd,0);1711 HEADER_Refresh(hwnd);1712 1713 return TRUE;1714 }1715 1716 static LRESULT1717 HEADER_SetUnicodeFormat (HWND hwnd, WPARAM wParam)1718 {1719 HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd);1720 BOOL bTemp = infoPtr->bUnicode;1721 1722 infoPtr->bUnicode = (BOOL)wParam;1723 1724 return bTemp;1725 }1726 1727 1418 1728 1419 static LRESULT … … 1734 1425 HDC hdc; 1735 1426 1736 infoPtr = (HEADER_INFO *)COMCTL32_Alloc (sizeof(HEADER_INFO)); 1737 SetWindowLongA (hwnd, 0, (DWORD)infoPtr); 1427 infoPtr = (HEADER_INFO*)initControl(hwnd,sizeof(HEADER_INFO)); 1738 1428 1739 1429 infoPtr->uNumItem = 0; … … 1753 1443 infoPtr->iHotItem = -1; 1754 1444 infoPtr->xBmpMargin = 3*GetSystemMetrics(SM_CXEDGE); 1755 infoPtr->bUnicode = IsWindowUnicode(hwnd); 1756 1757 hdc = GetDC (0); 1445 1446 hdc = GetDC (hwnd); 1758 1447 hOldFont = SelectObject (hdc, GetStockObject (SYSTEM_FONT)); 1759 1448 GetTextMetricsA (hdc, &tm); 1760 1449 infoPtr->nHeight = tm.tmHeight + VERT_BORDER; 1761 1450 SelectObject (hdc, hOldFont); 1762 ReleaseDC ( 0, hdc);1451 ReleaseDC (hwnd, hdc); 1763 1452 1764 1453 return 0; … … 1785 1474 ImageList_Destroy (infoPtr->himl); 1786 1475 1787 COMCTL32_Free (infoPtr);1476 doneControl(hwnd); 1788 1477 1789 1478 return 0; … … 1913 1602 infoPtr->dragImage = NULL; 1914 1603 1915 if (!HEADER_SendDragNotify(hwnd,HDN_ENDDRAG,infoPtr->iMoveItem,0) && infoPtr->iDragItem != infoPtr->iMoveItem && infoPtr->iDragItem != infoPtr->iMoveItem+1 && infoPtr->iDragItem != -1)1604 if (!HEADER_SendDragNotify(hwnd,HDN_ENDDRAG,infoPtr->iMoveItem,0) && (infoPtr->iDragItem != infoPtr->iMoveItem) && (infoPtr->iDragItem != infoPtr->iMoveItem+1) && (infoPtr->iDragItem != -1)) 1916 1605 { 1917 1606 HEADER_ITEM tmpItem = infoPtr->items[infoPtr->iMoveItem];; … … 1987 1676 infoPtr->bCaptured = FALSE; 1988 1677 ReleaseCapture(); 1989 HEADER_SendSimpleNotify(hwnd,NM_RELEASEDCAPTURE);1678 sendNotify(hwnd,NM_RELEASEDCAPTURE); 1990 1679 } 1991 1680 … … 2008 1697 for (x = 0;x < infoPtr->uNumItem;x++) 2009 1698 { 2010 if ( xDrag >= infoPtr->items[x].rect.left && xDrag <= infoPtr->items[x].rect.right) return x;1699 if ((xDrag >= infoPtr->items[x].rect.left) && (xDrag <= infoPtr->items[x].rect.right)) return x; 2011 1700 } 2012 1701 … … 2028 1717 HEADER_InternalHitTest (hwnd, &pt, &flags, &nItem); 2029 1718 2030 if ( dwStyle & HDS_BUTTONS && dwStyle & HDS_HOTTRACK)1719 if ((dwStyle & HDS_BUTTONS) && (dwStyle & HDS_HOTTRACK)) 2031 1720 { 2032 1721 INT newItem; … … 2046 1735 HEADER_Refresh(hwnd); 2047 1736 } 2048 if (!infoPtr->bTimer && infoPtr->iHotItem != -1)1737 if (!infoPtr->bTimer && (infoPtr->iHotItem != -1)) 2049 1738 { 2050 1739 infoPtr->bTimer = TRUE; 2051 1740 SetTimer(hwnd,TIMER_ID,TIMER_MS,NULL); 2052 } else if (infoPtr->bTimer && infoPtr->iHotItem == -1)1741 } else if (infoPtr->bTimer && (infoPtr->iHotItem == -1)) 2053 1742 { 2054 1743 KillTimer(hwnd,TIMER_ID); … … 2061 1750 if (infoPtr->bPressed) 2062 1751 { 2063 if ( dwStyle & HDS_DRAGDROP && infoPtr->uNumItem > 1&& (infoPtr->bDragDrop || !HEADER_SendDragNotify(hwnd,HDN_BEGINDRAG,infoPtr->iMoveItem,0)))1752 if ((dwStyle & HDS_DRAGDROP) && (infoPtr->uNumItem > 1) && (infoPtr->bDragDrop || !HEADER_SendDragNotify(hwnd,HDN_BEGINDRAG,infoPtr->iMoveItem,0))) 2064 1753 { 2065 1754 if (!infoPtr->bDragDrop) … … 2168 1857 HDC hdc; 2169 1858 2170 if ( wParam == VK_ESCAPE&& infoPtr->bCaptured)1859 if ((wParam == VK_ESCAPE) && infoPtr->bCaptured) 2171 1860 { 2172 1861 if (infoPtr->bPressed && infoPtr->bDragDrop) … … 2201 1890 infoPtr->bCaptured = FALSE; 2202 1891 ReleaseCapture(); 2203 HEADER_SendSimpleNotify(hwnd,NM_RELEASEDCAPTURE);1892 sendNotify(hwnd,NM_RELEASEDCAPTURE); 2204 1893 2205 1894 return TRUE; … … 2275 1964 HEADER_RButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam) 2276 1965 { 2277 HEADER_SendSimpleNotify(hwnd,NM_RCLICK);1966 sendNotify(hwnd,NM_RCLICK); 2278 1967 2279 1968 return DefWindowProcA(hwnd,WM_RBUTTONUP,wParam,lParam); … … 2330 2019 hFont = infoPtr->hFont ? infoPtr->hFont : GetStockObject (SYSTEM_FONT); 2331 2020 2332 hdc = GetDC ( 0);2021 hdc = GetDC (hwnd); 2333 2022 hOldFont = SelectObject (hdc, hFont); 2334 2023 GetTextMetricsA (hdc, &tm); 2335 2024 infoPtr->nHeight = tm.tmHeight + VERT_BORDER; 2336 2025 SelectObject (hdc, hOldFont); 2337 ReleaseDC ( 0, hdc);2026 ReleaseDC (hwnd, hdc); 2338 2027 2339 2028 if (lParam) HEADER_Refresh(hwnd); … … 2367 2056 2368 2057 case HDM_GETITEMA: 2369 return HEADER_GetItem A (hwnd, wParam, lParam);2058 return HEADER_GetItem(hwnd,wParam,lParam,FALSE); 2370 2059 2371 2060 case HDM_GETITEMW: 2372 return HEADER_GetItem W (hwnd, wParam, lParam);2061 return HEADER_GetItem(hwnd,wParam,lParam,TRUE); 2373 2062 2374 2063 case HDM_GETITEMCOUNT: … … 2381 2070 return HEADER_GetOrderArray(hwnd,wParam,lParam); 2382 2071 2383 case HDM_GETUNICODEFORMAT:2384 return HEADER_GetUnicodeFormat (hwnd);2385 2386 2072 case HDM_HITTEST: 2387 2073 return HEADER_HitTest (hwnd, wParam, lParam); 2388 2074 2389 2075 case HDM_INSERTITEMA: 2390 return HEADER_InsertItem A (hwnd, wParam, lParam);2076 return HEADER_InsertItem(hwnd,wParam,lParam,FALSE); 2391 2077 2392 2078 case HDM_INSERTITEMW: 2393 return HEADER_InsertItem W (hwnd, wParam, lParam);2079 return HEADER_InsertItem(hwnd,wParam,lParam,TRUE); 2394 2080 2395 2081 case HDM_LAYOUT: … … 2412 2098 2413 2099 case HDM_SETITEMA: 2414 return HEADER_SetItem A (hwnd, wParam, lParam);2100 return HEADER_SetItem(hwnd,wParam,lParam,FALSE); 2415 2101 2416 2102 case HDM_SETITEMW: 2417 return HEADER_SetItem W (hwnd, wParam, lParam);2103 return HEADER_SetItem(hwnd,wParam,lParam,TRUE); 2418 2104 2419 2105 case HDM_SETORDERARRAY: 2420 2106 return HEADER_SetOrderArray(hwnd,wParam,lParam); 2421 2107 2422 case HDM_SETUNICODEFORMAT:2423 return HEADER_SetUnicodeFormat (hwnd, wParam);2424 2425 2108 case WM_CAPTURECHANGED: 2426 2109 return HEADER_CaptureChanged(hwnd,wParam,lParam); … … 2455 2138 case WM_MOUSEMOVE: 2456 2139 return HEADER_MouseMove (hwnd, wParam, lParam); 2457 2458 /* case WM_NOTIFYFORMAT: */2459 2140 2460 2141 case WM_PAINT: … … 2480 2161 // ERR (header, "unknown msg %04x wp=%04x lp=%08lx\n", 2481 2162 // msg, wParam, lParam ); 2482 return DefWindowProcA (hwnd, msg, wParam, lParam);2163 return defComCtl32ProcA (hwnd, msg, wParam, lParam); 2483 2164 } 2484 2165 return 0; … … 2490 2171 { 2491 2172 WNDCLASSA wndClass; 2492 2493 //SvL: Don't check this now2494 // if (GlobalFindAtomA (WC_HEADERA)) return;2495 2173 2496 2174 ZeroMemory (&wndClass, sizeof(WNDCLASSA)); … … 2509 2187 HEADER_Unregister (VOID) 2510 2188 { 2511 if (GlobalFindAtomA (WC_HEADERA)) 2512 UnregisterClassA (WC_HEADERA, (HINSTANCE)NULL); 2513 } 2514 2189 UnregisterClassA (WC_HEADERA, (HINSTANCE)NULL); 2190 } 2191
Note:
See TracChangeset
for help on using the changeset viewer.