Changeset 267 for trunk/src/comctl32/tab.c
- Timestamp:
- Jul 4, 1999, 11:06:00 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/tab.c
r252 r267 1 /* $Id: tab.c,v 1. 7 1999-06-30 15:52:17cbratschi Exp $ */1 /* $Id: tab.c,v 1.8 1999-07-04 21:05:59 cbratschi Exp $ */ 2 2 /* 3 3 * Tab control … … 12 12 * Image list support 13 13 * Multiline support 14 * Unicode support15 14 */ 16 15 … … 20 19 #include "commctrl.h" 21 20 #include "tab.h" 21 #include "comctl32.h" 22 22 23 23 … … 709 709 * Calculate how wide the tab is depending on the text it contains 710 710 */ 711 GetTextExtentPoint32 A(hdc, infoPtr->items[curItem].pszText,712 lstrlen A(infoPtr->items[curItem].pszText), &size);711 GetTextExtentPoint32W(hdc, infoPtr->items[curItem].pszText, 712 lstrlenW(infoPtr->items[curItem].pszText), &size); 713 713 714 714 infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left + … … 934 934 * Draw the text; 935 935 */ 936 DrawText A(hdc,936 DrawTextW(hdc, 937 937 infoPtr->items[iItem].pszText, 938 lstrlen A(infoPtr->items[iItem].pszText),938 lstrlenW(infoPtr->items[iItem].pszText), 939 939 &r, 940 940 DT_LEFT|DT_SINGLELINE|DT_VCENTER); … … 1238 1238 } 1239 1239 1240 static LRESULT 1241 TAB_InsertItem (HWND hwnd, WPARAM wParam, LPARAM lParam) 1240 static LRESULT TAB_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam) 1242 1241 { 1243 1242 TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); … … 1286 1285 if (pti->mask & TCIF_TEXT) { 1287 1286 len = lstrlenA (pti->pszText); 1288 infoPtr->items[iItem].pszText = COMCTL32_Alloc (len+1); 1289 lstrcpyA (infoPtr->items[iItem].pszText, pti->pszText); 1287 infoPtr->items[iItem].pszText = COMCTL32_Alloc ((len+1)*sizeof(WCHAR)); 1288 lstrcpyAtoW (infoPtr->items[iItem].pszText, pti->pszText); 1289 infoPtr->items[iItem].cchTextMax = pti->cchTextMax; 1290 } 1291 1292 if (pti->mask & TCIF_IMAGE) 1293 infoPtr->items[iItem].iImage = pti->iImage; 1294 1295 if (pti->mask & TCIF_PARAM) 1296 infoPtr->items[iItem].lParam = pti->lParam; 1297 1298 TAB_InvalidateTabArea(hwnd, infoPtr); 1299 1300 // TRACE(tab, "[%04x]: added item %d '%s'\n", 1301 // hwnd, iItem, infoPtr->items[iItem].pszText); 1302 1303 TAB_SetItemBounds(hwnd); 1304 return iItem; 1305 } 1306 1307 static LRESULT TAB_InsertItemW(HWND hwnd, WPARAM wParam, LPARAM lParam) 1308 { 1309 TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); 1310 TCITEMW *pti; 1311 INT iItem, len; 1312 RECT rect; 1313 1314 GetClientRect (hwnd, &rect); 1315 // TRACE(tab, "Rect: %x T %i, L %i, B %i, R %i\n", hwnd, 1316 // rect.top, rect.left, rect.bottom, rect.right); 1317 1318 pti = (TCITEMW*)lParam; 1319 iItem = (INT)wParam; 1320 1321 if (iItem < 0) return -1; 1322 if (iItem > infoPtr->uNumItem) 1323 iItem = infoPtr->uNumItem; 1324 1325 if (infoPtr->uNumItem == 0) { 1326 infoPtr->items = COMCTL32_Alloc (sizeof (TAB_ITEM)); 1327 infoPtr->uNumItem++; 1328 } 1329 else { 1330 TAB_ITEM *oldItems = infoPtr->items; 1331 1332 infoPtr->uNumItem++; 1333 infoPtr->items = COMCTL32_Alloc (sizeof (TAB_ITEM) * infoPtr->uNumItem); 1334 1335 /* pre insert copy */ 1336 if (iItem > 0) { 1337 memcpy (&infoPtr->items[0], &oldItems[0], 1338 iItem * sizeof(TAB_ITEM)); 1339 } 1340 1341 /* post insert copy */ 1342 if (iItem < infoPtr->uNumItem - 1) { 1343 memcpy (&infoPtr->items[iItem+1], &oldItems[iItem], 1344 (infoPtr->uNumItem - iItem - 1) * sizeof(TAB_ITEM)); 1345 1346 } 1347 1348 COMCTL32_Free (oldItems); 1349 } 1350 1351 infoPtr->items[iItem].mask = pti->mask; 1352 if (pti->mask & TCIF_TEXT) { 1353 len = lstrlenW (pti->pszText); 1354 infoPtr->items[iItem].pszText = COMCTL32_Alloc ((len+1)*sizeof(WCHAR)); 1355 lstrcpyW (infoPtr->items[iItem].pszText, pti->pszText); 1290 1356 infoPtr->items[iItem].cchTextMax = pti->cchTextMax; 1291 1357 } … … 1353 1419 len = lstrlenA (tabItem->pszText); 1354 1420 if (len>wineItem->cchTextMax) 1355 wineItem->pszText = COMCTL32_ReAlloc (wineItem->pszText, len+1); 1356 lstrcpynA (wineItem->pszText, tabItem->pszText, len+1); 1421 wineItem->pszText = COMCTL32_ReAlloc (wineItem->pszText, (len+1)*sizeof(WCHAR)); 1422 lstrcpynAtoW (wineItem->pszText, tabItem->pszText, len+1); 1423 } 1424 1425 return TRUE; 1426 } 1427 1428 static LRESULT TAB_SetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam) 1429 { 1430 TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); 1431 TCITEMW *tabItem; 1432 TAB_ITEM *wineItem; 1433 INT iItem,len; 1434 1435 iItem=(INT) wParam; 1436 tabItem=(LPTCITEMW) lParam; 1437 // TRACE (tab,"%d %p\n",iItem, tabItem); 1438 if ((iItem<0) || (iItem>infoPtr->uNumItem)) return FALSE; 1439 1440 wineItem=& infoPtr->items[iItem]; 1441 1442 if (tabItem->mask & TCIF_IMAGE) 1443 wineItem->iImage=tabItem->iImage; 1444 1445 if (tabItem->mask & TCIF_PARAM) 1446 wineItem->lParam=tabItem->lParam; 1447 1448 // if (tabItem->mask & TCIF_RTLREADING) 1449 // FIXME (tab,"TCIF_RTLREADING\n"); 1450 1451 if (tabItem->mask & TCIF_STATE) 1452 wineItem->dwState=tabItem->dwState; 1453 1454 if (tabItem->mask & TCIF_TEXT) { 1455 len = lstrlenW (tabItem->pszText); 1456 if (len>wineItem->cchTextMax) 1457 wineItem->pszText = COMCTL32_ReAlloc (wineItem->pszText, (len+1)*sizeof(WCHAR)); 1458 lstrcpynW (wineItem->pszText, tabItem->pszText, len+1); 1357 1459 } 1358 1460 … … 1397 1499 1398 1500 if (tabItem->mask & TCIF_TEXT) 1399 lstrcpynA (tabItem->pszText, wineItem->pszText, tabItem->cchTextMax); 1501 lstrcpynWtoA (tabItem->pszText, wineItem->pszText, tabItem->cchTextMax); 1502 1503 return TRUE; 1504 } 1505 1506 static LRESULT TAB_GetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam) 1507 { 1508 TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); 1509 TCITEMW *tabItem; 1510 TAB_ITEM *wineItem; 1511 INT iItem; 1512 1513 iItem=(INT) wParam; 1514 tabItem=(LPTCITEMW) lParam; 1515 // TRACE (tab,"\n"); 1516 if ((iItem<0) || (iItem>infoPtr->uNumItem)) return FALSE; 1517 1518 wineItem=& infoPtr->items[iItem]; 1519 1520 if (tabItem->mask & TCIF_IMAGE) 1521 tabItem->iImage=wineItem->iImage; 1522 1523 if (tabItem->mask & TCIF_PARAM) 1524 tabItem->lParam=wineItem->lParam; 1525 1526 // if (tabItem->mask & TCIF_RTLREADING) 1527 // FIXME (tab, "TCIF_RTLREADING\n"); 1528 1529 if (tabItem->mask & TCIF_STATE) 1530 tabItem->dwState=wineItem->dwState; 1531 1532 if (tabItem->mask & TCIF_TEXT) 1533 lstrcpynW (tabItem->pszText, wineItem->pszText, tabItem->cchTextMax); 1400 1534 1401 1535 return TRUE; … … 1668 1802 1669 1803 case TCM_GETITEMW: 1670 // FIXME (tab, "Unimplemented msg TCM_GETITEMW\n"); 1671 return 0; 1804 return TAB_GetItemW(hwnd,wParam,lParam); 1672 1805 1673 1806 case TCM_SETITEMA: … … 1675 1808 1676 1809 case TCM_SETITEMW: 1677 // FIXME (tab, "Unimplemented msg TCM_SETITEMW\n"); 1678 return 0; 1810 return TAB_SetItemW(hwnd,wParam,lParam); 1679 1811 1680 1812 case TCM_DELETEITEM: … … 1697 1829 1698 1830 case TCM_INSERTITEMA: 1699 return TAB_InsertItem (hwnd, wParam,lParam);1831 return TAB_InsertItemA(hwnd,wParam,lParam); 1700 1832 1701 1833 case TCM_INSERTITEMW: 1702 // FIXME (tab, "Unimplemented msg TCM_INSERTITEM32W\n"); 1703 return 0; 1834 return TAB_InsertItemW(hwnd,wParam,lParam); 1704 1835 1705 1836 case TCM_SETITEMEXTRA:
Note:
See TracChangeset
for help on using the changeset viewer.