Changeset 3182 for trunk/src/comctl32/tooltips.cpp
- Timestamp:
- Mar 21, 2000, 6:30:46 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/tooltips.cpp
r3154 r3182 1 /* $Id: tooltips.cpp,v 1. 4 2000-03-18 16:17:32cbratschi Exp $ */1 /* $Id: tooltips.cpp,v 1.5 2000-03-21 17:30:45 cbratschi Exp $ */ 2 2 /* 3 3 * Tool tip control … … 79 79 } 80 80 81 82 static VOID 83 TOOLTIPS_GetTipText(HWND hwnd,TOOLTIPS_INFO *infoPtr,INT nTool) 81 static VOID TOOLTIPS_GetCallbackText(HWND hwnd,TOOLTIPS_INFO *infoPtr,TTTOOL_INFO *toolPtr) 82 { 83 if (isUnicodeNotify(&infoPtr->header)) 84 { 85 NMTTDISPINFOW ttnmdi; 86 87 /* fill NMHDR struct */ 88 ZeroMemory (&ttnmdi,sizeof(NMTTDISPINFOW)); 89 ttnmdi.hdr.hwndFrom = hwnd; 90 ttnmdi.hdr.idFrom = toolPtr->uId; 91 ttnmdi.hdr.code = TTN_GETDISPINFOW; 92 ttnmdi.lpszText = (WCHAR*)&ttnmdi.szText; 93 ttnmdi.uFlags = toolPtr->uFlags; 94 ttnmdi.lParam = toolPtr->lParam; 95 SendMessageA(toolPtr->hwnd,WM_NOTIFY,(WPARAM)toolPtr->uId,(LPARAM)&ttnmdi); 96 97 if ((ttnmdi.hinst) && (HIWORD((UINT)ttnmdi.lpszText) == 0)) 98 { 99 LoadStringW(ttnmdi.hinst,(UINT)ttnmdi.lpszText,infoPtr->szTipText,INFOTIPSIZE); 100 if (ttnmdi.uFlags & TTF_DI_SETITEM) 101 { 102 toolPtr->hinst = ttnmdi.hinst; 103 toolPtr->lpszText = (LPWSTR)ttnmdi.lpszText; 104 } 105 } else 106 { 107 if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKW) 108 { 109 if (!HIWORD(ttnmdi.lpszText) && (ttnmdi.lpszText != NULL)) 110 { 111 //error 112 infoPtr->szTipText[0] = '\0'; 113 return; 114 } 115 lstrcpynW(infoPtr->szTipText,ttnmdi.lpszText,INFOTIPSIZE); 116 if (ttnmdi.uFlags & TTF_DI_SETITEM) 117 { 118 INT len = lstrlenW(ttnmdi.lpszText); 119 toolPtr->hinst = 0; 120 toolPtr->lpszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 121 lstrcpyW(toolPtr->lpszText,ttnmdi.lpszText); 122 } 123 } else 124 { 125 //ERR (tooltips, "recursive text callback!\n"); 126 infoPtr->szTipText[0] = '\0'; 127 } 128 } 129 } else 130 { 131 NMTTDISPINFOA ttnmdi; 132 133 /* fill NMHDR struct */ 134 ZeroMemory (&ttnmdi,sizeof(NMTTDISPINFOA)); 135 ttnmdi.hdr.hwndFrom = hwnd; 136 ttnmdi.hdr.idFrom = toolPtr->uId; 137 ttnmdi.hdr.code = TTN_GETDISPINFOA; 138 ttnmdi.lpszText = (CHAR*)&ttnmdi.szText; 139 ttnmdi.uFlags = toolPtr->uFlags; 140 ttnmdi.lParam = toolPtr->lParam; 141 SendMessageA(toolPtr->hwnd,WM_NOTIFY,(WPARAM)toolPtr->uId,(LPARAM)&ttnmdi); 142 143 if ((ttnmdi.hinst) && (HIWORD((UINT)ttnmdi.lpszText) == 0)) 144 { 145 LoadStringW(ttnmdi.hinst,(UINT)ttnmdi.lpszText,infoPtr->szTipText,INFOTIPSIZE); 146 if (ttnmdi.uFlags & TTF_DI_SETITEM) 147 { 148 toolPtr->hinst = ttnmdi.hinst; 149 toolPtr->lpszText = (LPWSTR)ttnmdi.lpszText; 150 } 151 } else 152 { 153 if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKA) 154 { 155 if (!HIWORD(ttnmdi.lpszText) && (ttnmdi.lpszText != NULL)) 156 { 157 //error 158 infoPtr->szTipText[0] = '\0'; 159 return; 160 } 161 lstrcpynAtoW(infoPtr->szTipText,ttnmdi.lpszText,INFOTIPSIZE); 162 if (ttnmdi.uFlags & TTF_DI_SETITEM) 163 { 164 INT len = lstrlenA(ttnmdi.lpszText); 165 toolPtr->hinst = 0; 166 toolPtr->lpszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 167 lstrcpyAtoW(toolPtr->lpszText,ttnmdi.lpszText); 168 } 169 } else 170 { 171 //ERR (tooltips, "recursive text callback!\n"); 172 infoPtr->szTipText[0] = '\0'; 173 } 174 } 175 } 176 } 177 178 static VOID TOOLTIPS_GetTipText(HWND hwnd,TOOLTIPS_INFO *infoPtr,INT nTool) 84 179 { 85 180 TTTOOL_INFO *toolPtr = &infoPtr->tools[nTool]; … … 93 188 { 94 189 if (toolPtr->lpszText == LPSTR_TEXTCALLBACKW) 95 { 96 NMTTDISPINFOA ttnmdi; 97 98 /* fill NMHDR struct */ 99 ZeroMemory (&ttnmdi,sizeof(NMTTDISPINFOA)); 100 ttnmdi.hdr.hwndFrom = hwnd; 101 ttnmdi.hdr.idFrom = toolPtr->uId; 102 ttnmdi.hdr.code = TTN_GETDISPINFOA; 103 ttnmdi.lpszText = (LPSTR)&ttnmdi.szText; 104 ttnmdi.uFlags = toolPtr->uFlags; 105 ttnmdi.lParam = toolPtr->lParam; 106 SendMessageA (toolPtr->hwnd,WM_NOTIFY,(WPARAM)toolPtr->uId,(LPARAM)&ttnmdi); 107 108 if ((ttnmdi.hinst) && (HIWORD((UINT)ttnmdi.szText) == 0)) 109 { 110 LoadStringW (ttnmdi.hinst,(UINT)ttnmdi.szText,infoPtr->szTipText,INFOTIPSIZE); 111 if (ttnmdi.uFlags & TTF_DI_SETITEM) 112 { 113 toolPtr->hinst = ttnmdi.hinst; 114 toolPtr->lpszText = (LPWSTR)ttnmdi.szText; 115 } 116 } else if (ttnmdi.szText[0]) 117 { 118 lstrcpynAtoW(infoPtr->szTipText,ttnmdi.szText,INFOTIPSIZE); 119 if (ttnmdi.uFlags & TTF_DI_SETITEM) 120 { 121 INT len = lstrlenA(ttnmdi.szText); 122 toolPtr->hinst = 0; 123 toolPtr->lpszText = (WCHAR*)COMCTL32_Alloc((len+1)* sizeof(WCHAR)); 124 lstrcpyAtoW(toolPtr->lpszText,ttnmdi.szText); 125 } 126 } else if (ttnmdi.lpszText == 0) 127 { 128 /* no text available */ 129 infoPtr->szTipText[0] = '\0'; 130 } else if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKA) 131 { 132 lstrcpynAtoW(infoPtr->szTipText,ttnmdi.lpszText,INFOTIPSIZE); 133 if (ttnmdi.uFlags & TTF_DI_SETITEM) 134 { 135 INT len = lstrlenA(ttnmdi.lpszText); 136 toolPtr->hinst = 0; 137 toolPtr->lpszText = (WCHAR*)COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 138 lstrcpyAtoW(toolPtr->lpszText,ttnmdi.lpszText); 139 } 140 } else 141 { 142 //ERR (tooltips, "recursive text callback!\n"); 143 infoPtr->szTipText[0] = '\0'; 144 } 145 } else 190 TOOLTIPS_GetCallbackText(hwnd,infoPtr,toolPtr); 191 else 146 192 { 147 193 /* the item is a usual (unicode) text */ 148 194 lstrcpynW(infoPtr->szTipText,toolPtr->lpszText,INFOTIPSIZE); 149 195 } 150 } 151 else 196 } else 152 197 { 153 198 /* no text available */ 154 199 infoPtr->szTipText[0] = '\0'; 155 200 } 156 157 // TRACE (tooltips, "\"%s\"\n", debugstr_w(infoPtr->szTipText));158 201 } 159 202 … … 626 669 } 627 670 628 // TRACE (tooltips, "tool %d\n", nTool);629 630 671 return nTool; 631 672 } … … 638 679 639 680 infoPtr->bActive = (BOOL)wParam; 640 641 // if (infoPtr->bActive)642 // TRACE (tooltips, "activate!\n");643 681 644 682 if (!(infoPtr->bActive) && (infoPtr->nCurrentTool != -1)) … … 1228 1266 if (nTool == -1) return 0; 1229 1267 1230 TOOLTIPS_GetTipText(hwnd,infoPtr,nTool); //CB: get text1268 TOOLTIPS_GetTipText(hwnd,infoPtr,nTool); 1231 1269 1232 1270 lstrcpyWtoA(lpToolInfo->lpszText,infoPtr->szTipText); … … 1251 1289 if (nTool == -1) return 0; 1252 1290 1253 TOOLTIPS_GetTipText(hwnd,infoPtr,nTool); //CB: get text1291 TOOLTIPS_GetTipText(hwnd,infoPtr,nTool); 1254 1292 1255 1293 lstrcpyW(lpToolInfo->lpszText,infoPtr->szTipText);
Note:
See TracChangeset
for help on using the changeset viewer.