如题,要求不用MFC

解决方案 »

  1.   

    刚刚察看了一下MSDN,CreateWindow函数貌似只能创建如下窗体:
    BUTTON,COMBOBOX,EDIT,LISTBOX,MDICLIENT,RichEdit,RICHEDIT_CLASS,SCROLLBAR,STATIC
    里面没有树啊!请问如果不用MFC你的这个树是怎么创建的呢?
      

  2.   


    TVITEM item;
    item.hItem = hItem;
    item.mask = TVIF_TEXT;
    item.pszText = "aaaaaaaaa";
    SendMessage(hWndTree, TVM_SETITEM, 0, (LPARAM)&item);
      

  3.   

    goodboyws(深夜不眠者):
    不是这样的,我的意思是选择重命名菜单后,像windows给文件重命名那样直接获取新命名重命名
      

  4.   

    HWND hEdit = ::SendMessage(hWndEdit, TVM_EDITLABEL, 0, (LPARAM)hItem);
      

  5.   

    ......
    case WM_NOTIFY:
    {
        
    LPNMTVDISPINFO pTVDispInfo = (LPNMTVDISPINFO)lParam;
             if (pTVDispInfo->hdr.code == TVN_ENDLABELEDIT)
             {
                 //判断文本是否合法, 如果不是用在对话框里,直接return TRUE 或 FALSE
                 if (pTVDispInfo->item.pszText...)
                     SetWindowLong(hDlg, DWL_MSGRESULT, TRUE);//合法
                 else
                     SetWindowLong(hDlg, DWL_MSGRESULT, FALSE);
             }
    }
      

  6.   

    谢谢goodboyws(深夜不眠者),我用了你给的代码,但是总是不能获取到新命名,pTVDispInfo->item.pszText总是为"",我的代码和你的差不多,也同样不能获取新命名,pszText也总是为""。请问这可能是什么原因造成的,我的代码如下:case WM_NOTIFY:
    {
             HWND hwndEditCtrl;
    hwndEditCtrl = TreeView_GetEditControl( hTreeWnd );
    switch(pnmh->code)
    {
    case TVN_ENDLABELEDIT:
    {
    TV_DISPINFO FAR * lpTVDisp = NULL;
    lpTVDisp = (TV_DISPINFO FAR *)lParam;
    if ( strcmp( lpTVDisp->item.pszText,"")==0)
    break;
    CallReNameFunc( hTreeWnd,lpTVDisp->item.pszText);
    }
    break;
    }
    }