Changeset 2820 for trunk/src/comctl32/treeview.c
- Timestamp:
- Feb 18, 2000, 6:13:39 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/treeview.c
r2814 r2820 1 /* $Id: treeview.c,v 1.2 7 2000-02-17 17:26:51cbratschi Exp $ */1 /* $Id: treeview.c,v 1.28 2000-02-18 17:13:39 cbratschi Exp $ */ 2 2 /* Treeview control 3 3 * … … 34 34 35 35 - bug in SetScrollInfo/ShowScrollBar: WM_SIZE and WM_NCPAINT problems (i.e. RegEdit) 36 - WM_HSCROLL: some rects are wrong37 36 - TVS_FULLROWSELECT 38 37 - TVS_SINGLEEXPAND … … 45 44 #include "winbase.h" 46 45 #include "wingdi.h" 46 #include "winnls.h" 47 47 #include "commctrl.h" 48 48 #include "comctl32.h" … … 79 79 static BOOL TREEVIEW_CalcItems(HWND hwnd,HDC hdc,TREEVIEW_INFO *infoPtr); 80 80 static LRESULT TREEVIEW_EnsureVisible(HWND hwnd,HTREEITEM hItem); 81 static VOID TREEVIEW_ISearch(HWND hwnd,CHAR ch); 81 82 82 83 static LRESULT CALLBACK TREEVIEW_Edit_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); … … 578 579 TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd); 579 580 580 //TRACE("\n");581 581 return (LRESULT) infoPtr->clrText; 582 582 } … … 735 735 * Get a dotted pen 736 736 */ 737 #ifdef OS2LINEHACK //CB: workaround for Open32 PS_DOT bug737 #ifdef OS2LINEHACK 738 738 TREEVIEW_Polyline(hdc,points,2,infoPtr->clrLine); 739 739 #else … … 1316 1316 BOOL ownDC = FALSE,changedLeftTop = FALSE; 1317 1317 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE); 1318 INT maxCX,maxCY; 1319 INT xDiff = 0,yDiff = 0; 1318 1320 1319 1321 GetClientRect(hwnd,&rect); … … 1407 1409 infoPtr->uTotalHeight = y; 1408 1410 1409 if (item && item->visible) 1410 { 1411 INT xDiff = 0,yDiff = 0; 1412 1413 //check cx and cy 1414 #if 0 //CB: next step 1415 if ((infoPtr->cy > 0) && (item->rect.bottom < infoPtr->uVisibleHeight)) 1416 { 1417 INT oldCY = infoPtr->cy; 1418 1419 infoPtr->cy = infoPtr->uTotalHeight-infoPtr->uVisibleHeight; 1420 if (infoPtr->cy < 0) infoPtr->cy = 0; 1421 yDiff = infoPtr->cy-oldCY; 1422 } 1423 1424 changedLeftTop = xDiff || yDiff; 1425 if (changedLeftTop) 1426 { 1427 iItem = (INT)infoPtr->TopRootItem; 1428 item = NULL; 1429 indent = 0; 1430 MessageBeep(MB_OK); 1431 while (iItem) 1432 { 1433 item = &infoPtr->items[iItem]; 1434 OffsetRect(&item->rect,xDiff,yDiff); 1435 OffsetRect(&item->text,xDiff,yDiff); 1436 OffsetRect(&item->expandBox,xDiff,yDiff); 1437 OffsetRect(&item->bitmap,xDiff,yDiff); 1438 OffsetRect(&item->statebitmap,xDiff,yDiff); 1439 1440 1441 if ((item->firstChild) && (item->state & TVIS_EXPANDED)) 1411 //check cx and cy 1412 maxCY = infoPtr->uTotalHeight-infoPtr->uVisibleHeight; 1413 if (maxCY < 0) maxCY = 0; 1414 if (infoPtr->cy > maxCY) 1415 { 1416 yDiff = maxCY-infoPtr->cy; 1417 infoPtr->cy = maxCY; 1418 } 1419 1420 maxCX = infoPtr->uTotalWidth-infoPtr->uVisibleWidth; 1421 if (maxCX < 0) maxCX = 0; 1422 if (infoPtr->cx > maxCX) 1423 { 1424 xDiff = maxCX-infoPtr->cx; 1425 infoPtr->cx = maxCX; 1426 } 1427 1428 changedLeftTop = xDiff || yDiff; 1429 if (changedLeftTop) 1430 { 1431 iItem = (INT)infoPtr->TopRootItem; 1432 item = NULL; 1433 indent = 0; 1434 1435 while (iItem) 1436 { 1437 item = &infoPtr->items[iItem]; 1438 OffsetRect(&item->rect,xDiff,yDiff); 1439 OffsetRect(&item->text,xDiff,yDiff); 1440 OffsetRect(&item->expandBox,xDiff,yDiff); 1441 OffsetRect(&item->bitmap,xDiff,yDiff); 1442 OffsetRect(&item->statebitmap,xDiff,yDiff); 1443 1444 if ((item->firstChild) && (item->state & TVIS_EXPANDED)) 1445 { 1446 iItem = (INT)item->firstChild; 1447 indent++; 1448 } else 1449 { 1450 iItem = (INT)item->sibling; 1451 while ((!iItem) && (indent > 0)) 1442 1452 { 1443 iItem = (INT)item->firstChild; 1444 indent++; 1445 } else 1446 { 1453 indent--; 1454 item = &infoPtr->items[(INT)item->parent]; 1447 1455 iItem = (INT)item->sibling; 1448 while ((!iItem) && (indent > 0))1449 {1450 indent--;1451 item = &infoPtr->items[(INT)item->parent];1452 iItem = (INT)item->sibling;1453 }1454 1456 } 1455 } /* while */ 1456 } 1457 #endif 1458 } 1459 1460 if (!(dwStyle & TVS_NOSCROLL)) 1457 } 1458 } /* while */ 1459 } 1460 1461 if (!(dwStyle & TVS_NOSCROLL) && (infoPtr->uVisibleHeight > 0) && (infoPtr->uVisibleWidth > 0)) 1461 1462 { 1462 1463 if (infoPtr->uTotalHeight > infoPtr->uVisibleHeight) … … 1598 1599 TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd); 1599 1600 1600 // TRACE (treeview, " %d\n",wParam); 1601 1602 switch (wParam) { 1603 case TV_REFRESH_TIMER: 1604 KillTimer (hwnd, TV_REFRESH_TIMER); 1605 infoPtr->Timer &= ~TV_REFRESH_TIMER_SET; 1606 TREEVIEW_CalcItems(hwnd,0,infoPtr); 1607 TREEVIEW_Refresh(hwnd); 1608 return 0; 1609 1610 case TV_EDIT_TIMER: 1611 KillTimer (hwnd, TV_EDIT_TIMER); 1612 infoPtr->Timer &= ~TV_EDIT_TIMER_SET; 1613 if (infoPtr->editItem) 1614 TREEVIEW_EditLabel(hwnd,infoPtr->editItem,TRUE); 1615 return 0; 1616 default: 1617 // ERR (treeview,"got unknown timer\n"); 1618 break; 1601 switch (wParam) 1602 { 1603 case TV_REFRESH_TIMER: 1604 KillTimer (hwnd, TV_REFRESH_TIMER); 1605 infoPtr->Timer &= ~TV_REFRESH_TIMER_SET; 1606 TREEVIEW_CalcItems(hwnd,0,infoPtr); 1607 TREEVIEW_Refresh(hwnd); 1608 return 0; 1609 1610 case TV_EDIT_TIMER: 1611 KillTimer (hwnd, TV_EDIT_TIMER); 1612 infoPtr->Timer &= ~TV_EDIT_TIMER_SET; 1613 if (infoPtr->editItem) 1614 TREEVIEW_EditLabel(hwnd,infoPtr->editItem,TRUE); 1615 return 0; 1616 1617 case TV_ISEARCH_TIMER: 1618 KillTimer(hwnd,TV_ISEARCH_TIMER); 1619 infoPtr->Timer &= ~TV_ISEARCH_TIMER_SET; 1620 return 0; 1619 1621 } 1620 1622 … … 2627 2629 } 2628 2630 2629 static LRESULT 2630 TREEVIEW_Size (HWND hwnd, WPARAM wParam, LPARAM lParam) 2631 static LRESULT TREEVIEW_Size (HWND hwnd, WPARAM wParam, LPARAM lParam) 2631 2632 { 2632 2633 TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd); … … 2635 2636 { 2636 2637 if (TREEVIEW_CalcItems(hwnd,0,infoPtr)) 2638 #if 1 //CB: synchron update conflicts with Odin32 implementation -> check and fix 2639 TREEVIEW_QueueRefresh(hwnd); 2640 #else 2637 2641 TREEVIEW_Refresh(hwnd); //because size redraw isn't set 2642 #endif 2638 2643 } 2639 2644 … … 2648 2653 if (infoPtr->hwndEdit) SetFocus(hwnd); 2649 2654 2650 //CB: todo: check styles2651 2655 infoPtr->uInternalStatus |= TV_CALCALL; 2652 2656 TREEVIEW_QueueRefresh(hwnd); … … 2666 2670 TREEVIEW_Create (HWND hwnd, WPARAM wParam, LPARAM lParam) 2667 2671 { 2672 LPCREATESTRUCTA lpcs = (LPCREATESTRUCTA)lParam; 2668 2673 TREEVIEW_INFO *infoPtr; 2669 2674 DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE); … … 2686 2691 infoPtr->uInternalStatus = 0; 2687 2692 if (IsWindowUnicode(hwnd)) infoPtr->uInternalStatus |= TV_UNICODE; 2688 infoPtr->uNumItems =0;2693 infoPtr->uNumItems = 0; 2689 2694 infoPtr->clrBk = GetSysColor (COLOR_WINDOW); 2690 2695 infoPtr->clrLine = GetSysColor (COLOR_WINDOWTEXT); … … 2696 2701 infoPtr->himlState = NULL; 2697 2702 infoPtr->uItemHeight = -1; 2703 infoPtr->uRealItemHeight = 0; 2704 infoPtr->uVisibleHeight = lpcs->cy; 2705 infoPtr->uTotalHeight = 0; 2706 infoPtr->uVisibleWidth = lpcs->cx; 2707 infoPtr->uTotalWidth = 0; 2708 2698 2709 GetTextMetricsA (hdc, &tm); 2699 2710 infoPtr->hFont = GetStockObject (DEFAULT_GUI_FONT); 2700 2711 GetObjectA (infoPtr->hFont, sizeof (LOGFONTA), &logFont); 2701 logFont.lfWeight =FW_BOLD;2712 logFont.lfWeight = FW_BOLD; 2702 2713 infoPtr->hBoldFont = CreateFontIndirectA (&logFont); 2703 2714 2704 2715 infoPtr->items = NULL; 2705 2716 infoPtr->selectedItem = 0; 2706 infoPtr->clrText =-1; /* use system color */2707 infoPtr->dropItem =0;2708 infoPtr->insertMarkItem =0;2709 infoPtr->insertBeforeorAfter =0;2710 infoPtr->pCallBackSort =NULL;2717 infoPtr->clrText = -1; /* use system color */ 2718 infoPtr->dropItem = 0; 2719 infoPtr->insertMarkItem = 0; 2720 infoPtr->insertBeforeorAfter = 0; 2721 infoPtr->pCallBackSort = NULL; 2711 2722 infoPtr->uScrollTime = 300; /* milliseconds */ 2712 2723 infoPtr->hwndEdit = 0; 2713 2714 infoPtr->hwndToolTip=0; 2724 infoPtr->pszISearch = NULL; 2725 infoPtr->uISearchLen = 0; 2726 2727 infoPtr->hwndToolTip = 0; 2715 2728 if (!(dwStyle & TVS_NOTOOLTIPS)) 2716 2729 { … … 2755 2768 infoPtr->himlState = ImageList_Create (16, 16,ILC_COLOR | ILC_MASK, 15, 1); 2756 2769 2757 // CB: MSDN docu says: uses DrawFrameControl2770 //MSDN docu says: uses DrawFrameControl but never believe what they write 2758 2771 hbmLoad = LoadBitmapA (COMCTL32_hModule, MAKEINTRESOURCEA(IDT_CHECK)); 2759 2772 nIndex = ImageList_AddMasked (infoPtr->himlState, hbmLoad, CLR_DEFAULT); … … 2769 2782 { 2770 2783 TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd); 2771 2772 // TRACE (treeview,"\n");2773 2784 2774 2785 TREEVIEW_RemoveTree (hwnd); … … 2783 2794 2784 2795 DeleteObject(infoPtr->hBoldFont); 2796 COMCTL32_Free(infoPtr->pszISearch); 2785 2797 COMCTL32_Free (infoPtr); 2786 2798 … … 3281 3293 TREEVIEW_ITEM *wineItem; 3282 3294 RECT rect; 3283 UINT status,x,y; 3295 UINT status; 3296 INT x,y; 3284 3297 3285 3298 if (!lpht) return 0; … … 3669 3682 goto setfocus; 3670 3683 3671 //CB: todo: check ht.flags for WM_HSCROLL!3672 3673 3684 /* 3674 3685 * If the style allow editing and the node is already selected … … 3959 3970 3960 3971 GetObjectA (infoPtr->hFont, sizeof (LOGFONTA), &logFont); 3961 logFont.lfWeight =FW_BOLD;3972 logFont.lfWeight = FW_BOLD; 3962 3973 DeleteObject(infoPtr->hBoldFont); 3963 3974 infoPtr->hBoldFont = CreateFontIndirectA (&logFont); 3964 3975 3965 hdc = GetDC (0);3976 hdc = GetDC(hwnd); 3966 3977 hOldFont = SelectObject (hdc, hFont); 3967 3978 GetTextMetricsA (hdc, &tm); 3968 3979 height= tm.tmHeight + tm.tmExternalLeading; 3969 if (height >infoPtr->uRealItemHeight)3970 infoPtr->uRealItemHeight =height;3980 if (height > infoPtr->uRealItemHeight) 3981 infoPtr->uRealItemHeight = height; 3971 3982 SelectObject (hdc, hOldFont); 3972 ReleaseDC (0,hdc);3983 ReleaseDC(hwnd,hdc); 3973 3984 3974 3985 if (lParam) … … 3978 3989 TREEVIEW_CalcItems(hwnd,0,infoPtr); 3979 3990 TREEVIEW_Refresh(hwnd); 3980 } 3991 } else infoPtr->uInternalStatus |= TV_CALCALL; 3981 3992 3982 3993 return 0; … … 4165 4176 if (control) 4166 4177 { 4167 DWORD scrollMsg = 0;4178 INT scrollMsg = -1; 4168 4179 BOOL horz = FALSE; 4169 4180 … … 4171 4182 { 4172 4183 case VK_UP: 4173 //CB: todo: VK_UP doesn't work4174 4184 scrollMsg = SB_LINELEFT; 4175 4185 break; … … 4197 4207 break; 4198 4208 } 4199 if (scrollMsg )4209 if (scrollMsg != -1) 4200 4210 { 4201 4211 SendMessageA(hwnd,horz ? WM_HSCROLL:WM_VSCROLL,MAKELONG(scrollMsg,0),0); … … 4315 4325 default: 4316 4326 break; 4317 }4327 } 4318 4328 4319 4329 if (hNewSelection) … … 4330 4340 4331 4341 return FALSE; 4342 } 4343 4344 static LRESULT TREEVIEW_Char(HWND hwnd,WPARAM wParam,LPARAM lParam) 4345 { 4346 CHAR ch = (CHAR)wParam; 4347 4348 TREEVIEW_ISearch(hwnd,ch); 4349 4350 return 0; 4332 4351 } 4333 4352 … … 4393 4412 } 4394 4413 4395 static LRESULT TREEVIEW_GetISearchString(HWND hwnd,LPSTR lpsz,BOOL unicode) 4396 { 4397 //CB: todo: MSDN documentation is useless 4398 4399 return 0; 4414 static BOOL TREEVIEW_Compare(HWND hwnd,TREEVIEW_ITEM *item,LPWSTR text,INT textlen) 4415 { 4416 if (item->pszText == LPSTR_TEXTCALLBACKW) 4417 TREEVIEW_SendDispInfoNotify(hwnd,item,TVN_GETDISPINFO,TVIF_TEXT); 4418 if (item->pszText == LPSTR_TEXTCALLBACKW) return FALSE; 4419 4420 //simulate lstrcmpniW 4421 return CompareStringW(LOCALE_SYSTEM_DEFAULT,NORM_IGNORECASE,item->pszText,MIN(lstrlenW(item->pszText),textlen),text,textlen) == 2; 4422 } 4423 4424 static TREEVIEW_ITEM* TREEVIEW_SearchChildren(HWND hwnd,TREEVIEW_INFO *infoPtr,TREEVIEW_ITEM *item,TREEVIEW_ITEM *stop,LPWSTR text,INT textlen) 4425 { 4426 TREEVIEW_ITEM *child,*child2; 4427 4428 if (!(item->firstChild && (item->state & TVIS_EXPANDED))) return NULL; 4429 4430 child = &infoPtr->items[(INT)item->firstChild]; 4431 while (child) 4432 { 4433 if (child == stop) return NULL; 4434 if (TREEVIEW_Compare(hwnd,child,text,textlen)) return child; 4435 child2 = TREEVIEW_SearchChildren(hwnd,infoPtr,child,stop,text,textlen); 4436 if (child2) return child2; 4437 if (child->sibling) child = &infoPtr->items[(INT)child->sibling]; 4438 else return NULL; 4439 } 4440 4441 return NULL; 4442 } 4443 4444 static TREEVIEW_ITEM* TREEVIEW_Search(HWND hwnd,TREEVIEW_INFO *infoPtr,INT iItem,LPWSTR text,INT textlen) 4445 { 4446 TREEVIEW_ITEM *item,*start; 4447 BOOL found = FALSE; 4448 4449 item = start = &infoPtr->items[iItem]; 4450 4451 if (TREEVIEW_Compare(hwnd,item,text,textlen)) found = TRUE; else 4452 { 4453 //search start to end 4454 while (item->sibling || item->parent) 4455 { 4456 TREEVIEW_ITEM *child = TREEVIEW_SearchChildren(hwnd,infoPtr,item,NULL,text,textlen); 4457 4458 if (child) 4459 { 4460 found = TRUE; 4461 item = child; 4462 break; 4463 } 4464 4465 item = TREEVIEW_GetNextListItem(hwnd,infoPtr,item); 4466 if (item && TREEVIEW_Compare(hwnd,item,text,textlen)) 4467 { 4468 found = TRUE; 4469 break; 4470 } 4471 } 4472 if (!found) 4473 { 4474 iItem = (INT)infoPtr->TopRootItem; 4475 item = &infoPtr->items[iItem]; 4476 //search first to start 4477 while (item != start) 4478 { 4479 TREEVIEW_ITEM *child; 4480 4481 if (TREEVIEW_Compare(hwnd,item,text,textlen)) 4482 { 4483 found = TRUE; 4484 break; 4485 } 4486 child = TREEVIEW_SearchChildren(hwnd,infoPtr,item,start,text,textlen); 4487 4488 if (child) 4489 { 4490 found = TRUE; 4491 item = child; 4492 break; 4493 } 4494 if (item->sibling) item = &infoPtr->items[(INT)item->sibling]; 4495 else break; 4496 } 4497 } 4498 } 4499 4500 return found ? item:NULL; 4501 } 4502 4503 static VOID TREEVIEW_ISearch(HWND hwnd,CHAR ch) 4504 { 4505 TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd); 4506 LPWSTR newString; 4507 INT len,iItem; 4508 CHAR ch2[2]; 4509 TREEVIEW_ITEM *item; 4510 4511 //check timer 4512 if (infoPtr->Timer & TV_ISEARCH_TIMER_SET) 4513 { 4514 KillTimer(hwnd,TV_ISEARCH_TIMER); 4515 infoPtr->Timer &= ~TV_ISEARCH_TIMER_SET; 4516 } else if (infoPtr->uISearchLen > 0) 4517 { 4518 COMCTL32_Free(infoPtr->pszISearch); 4519 infoPtr->pszISearch = NULL; 4520 infoPtr->uISearchLen = 0; 4521 } 4522 4523 //prepare new search string 4524 len = infoPtr->uISearchLen+1; 4525 newString = COMCTL32_Alloc((len+1)*sizeof(WCHAR)); 4526 4527 if (infoPtr->uISearchLen > 0) lstrcpyW(newString,infoPtr->pszISearch); 4528 4529 ch2[0] = ch; 4530 ch2[1] = 0; 4531 lstrcpyAtoW((LPWSTR)&newString[len-1],(LPSTR)&ch2); 4532 4533 //search 4534 4535 iItem = infoPtr->selectedItem ? (INT)infoPtr->selectedItem:(INT)infoPtr->TopRootItem; 4536 item = TREEVIEW_Search(hwnd,infoPtr,iItem,newString,len); 4537 if (!item && infoPtr->pszISearch) 4538 { 4539 TREEVIEW_ITEM *next; 4540 //CB: todo: must press key twice to go to the next item 4541 item = &infoPtr->items[iItem]; 4542 next = TREEVIEW_GetNextListItem(hwnd,infoPtr,item); 4543 if (!next) next = &infoPtr->items[(INT)infoPtr->TopRootItem]; 4544 if (next && (next != item)) 4545 { 4546 next = TREEVIEW_Search(hwnd,infoPtr,(INT)next->hItem,infoPtr->pszISearch,infoPtr->uISearchLen); 4547 if (next) 4548 TREEVIEW_SelectItem(hwnd,(WPARAM)TVGN_CARET,(LPARAM)next->hItem); 4549 } 4550 COMCTL32_Free(newString); 4551 return; 4552 } 4553 4554 //done 4555 if (item) 4556 { 4557 COMCTL32_Free(infoPtr->pszISearch); 4558 infoPtr->pszISearch = newString; 4559 infoPtr->uISearchLen = len; 4560 TREEVIEW_SelectItem(hwnd,(WPARAM)TVGN_CARET,(LPARAM)item->hItem); 4561 SetTimer(hwnd,TV_ISEARCH_TIMER,TV_ISEARCH_DELAY,0); 4562 infoPtr->Timer |= TV_ISEARCH_TIMER_SET; 4563 } else 4564 { 4565 COMCTL32_Free(newString); 4566 MessageBeep(0xFFFFFFFF); 4567 } 4568 } 4569 4570 static LRESULT TREEVIEW_GetISearchString(HWND hwnd,LPWSTR lpsz,BOOL unicode) 4571 { 4572 TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd); 4573 4574 if (infoPtr->uISearchLen == 0) return 0; 4575 4576 if (unicode) 4577 lstrcpyW(lpsz,infoPtr->pszISearch); 4578 else 4579 lstrcpyWtoA((LPSTR)lpsz,infoPtr->pszISearch); 4580 4581 return infoPtr->uISearchLen; 4400 4582 } 4401 4583 … … 4430 4612 TREEVIEW_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 4431 4613 { 4432 if (uMsg ==WM_CREATE)4433 4614 if (uMsg == WM_CREATE) 4615 return TREEVIEW_Create (hwnd, wParam, lParam); 4434 4616 4435 4617 if (!TREEVIEW_GetInfoPtr(hwnd)) 4436 return DefWindowProcA (hwnd, uMsg, wParam, lParam); 4437 4438 switch (uMsg) { 4618 return DefWindowProcA (hwnd, uMsg, wParam, lParam); 4619 4620 switch (uMsg) 4621 { 4439 4622 case TVM_INSERTITEMA: 4440 4623 return TREEVIEW_InsertItem(hwnd,wParam,lParam,FALSE); … … 4517 4700 4518 4701 case TVM_GETISEARCHSTRINGA: 4519 return TREEVIEW_GetISearchString(hwnd,(LP STR)lParam,FALSE);4702 return TREEVIEW_GetISearchString(hwnd,(LPWSTR)lParam,FALSE); 4520 4703 4521 4704 case TVM_GETISEARCHSTRINGW: 4522 return TREEVIEW_GetISearchString(hwnd,(LP STR)lParam,TRUE);4705 return TREEVIEW_GetISearchString(hwnd,(LPWSTR)lParam,TRUE); 4523 4706 4524 4707 case TVM_GETTOOLTIPS: … … 4602 4785 case WM_KEYDOWN: 4603 4786 return TREEVIEW_KeyDown (hwnd, wParam, lParam); 4787 4788 case WM_CHAR: 4789 return TREEVIEW_Char(hwnd,wParam,lParam); 4604 4790 4605 4791 case WM_SETFOCUS:
Note:
See TracChangeset
for help on using the changeset viewer.