Changeset 236 for trunk/src/comctl32/tooltips.c
- Timestamp:
- Jun 28, 1999, 5:46:28 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/tooltips.c
r219 r236 1 /* $Id: tooltips.c,v 1. 7 1999-06-26 14:20:31cbratschi Exp $ */1 /* $Id: tooltips.c,v 1.8 1999-06-28 15:46:27 cbratschi Exp $ */ 2 2 /* 3 3 * Tool tip control … … 29 29 #include "comctl32.h" 30 30 31 32 31 #define ID_TIMERSHOW 1 /* show delay timer */ 33 32 #define ID_TIMERPOP 2 /* auto pop timer */ … … 41 40 42 41 #define TOOLTIPS_GetInfoPtr(hWindow) ((TOOLTIPS_INFO *)GetWindowLongA (hWindow, 0)) 43 44 42 45 43 LRESULT CALLBACK … … 119 117 } else if (ttnmdi.szText[0]) 120 118 { 121 lstrcpynAtoW (infoPtr->szTipText,ttnmdi.szText,80);119 lstrcpynAtoW(infoPtr->szTipText,ttnmdi.szText,MIN(INFOTIPSIZE-1,lstrlenA(ttnmdi.szText))); 122 120 if (ttnmdi.uFlags & TTF_DI_SETITEM) 123 121 { … … 130 128 { 131 129 /* no text available */ 132 infoPtr->szTipText[0] = L'\0';130 infoPtr->szTipText[0] = '\0'; 133 131 } else if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKA) 134 132 { 135 lstrcpynAtoW(infoPtr->szTipText,ttnmdi.lpszText, INFOTIPSIZE);133 lstrcpynAtoW(infoPtr->szTipText,ttnmdi.lpszText,MIN(INFOTIPSIZE-1,lstrlenA(ttnmdi.lpszText))); 136 134 if (ttnmdi.uFlags & TTF_DI_SETITEM) 137 135 { … … 149 147 { 150 148 /* the item is a usual (unicode) text */ 151 lstrcpynW (infoPtr->szTipText,toolPtr->lpszText,INFOTIPSIZE);149 lstrcpynW(infoPtr->szTipText,toolPtr->lpszText,MIN(INFOTIPSIZE-1,lstrlenW(toolPtr->lpszText))); 152 150 } 153 151 } … … 155 153 { 156 154 /* no text available */ 157 infoPtr->szTipText[0] = L'\0';155 infoPtr->szTipText[0] = '\0'; 158 156 } 159 157 … … 206 204 207 205 // TRACE (tooltips, "Show tooltip pre %d!\n", infoPtr->nTool); 208 209 206 TOOLTIPS_GetTipText(hwnd,infoPtr,infoPtr->nCurrentTool); 210 207 211 if (infoPtr->szTipText[0] == L'\0')208 if (infoPtr->szTipText[0] == '\0') 212 209 { 213 210 infoPtr->nCurrentTool = -1; … … 316 313 TOOLTIPS_GetTipText(hwnd,infoPtr,infoPtr->nTrackTool); 317 314 318 if (infoPtr->szTipText[0] == L'\0')315 if (infoPtr->szTipText[0] == '\0') 319 316 { 320 317 infoPtr->nTrackTool = -1; … … 558 555 TOOLTIPS_Activate (HWND hwnd, WPARAM wParam, LPARAM lParam) 559 556 { 560 TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr 557 TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(hwnd); 561 558 562 559 infoPtr->bActive = (BOOL)wParam; … … 572 569 573 570 574 static LRESULT 575 TOOLTIPS_AddToolA(HWND hwnd,WPARAM wParam,LPARAM lParam) 576 { 577 TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(hwnd); 578 LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam; 579 TTTOOL_INFO *toolPtr; 580 581 if (lpToolInfo == NULL) return FALSE; 582 if (lpToolInfo->cbSize < TTTOOLINFO_V1_SIZEA) return FALSE; 583 584 // TRACE (tooltips, "add tool (%x) %x %d%s!\n", 585 // hwnd, lpToolInfo->hwnd, lpToolInfo->uId, 586 // (lpToolInfo->uFlags & TTF_IDISHWND) ? " TTF_IDISHWND" : ""); 587 588 if (infoPtr->uNumTools == 0) 589 { 590 infoPtr->tools = COMCTL32_Alloc(sizeof(TTTOOL_INFO)); 591 toolPtr = infoPtr->tools; 592 } else 593 { 594 TTTOOL_INFO *oldTools = infoPtr->tools; 595 596 //CB: check if already exists! 597 598 infoPtr->tools = COMCTL32_Alloc (sizeof(TTTOOL_INFO)*(infoPtr->uNumTools+1)); 599 memcpy (infoPtr->tools,oldTools,infoPtr->uNumTools*sizeof(TTTOOL_INFO)); 600 COMCTL32_Free(oldTools); 601 toolPtr = &infoPtr->tools[infoPtr->uNumTools]; 602 } 603 604 infoPtr->uNumTools++; 605 606 /* copy tool data */ 607 toolPtr->uFlags = lpToolInfo->uFlags; 608 toolPtr->hwnd = lpToolInfo->hwnd; 609 toolPtr->uId = lpToolInfo->uId; 610 toolPtr->rect = lpToolInfo->rect; 611 toolPtr->hinst = lpToolInfo->hinst; 612 613 if ((lpToolInfo->hinst) && (HIWORD((INT)lpToolInfo->lpszText) == 0)) 614 { 615 // TRACE (tooltips, "add string id %x!\n", (int)lpToolInfo->lpszText); 616 toolPtr->lpszText = (LPWSTR)lpToolInfo->lpszText; 617 } else if (lpToolInfo->lpszText) 618 { 619 if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACKA) 620 { 621 // TRACE (tooltips, "add CALLBACK!\n"); 622 toolPtr->lpszText = LPSTR_TEXTCALLBACKW; 623 } else 624 { 625 INT len = lstrlenA (lpToolInfo->lpszText); 626 // TRACE (tooltips, "add text \"%s\"!\n", lpToolInfo->lpszText); 627 toolPtr->lpszText = COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 628 lstrcpyAtoW (toolPtr->lpszText, lpToolInfo->lpszText); 629 } 630 } else toolPtr->lpszText = NULL; 631 632 if (lpToolInfo->cbSize >= sizeof(TTTOOLINFOA)) 633 toolPtr->lParam = lpToolInfo->lParam; 634 635 /* install subclassing hook */ 571 static VOID TOOLTIPS_Subclass(HWND hwnd,TTTOOL_INFO *toolPtr) 572 { 636 573 if (toolPtr->uFlags & TTF_SUBCLASS) 637 574 { … … 669 606 // TRACE (tooltips, "subclassing installed!\n"); 670 607 } 671 672 return TRUE; 673 } 674 675 676 static LRESULT 677 TOOLTIPS_AddToolW (HWND hwnd, WPARAM wParam, LPARAM lParam) 678 { 679 TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); 680 LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam; 608 } 609 610 static VOID TOOLTIPS_Desubclass(TTTOOL_INFO *toolPtr) 611 { 612 if (toolPtr->uFlags & TTF_SUBCLASS) 613 { 614 if (toolPtr->uFlags & TTF_IDISHWND) 615 { 616 LPTT_SUBCLASS_INFO lpttsi = 617 (LPTT_SUBCLASS_INFO)GetPropA((HWND)toolPtr->uId,COMCTL32_aSubclass); 618 if (lpttsi) 619 { 620 SetWindowLongA ((HWND)toolPtr->uId,GWL_WNDPROC,(LONG)lpttsi->wpOrigProc); 621 RemovePropA ((HWND)toolPtr->uId,COMCTL32_aSubclass); 622 COMCTL32_Free(&lpttsi); 623 } 624 // else 625 // ERR (tooltips, "Invalid data handle!\n"); 626 } else 627 { 628 LPTT_SUBCLASS_INFO lpttsi = 629 (LPTT_SUBCLASS_INFO)GetPropA(toolPtr->hwnd,COMCTL32_aSubclass); 630 if (lpttsi) 631 { 632 if (lpttsi->uRefCount == 1) 633 { 634 SetWindowLongA((HWND)toolPtr->uId,GWL_WNDPROC,(LONG)lpttsi->wpOrigProc); 635 RemovePropA((HWND)toolPtr->uId,COMCTL32_aSubclass); 636 COMCTL32_Free(&lpttsi); 637 } else lpttsi->uRefCount--; 638 } 639 // else 640 // ERR (tooltips, "Invalid data handle!\n"); 641 } 642 } 643 } 644 645 static LRESULT 646 TOOLTIPS_AddToolA(HWND hwnd,WPARAM wParam,LPARAM lParam) 647 { 648 TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(hwnd); 649 LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam; 681 650 TTTOOL_INFO *toolPtr; 682 651 683 if (lpToolInfo == NULL) 684 return FALSE; 685 if (lpToolInfo->cbSize < TTTOOLINFO_V1_SIZEW) 686 return FALSE; 652 if (lpToolInfo == NULL) return FALSE; 653 if (lpToolInfo->cbSize < TTTOOLINFO_V1_SIZEA) return FALSE; 687 654 688 655 // TRACE (tooltips, "add tool (%x) %x %d%s!\n", … … 690 657 // (lpToolInfo->uFlags & TTF_IDISHWND) ? " TTF_IDISHWND" : ""); 691 658 692 if (infoPtr->uNumTools == 0) { 693 infoPtr->tools = COMCTL32_Alloc (sizeof(TTTOOL_INFO)); 694 toolPtr = infoPtr->tools; 695 } 696 else { 697 TTTOOL_INFO *oldTools = infoPtr->tools; 698 infoPtr->tools = 699 COMCTL32_Alloc (sizeof(TTTOOL_INFO) * (infoPtr->uNumTools + 1)); 700 memcpy (infoPtr->tools, oldTools, 701 infoPtr->uNumTools * sizeof(TTTOOL_INFO)); 702 COMCTL32_Free (oldTools); 659 if (infoPtr->uNumTools == 0) 660 { 661 infoPtr->tools = COMCTL32_Alloc(sizeof(TTTOOL_INFO)); 662 toolPtr = infoPtr->tools; 663 } else 664 { 665 TTTOOL_INFO *oldTools = infoPtr->tools; 666 INT x; 667 668 toolPtr = NULL; 669 670 //check if toolinfo already exists 671 for (x = 0;x < infoPtr->uNumTools;x++) 672 { 673 if (lpToolInfo->hwnd == infoPtr->tools[x].hwnd && lpToolInfo->uId == infoPtr->tools[x].uId) 674 { 675 //return toolPtr 676 toolPtr = &infoPtr->tools[x]; 677 //free allocated memory 678 TOOLTIPS_Desubclass(toolPtr); 679 if ((toolPtr->hinst) && (toolPtr->lpszText)) 680 { 681 if (toolPtr->lpszText != LPSTR_TEXTCALLBACKW) COMCTL32_Free(toolPtr->lpszText); 682 } 683 684 break; 685 } 686 } 687 688 if (toolPtr == NULL) 689 { 690 infoPtr->tools = COMCTL32_Alloc (sizeof(TTTOOL_INFO)*(infoPtr->uNumTools+1)); 691 memcpy(infoPtr->tools,oldTools,infoPtr->uNumTools*sizeof(TTTOOL_INFO)); 692 COMCTL32_Free(oldTools); 703 693 toolPtr = &infoPtr->tools[infoPtr->uNumTools]; 694 } 695 } 696 697 infoPtr->uNumTools++; 698 699 /* copy tool data */ 700 toolPtr->uFlags = lpToolInfo->uFlags; 701 toolPtr->hwnd = lpToolInfo->hwnd; 702 toolPtr->uId = lpToolInfo->uId; 703 toolPtr->rect = lpToolInfo->rect; 704 toolPtr->hinst = lpToolInfo->hinst; 705 706 if ((lpToolInfo->hinst) && (HIWORD((INT)lpToolInfo->lpszText) == 0)) 707 { 708 // TRACE (tooltips, "add string id %x!\n", (int)lpToolInfo->lpszText); 709 toolPtr->lpszText = (LPWSTR)lpToolInfo->lpszText; 710 } else if (lpToolInfo->lpszText) 711 { 712 if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACKA) 713 { 714 // TRACE (tooltips, "add CALLBACK!\n"); 715 toolPtr->lpszText = LPSTR_TEXTCALLBACKW; 716 } else 717 { 718 INT len = lstrlenA (lpToolInfo->lpszText); 719 // TRACE (tooltips, "add text \"%s\"!\n", lpToolInfo->lpszText); 720 toolPtr->lpszText = COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 721 lstrcpyAtoW (toolPtr->lpszText, lpToolInfo->lpszText); 722 } 723 } else toolPtr->lpszText = NULL; 724 725 if (lpToolInfo->cbSize >= sizeof(TTTOOLINFOA)) 726 toolPtr->lParam = lpToolInfo->lParam; 727 728 /* install subclassing hook */ 729 TOOLTIPS_Subclass(hwnd,toolPtr); 730 731 return TRUE; 732 } 733 734 735 static LRESULT 736 TOOLTIPS_AddToolW (HWND hwnd, WPARAM wParam, LPARAM lParam) 737 { 738 TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); 739 LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam; 740 TTTOOL_INFO *toolPtr; 741 742 if (lpToolInfo == NULL) 743 return FALSE; 744 if (lpToolInfo->cbSize < TTTOOLINFO_V1_SIZEW) 745 return FALSE; 746 747 // TRACE (tooltips, "add tool (%x) %x %d%s!\n", 748 // hwnd, lpToolInfo->hwnd, lpToolInfo->uId, 749 // (lpToolInfo->uFlags & TTF_IDISHWND) ? " TTF_IDISHWND" : ""); 750 751 if (infoPtr->uNumTools == 0) 752 { 753 infoPtr->tools = COMCTL32_Alloc (sizeof(TTTOOL_INFO)); 754 toolPtr = infoPtr->tools; 755 } else 756 { 757 TTTOOL_INFO *oldTools = infoPtr->tools; 758 INT x; 759 760 toolPtr = NULL; 761 762 //check if toolinfo already exists 763 for (x = 0;x < infoPtr->uNumTools;x++) 764 { 765 if (lpToolInfo->hwnd == infoPtr->tools[x].hwnd && lpToolInfo->uId == infoPtr->tools[x].uId) 766 { 767 //return toolPtr 768 toolPtr = &infoPtr->tools[x]; 769 //free allocated memory 770 TOOLTIPS_Desubclass(toolPtr); 771 if ((toolPtr->hinst) && (toolPtr->lpszText)) 772 { 773 if (toolPtr->lpszText != LPSTR_TEXTCALLBACKW) COMCTL32_Free(toolPtr->lpszText); 774 } 775 776 break; 777 } 778 } 779 780 if (toolPtr == NULL) 781 { 782 infoPtr->tools = COMCTL32_Alloc(sizeof(TTTOOL_INFO)*(infoPtr->uNumTools+1)); 783 memcpy (infoPtr->tools,oldTools,infoPtr->uNumTools*sizeof(TTTOOL_INFO)); 784 COMCTL32_Free(oldTools); 785 toolPtr = &infoPtr->tools[infoPtr->uNumTools]; 786 } 704 787 } 705 788 … … 735 818 736 819 /* install subclassing hook */ 737 if (toolPtr->uFlags & TTF_SUBCLASS) { 738 if (toolPtr->uFlags & TTF_IDISHWND) { 739 LPTT_SUBCLASS_INFO lpttsi = 740 (LPTT_SUBCLASS_INFO)GetPropA ((HWND)toolPtr->uId, COMCTL32_aSubclass); 741 if (lpttsi == NULL) { 742 lpttsi = 743 (LPTT_SUBCLASS_INFO)COMCTL32_Alloc (sizeof(TT_SUBCLASS_INFO)); 744 lpttsi->wpOrigProc = 745 (WNDPROC)SetWindowLongA ((HWND)toolPtr->uId, 746 GWL_WNDPROC,(LONG)TOOLTIPS_SubclassProc); 747 lpttsi->hwndToolTip = hwnd; 748 lpttsi->uRefCount++; 749 SetPropA ((HWND)toolPtr->uId, COMCTL32_aSubclass, 750 (HANDLE)lpttsi); 751 } 752 // else 753 // WARN (tooltips, "A window tool must only be listed once!\n"); 754 } 755 else { 756 LPTT_SUBCLASS_INFO lpttsi = 757 (LPTT_SUBCLASS_INFO)GetPropA (toolPtr->hwnd, COMCTL32_aSubclass); 758 if (lpttsi == NULL) { 759 lpttsi = 760 (LPTT_SUBCLASS_INFO)COMCTL32_Alloc (sizeof(TT_SUBCLASS_INFO)); 761 lpttsi->wpOrigProc = 762 (WNDPROC)SetWindowLongA (toolPtr->hwnd, 763 GWL_WNDPROC,(LONG)TOOLTIPS_SubclassProc); 764 lpttsi->hwndToolTip = hwnd; 765 lpttsi->uRefCount++; 766 SetPropA (toolPtr->hwnd, COMCTL32_aSubclass, (HANDLE)lpttsi); 767 } 768 else 769 lpttsi->uRefCount++; 770 } 771 // TRACE (tooltips, "subclassing installed!\n"); 772 } 820 TOOLTIPS_Subclass(hwnd,toolPtr); 773 821 774 822 return TRUE; … … 804 852 805 853 /* remove subclassing */ 806 if (toolPtr->uFlags & TTF_SUBCLASS) { 807 if (toolPtr->uFlags & TTF_IDISHWND) { 808 LPTT_SUBCLASS_INFO lpttsi = 809 (LPTT_SUBCLASS_INFO)GetPropA ((HWND)toolPtr->uId, COMCTL32_aSubclass); 810 if (lpttsi) { 811 SetWindowLongA ((HWND)toolPtr->uId, GWL_WNDPROC, 812 (LONG)lpttsi->wpOrigProc); 813 RemovePropA ((HWND)toolPtr->uId, COMCTL32_aSubclass); 814 COMCTL32_Free (&lpttsi); 815 } 816 // else 817 // ERR (tooltips, "Invalid data handle!\n"); 818 } 819 else { 820 LPTT_SUBCLASS_INFO lpttsi = 821 (LPTT_SUBCLASS_INFO)GetPropA (toolPtr->hwnd, COMCTL32_aSubclass); 822 if (lpttsi) { 823 if (lpttsi->uRefCount == 1) { 824 SetWindowLongA ((HWND)toolPtr->uId, GWL_WNDPROC, 825 (LONG)lpttsi->wpOrigProc); 826 RemovePropA ((HWND)toolPtr->uId, COMCTL32_aSubclass); 827 COMCTL32_Free (&lpttsi); 828 } 829 else 830 lpttsi->uRefCount--; 831 } 832 // else 833 // ERR (tooltips, "Invalid data handle!\n"); 834 } 835 } 854 TOOLTIPS_Desubclass(toolPtr); 836 855 837 856 /* delete tool from tool list */ … … 890 909 891 910 /* remove subclassing */ 892 if (toolPtr->uFlags & TTF_SUBCLASS) { 893 if (toolPtr->uFlags & TTF_IDISHWND) { 894 LPTT_SUBCLASS_INFO lpttsi = 895 (LPTT_SUBCLASS_INFO)GetPropA ((HWND)toolPtr->uId, COMCTL32_aSubclass); 896 if (lpttsi) { 897 SetWindowLongA ((HWND)toolPtr->uId, GWL_WNDPROC, 898 (LONG)lpttsi->wpOrigProc); 899 RemovePropA ((HWND)toolPtr->uId, COMCTL32_aSubclass); 900 COMCTL32_Free (&lpttsi); 901 } 902 // else 903 // ERR (tooltips, "Invalid data handle!\n"); 904 } 905 else { 906 LPTT_SUBCLASS_INFO lpttsi = 907 (LPTT_SUBCLASS_INFO)GetPropA (toolPtr->hwnd, COMCTL32_aSubclass); 908 if (lpttsi) { 909 if (lpttsi->uRefCount == 1) { 910 SetWindowLongA ((HWND)toolPtr->uId, GWL_WNDPROC, 911 (LONG)lpttsi->wpOrigProc); 912 RemovePropA ((HWND)toolPtr->uId, COMCTL32_aSubclass); 913 COMCTL32_Free (&lpttsi); 914 } 915 else 916 lpttsi->uRefCount--; 917 } 918 // else 919 // ERR (tooltips, "Invalid data handle!\n"); 920 } 921 } 911 TOOLTIPS_Desubclass(toolPtr); 922 912 923 913 /* delete tool from tool list */ … … 1443 1433 // TRACE (tooltips, "WM_MOUSEMOVE (%04x %ld %ld)\n", 1444 1434 // hwnd, pt.x, pt.y); 1445 infoPtr->bActive = TRUE;//CB: somewhere reset, find it!!! 1435 1446 1436 if (infoPtr->bActive && (infoPtr->nTool != infoPtr->nOldTool)) 1447 1437 { … … 1855 1845 1856 1846 /* initialize info structure */ 1847 infoPtr->szTipText[0] = '\0'; 1857 1848 infoPtr->bActive = TRUE; 1858 1849 infoPtr->bTrackActive = FALSE; 1859 1850 infoPtr->clrBk = GetSysColor(COLOR_INFOBK); 1860 1851 infoPtr->clrText = GetSysColor(COLOR_INFOTEXT); 1852 infoPtr->xTrackPos = 0; 1853 infoPtr->yTrackPos = 0; 1861 1854 1862 1855 nclm.cbSize = sizeof(NONCLIENTMETRICSA); … … 1910 1903 1911 1904 /* remove subclassing */ 1912 if (toolPtr->uFlags & TTF_SUBCLASS) 1913 { 1914 LPTT_SUBCLASS_INFO lpttsi; 1915 1916 if (toolPtr->uFlags & TTF_IDISHWND) 1917 lpttsi = (LPTT_SUBCLASS_INFO)GetPropA((HWND)toolPtr->uId,COMCTL32_aSubclass); 1918 else 1919 lpttsi = (LPTT_SUBCLASS_INFO)GetPropA(toolPtr->hwnd,COMCTL32_aSubclass); 1920 1921 if (lpttsi) 1922 { 1923 SetWindowLongA ((HWND)toolPtr->uId,GWL_WNDPROC,(LONG)lpttsi->wpOrigProc); 1924 RemovePropA ((HWND)toolPtr->uId, COMCTL32_aSubclass); 1925 COMCTL32_Free (&lpttsi); 1926 } 1927 } 1905 TOOLTIPS_Desubclass(toolPtr); 1906 1928 1907 } 1929 1908 COMCTL32_Free (infoPtr->tools); … … 2079 2058 if(wParam < length) 2080 2059 { 2081 lstrcpynWtoA((LPSTR)lParam, infoPtr->szTipText,(UINT)wParam);2060 lstrcpynWtoA((LPSTR)lParam,infoPtr->szTipText,MIN((UINT)wParam,lstrlenW(infoPtr->szTipText))); 2082 2061 return wParam; 2083 2062 } 2084 lstrcpyWtoA((LPSTR)lParam, 2063 lstrcpyWtoA((LPSTR)lParam,infoPtr->szTipText); 2085 2064 return length; 2086 2065 … … 2093 2072 2094 2073 // TRACE (tooltips, "timer %d (%x) expired!\n", wParam, hwnd); 2095 2096 2074 switch (wParam) 2097 2075 { 2098 2076 case ID_TIMERSHOW: 2099 KillTimer 2077 KillTimer(hwnd,ID_TIMERSHOW); 2100 2078 if (TOOLTIPS_CheckTool(hwnd,TRUE) == infoPtr->nTool) 2101 2079 TOOLTIPS_Show(hwnd,infoPtr); … … 2116 2094 break; 2117 2095 } 2096 2118 2097 return 0; 2119 2098 }
Note:
See TracChangeset
for help on using the changeset viewer.