- Timestamp:
- Dec 21, 1999, 6:01:38 PM (26 years ago)
- Location:
- trunk/src/comctl32
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/listview.c
r2161 r2184 1 /*$Id: listview.c,v 1.1 8 1999-12-20 16:46:39cbratschi Exp $*/1 /*$Id: listview.c,v 1.19 1999-12-21 17:01:36 cbratschi Exp $*/ 2 2 /* 3 3 * Listview control … … 42 42 * LISTVIEW_RedrawItems : empty stub 43 43 * LISTVIEW_Update : not completed 44 * WM_SETREDRAW not implemented 44 45 */ 45 46 -
trunk/src/comctl32/toolbar.c
r2164 r2184 1 /* $Id: toolbar.c,v 1.2 2 1999-12-20 18:44:08cbratschi Exp $ */1 /* $Id: toolbar.c,v 1.23 1999-12-21 17:01:37 cbratschi Exp $ */ 2 2 /* 3 3 * Toolbar control … … 856 856 INT nItem; 857 857 858 SendDlgItemMessageA(hwnd,IDC_AVAILBTN_LBOX,WM_SETREDRAW,FALSE,0); 859 SendDlgItemMessageA(hwnd,IDC_TOOLBARBTN_LBOX,WM_SETREDRAW,FALSE,0); 858 860 SendDlgItemMessageA(hwnd,IDC_AVAILBTN_LBOX,LB_RESETCONTENT,0,0); 859 861 SendDlgItemMessageA(hwnd,IDC_TOOLBARBTN_LBOX,LB_RESETCONTENT,0,0); … … 935 937 } 936 938 937 if (leftCount == 0 && rightCount == 0) return FALSE;938 939 939 SendDlgItemMessageA(hwnd,IDC_AVAILBTN_LBOX,LB_SETCURSEL,0,0); 940 940 SendDlgItemMessageA(hwnd,IDC_TOOLBARBTN_LBOX,LB_SETCURSEL,(rightCount > 0) ? 0:(WPARAM)-1,0); 941 942 SendDlgItemMessageA(hwnd,IDC_AVAILBTN_LBOX,WM_SETREDRAW,TRUE,0); 943 SendDlgItemMessageA(hwnd,IDC_TOOLBARBTN_LBOX,WM_SETREDRAW,TRUE,0); 944 InvalidateRect(GetDlgItem(hwnd,IDC_AVAILBTN_LBOX),NULL,TRUE); 945 InvalidateRect(GetDlgItem(hwnd,IDC_TOOLBARBTN_LBOX),NULL,TRUE); 946 947 if (leftCount == 0 && rightCount == 0) return FALSE; 941 948 942 949 TBCUSTOMIZE_AvailSelChange(hwnd); -
trunk/src/comctl32/treeview.c
r2131 r2184 1 /* $Id: treeview.c,v 1.2 0 1999-12-19 10:32:12 achimhaExp $ */1 /* $Id: treeview.c,v 1.21 1999-12-21 17:01:38 cbratschi Exp $ */ 2 2 /* Treeview control 3 3 * … … 32 32 * WM_HSCROLL is broken. 33 33 * use separate routine to get item text/image. 34 * WM_SETREDRAW isn't handled 34 35 * 35 36 * Separate drawing/calculation. … … 697 698 } 698 699 699 /* 700 /* 700 701 * Display the image associated with this item 701 702 */ … … 709 710 * FIXME: that last sentence looks like it needs some checking. 710 711 */ 711 if (infoPtr->himlState)712 if (infoPtr->himlState) 712 713 himlp=&infoPtr->himlState; 713 714 715 714 imageIndex=wineItem->state>>12; 715 imageIndex++; /* yeah, right */ 716 TRACE ("imindex:%d\n",imageIndex); 716 717 if ((himlp) && (imageIndex)) 717 { 718 718 { 719 imageIndex--; /* see FIXME */ 719 720 ImageList_Draw ( *himlp, imageIndex, hdc, xpos-2, r.top+1, ILD_NORMAL); 720 721 722 723 724 725 721 ImageList_GetIconSize (*himlp, &cx, &cy); 722 wineItem->statebitmap.left=xpos-2; 723 wineItem->statebitmap.right=xpos-2+cx; 724 wineItem->statebitmap.top=r.top+1; 725 wineItem->statebitmap.bottom=r.top+1+cy; 726 xpos+=cx; 726 727 } 727 728 729 * non-selected image. 730 731 732 733 if (infoPtr->himlNormal)728 729 /* Now, draw the normal image; can be either selected or 730 * non-selected image. 731 */ 732 733 himlp=NULL; 734 if (infoPtr->himlNormal) 734 735 himlp=&infoPtr->himlNormal; /* get the image list */ 735 736 736 737 imageIndex = wineItem->iImage; 737 if ( (wineItem->state & TVIS_SELECTED) &&738 (wineItem->iSelectedImage)) { 739 738 if ( (wineItem->state & TVIS_SELECTED) && 739 (wineItem->iSelectedImage)) { 740 740 741 /* The item is curently selected */ 741 if (wineItem->iSelectedImage == I_IMAGECALLBACK) 742 TREEVIEW_SendDispInfoNotify743 744 745 746 } else { 742 if (wineItem->iSelectedImage == I_IMAGECALLBACK) 743 TREEVIEW_SendDispInfoNotify 744 (hwnd, wineItem, TVN_GETDISPINFO, TVIF_SELECTEDIMAGE); 745 746 imageIndex = wineItem->iSelectedImage; 747 } else { 747 748 /* The item is not selected */ 748 if (wineItem->iImage == I_IMAGECALLBACK) 749 TREEVIEW_SendDispInfoNotify 750 749 if (wineItem->iImage == I_IMAGECALLBACK) 750 TREEVIEW_SendDispInfoNotify 751 (hwnd, wineItem, TVN_GETDISPINFO, TVIF_IMAGE); 751 752 752 753 imageIndex = wineItem->iImage; 753 754 755 if (himlp) 756 { 754 } 755 756 if (himlp) 757 { 757 758 ImageList_Draw ( *himlp, imageIndex, hdc, xpos-2, r.top+1, ILD_NORMAL); 758 759 760 761 762 763 759 ImageList_GetIconSize (*himlp, &cx, &cy); 760 wineItem->bitmap.left=xpos-2; 761 wineItem->bitmap.right=xpos-2+cx; 762 wineItem->bitmap.top=r.top+1; 763 wineItem->bitmap.bottom=r.top+1+cy; 764 xpos+=cx; 764 765 } 765 766 } 766 767 767 768 768 /* 769 /* 769 770 * Display the text associated with this item 770 771 */ 771 772 r.left=xpos; 772 if ((wineItem->mask & TVIF_TEXT) && (wineItem->pszText)) 773 if ((wineItem->mask & TVIF_TEXT) && (wineItem->pszText)) 773 774 { 774 775 COLORREF oldBkColor = 0; … … 779 780 r.right -= 3; 780 781 781 wineItem->text.left = r.left; 782 wineItem->text.left = r.left; 782 783 wineItem->text.right = r.right; 783 784 wineItem->text.top = r.top; … … 789 790 } 790 791 791 /* Yep, there are some things that need to be straightened out here. 792 /* Yep, there are some things that need to be straightened out here. 792 793 Removing the comments around the setTextColor does not give the right 793 794 results. Dito FillRect. 794 795 */ 795 796 796 797 /* GetTextExtentPoint32A (hdc, wineItem->pszText, 798 799 797 798 /* GetTextExtentPoint32A (hdc, wineItem->pszText, 799 strlen (wineItem->pszText), &size); */ 800 800 801 /* FillRect ( hdc, &wineItem->text, GetSysColorBrush (infoPtr->clrBk)); 801 802 */ 802 803 804 if (!(cditem & CDRF_NOTIFYPOSTPAINT) && 803 804 805 if (!(cditem & CDRF_NOTIFYPOSTPAINT) && 805 806 (wineItem->state & (TVIS_SELECTED | TVIS_DROPHILITED)) ) { 806 807 808 809 810 811 812 /* 813 807 oldBkMode = SetBkMode (hdc, OPAQUE); 808 oldBkColor = SetBkColor (hdc, GetSysColor( COLOR_HIGHLIGHT)); 809 oldTextColor = SetTextColor(hdc, GetSysColor( COLOR_HIGHLIGHTTEXT)); 810 } else { 811 oldBkMode = SetBkMode (hdc, TRANSPARENT); 812 oldBkColor = SetBkColor (hdc, infoPtr->clrBk); 813 /* oldTextColor = SetTextColor(hdc, infoPtr->clrText); */ 814 } 814 815 815 816 816 817 817 818 /* Draw it */ 818 DrawTextA ( hdc, 819 wineItem->pszText, 820 lstrlenA(wineItem->pszText), 821 &wineItem->text, 822 uTextJustify | DT_VCENTER | DT_SINGLELINE ); 819 DrawTextA ( hdc, 820 wineItem->pszText, 821 lstrlenA(wineItem->pszText), 822 &wineItem->text, 823 uTextJustify | DT_VCENTER | DT_SINGLELINE ); 823 824 824 825 /* Obtain the text coordinate */ 825 826 DrawTextA ( 826 hdc, 827 wineItem->pszText, 828 lstrlenA(wineItem->pszText), 829 &wineItem->text, 830 uTextJustify | DT_VCENTER | DT_SINGLELINE | DT_CALCRECT); 827 hdc, 828 wineItem->pszText, 829 lstrlenA(wineItem->pszText), 830 &wineItem->text, 831 uTextJustify | DT_VCENTER | DT_SINGLELINE | DT_CALCRECT); 831 832 832 833 /* Restore the hdc state */ … … 839 840 840 841 /* Draw the box arround the selected item */ 841 if (wineItem->state & TVIS_SELECTED ) 842 if (wineItem->state & TVIS_SELECTED ) 842 843 { 843 844 HPEN hNewPen = CreatePen(PS_DOT, 0, GetSysColor(COLOR_WINDOWTEXT) ); 844 845 HPEN hOldPen = SelectObject( hdc, hNewPen ); 845 846 POINT points[4]; 846 847 847 848 points[0].x = wineItem->text.left-1; 848 points[0].y = wineItem->text.top+1; 849 points[0].y = wineItem->text.top+1; 849 850 points[1].x = wineItem->text.right; 850 points[1].y = wineItem->text.top+1; 851 points[1].y = wineItem->text.top+1; 851 852 points[2].x = wineItem->text.right; 852 points[2].y = wineItem->text.bottom; 853 points[2].y = wineItem->text.bottom; 853 854 points[3].x = wineItem->text.left-1; 854 855 points[3].y = wineItem->text.bottom; 855 856 856 Polyline (hdc,points,4); 857 Polyline (hdc,points,4); 857 858 858 859 DeleteObject(hNewPen); … … 863 864 /* Draw insertion mark if necessary */ 864 865 865 if (infoPtr->insertMarkItem) 866 866 if (infoPtr->insertMarkItem) 867 TRACE ("item:%d,mark:%d\n", (int)wineItem->hItem, 867 868 (int) infoPtr->insertMarkItem); 868 869 if (wineItem->hItem==infoPtr->insertMarkItem) { 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 870 HPEN hNewPen, hOldPen; 871 int offset; 872 873 hNewPen = CreatePen(PS_SOLID, 2, infoPtr->clrInsertMark); 874 hOldPen = SelectObject( hdc, hNewPen ); 875 876 if (infoPtr->insertBeforeorAfter) 877 offset=wineItem->text.top+1; 878 else 879 offset=wineItem->text.bottom-1; 880 881 MoveToEx (hdc, wineItem->text.left, offset-3, NULL); 882 LineTo (hdc, wineItem->text.left, offset+3); 883 884 MoveToEx (hdc, wineItem->text.left, offset, NULL); 885 LineTo (hdc, r.right-2, offset); 886 887 MoveToEx (hdc, r.right-2, offset+3, NULL); 888 LineTo (hdc, r.right-2, offset-3); 889 890 DeleteObject(hNewPen); 891 892 SelectObject(hdc, hOldPen); 893 } 893 894 894 895 if (cditem & CDRF_NOTIFYPOSTPAINT) { 895 cditem=TREEVIEW_SendCustomDrawItemNotify 896 cditem=TREEVIEW_SendCustomDrawItemNotify 896 897 (hwnd, hdc, wineItem, CDDS_ITEMPOSTPAINT); 897 898 898 TRACE("postpaint:cditem-app returns 0x%x\n",cditem); 899 } 899 900 900 901 SelectObject (hdc, hOldFont); … … 997 998 998 999 if (tvItem->mask & TVIF_STATE) { 999 1000 TRACE ("prevstate,state,mask:%x,%x,%x\n",wineItem->state,tvItem->state, 1000 1001 tvItem->stateMask); 1001 1002 wineItem->state&= ~tvItem->stateMask; 1002 1003 wineItem->stateMask|= tvItem->stateMask; 1003 wineItem->state|= (tvItem->state & tvItem->stateMask); 1004 wineItem->stateMask|= tvItem->stateMask; 1004 1005 } 1005 1006 … … 1869 1870 if (aChild->pszText==LPSTR_TEXTCALLBACKA) { 1870 1871 TREEVIEW_SendDispInfoNotify (hwnd, aChild, TVN_GETDISPINFO, TVIF_TEXT); 1871 1872 } 1872 1873 1873 1874 comp = strcmp(wineItem->pszText, aChild->pszText); … … 2257 2258 { 2258 2259 TREEVIEW_INFO *infoPtr; 2259 2260 2260 DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE); 2261 LOGFONTA logFont; 2261 2262 TEXTMETRICA tm; 2262 2263 2263 HDC hdc; 2264 2264 2265 TRACE("wnd %x, style %lx\n",hwnd,dwStyle); 2265 2266 /* allocate memory for info structure */ … … 2269 2270 2270 2271 if (infoPtr == NULL) { 2271 2272 2272 ERR("could not allocate info memory!\n"); 2273 return 0; 2273 2274 } 2274 2275 2275 2276 if ((TREEVIEW_INFO*) GetWindowLongA( hwnd, 0) != infoPtr) { 2276 2277 2277 ERR("pointer assignment error!\n"); 2278 return 0; 2278 2279 } 2279 2280 2280 2281 hdc=GetDC (hwnd); 2281 2282 2282 2283 /* set default settings */ … … 2292 2293 infoPtr->himlNormal = NULL; 2293 2294 infoPtr->himlState = NULL; 2294 2295 infoPtr->uItemHeight = -1; 2295 2296 GetTextMetricsA (hdc, &tm); 2296 2297 infoPtr->hFont = GetStockObject (DEFAULT_GUI_FONT); 2297 2298 2298 GetObjectA (infoPtr->hFont, sizeof (LOGFONTA), &logFont); 2299 logFont.lfWeight=FW_BOLD; 2299 2300 infoPtr->hBoldFont = CreateFontIndirectA (&logFont); 2300 2301 2301 2302 infoPtr->items = NULL; 2302 2303 infoPtr->selectedItem=0; 2303 infoPtr->clrText=-1; 2304 infoPtr->clrText=-1; /* use system color */ 2304 2305 infoPtr->dropItem=0; 2305 2306 2306 infoPtr->insertMarkItem=0; 2307 infoPtr->insertBeforeorAfter=0; 2307 2308 infoPtr->pCallBackSort=NULL; 2308 2309 infoPtr->uScrollTime = 300; /* milliseconds */ 2309 2310 2310 2311 infoPtr->hwndToolTip=0; 2311 2312 if (!(dwStyle & TVS_NOTOOLTIPS)) { /* Create tooltip control */ 2312 2313 2314 infoPtr->hwndToolTip = 2315 2313 TTTOOLINFOA ti; 2314 2315 infoPtr->hwndToolTip = 2316 CreateWindowExA (0, TOOLTIPS_CLASSA, NULL, 0, 2316 2317 CW_USEDEFAULT, CW_USEDEFAULT, 2317 2318 CW_USEDEFAULT, CW_USEDEFAULT, … … 2331 2332 } 2332 2333 2333 2334 ZeroMemory (&ti, sizeof(TTTOOLINFOA)); 2334 2335 ti.cbSize = sizeof(TTTOOLINFOA); 2335 2336 ti.uFlags = TTF_IDISHWND | TTF_TRACK | TTF_TRANSPARENT ; … … 2345 2346 infoPtr->wpEditOrig = NULL; /* no subclass */ 2346 2347 2347 infoPtr->hwndEdit = CreateWindowExA (2348 WS_EX_LEFT, 2348 infoPtr->hwndEdit = CreateWindowExA ( 2349 WS_EX_LEFT, 2349 2350 "EDIT", 2350 2351 0, 2351 WS_CHILD | WS_BORDER | ES_AUTOHSCROLL | 2352 WS_CHILD | WS_BORDER | ES_AUTOHSCROLL | 2352 2353 ES_WANTRETURN | ES_LEFT, 2353 2354 0, 0, 0, 0, 2354 hwnd, 2355 hwnd, 2355 2356 0,0,0); /* FIXME: (HMENU)IDTVEDIT,pcs->hInstance,0);*/ 2356 2357 2357 2358 SendMessageA ( infoPtr->hwndEdit, WM_SETFONT, infoPtr->hFont, FALSE); 2358 2359 infoPtr->wpEditOrig = (WNDPROC)SetWindowLongA ( 2359 2360 infoPtr->hwndEdit, 2360 GWL_WNDPROC, 2361 2362 2363 if (dwStyle & TVS_CHECKBOXES) { 2364 2365 2366 2367 infoPtr->himlState = 2361 GWL_WNDPROC, 2362 (LONG) TREEVIEW_Edit_SubclassProc); 2363 2364 if (dwStyle & TVS_CHECKBOXES) { 2365 HBITMAP hbmLoad; 2366 int nIndex; 2367 2368 infoPtr->himlState = 2368 2369 ImageList_Create (16, 16,ILC_COLOR|ILC_MASK, 15, 1); 2369 2370 2370 2371 2371 hbmLoad = LoadBitmapA (COMCTL32_hModule, MAKEINTRESOURCEA(IDT_CHECK)); 2372 TRACE ("%x\n",hbmLoad); 2372 2373 nIndex = ImageList_AddMasked (infoPtr->himlState, hbmLoad, CLR_DEFAULT); 2373 2374 2375 2374 TRACE ("%d\n",nIndex); 2375 DeleteObject (hbmLoad); 2376 } 2376 2377 ReleaseDC (hwnd, hdc); 2377 2378 return 0; … … 2885 2886 2886 2887 wineItem=TREEVIEW_HitTestPoint (hwnd, lpht->pt); 2887 if (!wineItem) { 2888 if (!wineItem) { 2888 2889 lpht->flags=TVHT_NOWHERE; 2889 2890 return 0; … … 2894 2895 if (x < wineItem->expandBox.left) { 2895 2896 lpht->flags |= TVHT_ONITEMINDENT; 2896 2897 } 2897 goto done; 2898 } 2898 2899 if ( PtInRect ( &wineItem->expandBox, lpht->pt)) { 2899 2900 lpht->flags |= TVHT_ONITEMBUTTON; 2900 2901 goto done; 2901 2902 } 2902 2903 if ( PtInRect ( &wineItem->bitmap, lpht->pt)) { 2903 2904 lpht->flags |= TVHT_ONITEMICON; 2904 2905 goto done; 2905 2906 } 2906 2907 if ( PtInRect ( &wineItem->statebitmap, lpht->pt)) { 2907 2908 lpht->flags |= TVHT_ONITEMSTATEICON; 2908 2909 goto done; 2909 2910 } 2910 2911 if ( PtInRect ( &wineItem->text, lpht->pt)) { 2911 lpht->flags |= TVHT_ONITEMLABEL; 2912 2913 } 2914 2912 lpht->flags |= TVHT_ONITEMLABEL; 2913 goto done; 2914 } 2915 2915 2916 lpht->flags|=TVHT_ONITEMRIGHT; 2916 2917 2917 2918 2918 2919 done: … … 3045 3046 TREEVIEW_ITEM *wineItem; 3046 3047 TVHITTESTINFO ht; 3047 3048 3048 3049 ht.pt.x = (INT)LOWORD(lParam); 3049 3050 ht.pt.y = (INT)HIWORD(lParam); 3050 3051 3051 3052 TRACE("\n"); 3052 3053 … … 3058 3059 iItem = TREEVIEW_HitTest (hwnd, (LPARAM) &ht); 3059 3060 TRACE ("%d\n",iItem); 3060 if (!iItem) 3061 if (!iItem) 3061 3062 return 0; 3062 3063 3063 3064 wineItem = TREEVIEW_ValidItem(infoPtr, (HTREEITEM)iItem); 3064 3065 3065 3066 infoPtr->uInternalStatus &= ~(TV_LDRAG | TV_LDRAGGING); 3066 3067 3067 /* 3068 * If the style allow editing and the node is already selected 3068 /* 3069 * If the style allow editing and the node is already selected 3069 3070 * and the click occured on the item label... 3070 3071 */ 3071 if ( ( GetWindowLongA( hwnd, GWL_STYLE) & TVS_EDITLABELS ) && 3072 if ( ( GetWindowLongA( hwnd, GWL_STYLE) & TVS_EDITLABELS ) && 3072 3073 ( wineItem->state & TVIS_SELECTED ) && 3073 3074 ( ht.flags & TVHT_ONITEMLABEL )) … … 3075 3076 if ( infoPtr->editItem == 0 ) /* If we are not curently editing */ 3076 3077 { 3077 3078 hwnd, 3079 wineItem, 3080 TVN_BEGINLABELEDIT, 3078 if ( TREEVIEW_SendDispInfoNotify( /* Return true to cancel edition */ 3079 hwnd, 3080 wineItem, 3081 TVN_BEGINLABELEDIT, 3081 3082 0)) 3082 3083 { 3083 return 0; 3084 return 0; 3084 3085 } 3085 3086 3087 3088 3089 SetWindowPos (3090 infoPtr->hwndEdit, 3091 HWND_TOP, 3092 wineItem->text.left - 2, 3086 3087 TRACE("Edit started for %s.\n", wineItem->pszText); 3088 infoPtr->editItem = wineItem->hItem; 3089 3090 SetWindowPos ( 3091 infoPtr->hwndEdit, 3092 HWND_TOP, 3093 wineItem->text.left - 2, 3093 3094 wineItem->text.top - 1, 3094 3095 wineItem->text.right - wineItem->text.left + 20 , 3095 3096 wineItem->text.bottom - wineItem->text.top + 3, 3096 3097 SWP_DRAWFRAME ); 3097 3098 3098 3099 SetWindowTextA( infoPtr->hwndEdit, wineItem->pszText ); 3099 3100 SendMessageA ( infoPtr->hwndEdit, EM_SETSEL, 0, -1 ); 3100 SetFocus ( infoPtr->hwndEdit);3101 ShowWindow ( infoPtr->hwndEdit, SW_SHOW); 3101 SetFocus ( infoPtr->hwndEdit); 3102 ShowWindow ( infoPtr->hwndEdit, SW_SHOW); 3102 3103 } 3103 3104 } … … 3112 3113 3113 3114 if (ht.flags & TVHT_ONITEMSTATEICON) { 3114 3115 3116 3117 3118 int state;/* to toggle the current state */3119 3120 3121 3122 3123 3124 3125 3115 DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE); 3116 3117 3118 if (dwStyle & TVS_CHECKBOXES) { /* TVS_CHECKBOXES requires _us_ */ 3119 int state; /* to toggle the current state */ 3120 state=1-(wineItem->state>>12); 3121 TRACE ("state:%x\n", state); 3122 wineItem->state&= ~TVIS_STATEIMAGEMASK; 3123 wineItem->state|=state<<12; 3124 TRACE ("state:%x\n", wineItem->state); 3125 TREEVIEW_QueueRefresh (hwnd); 3126 } 3126 3127 } 3127 3128 return 0; … … 3786 3787 return TREEVIEW_SetToolTips (hwnd, wParam); 3787 3788 3788 3789 3789 case TVM_SETINSERTMARK: 3790 return TREEVIEW_SetInsertMark (hwnd,wParam, lParam); 3790 3791 3791 3792 case TVM_SETITEMHEIGHT: … … 3822 3823 return TREEVIEW_SetLineColor (hwnd,wParam, lParam); 3823 3824 3824 3825 3826 3827 3828 3825 case TVM_SETINSERTMARKCOLOR: 3826 return TREEVIEW_SetInsertMarkColor (hwnd,wParam, lParam); 3827 3828 case TVM_GETINSERTMARKCOLOR: 3829 return TREEVIEW_GetInsertMarkColor (hwnd,wParam, lParam); 3829 3830 3830 3831 case TVM_GETUNICODEFORMAT:
Note:
See TracChangeset
for help on using the changeset viewer.