CRect     rect;   
GetDlgItem(IDC_AreaTree)->GetClientRect(&rect);   
ClientToScreen(&rect);   
CRect     rect1;   
GetClientRect(&rect1);   
::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,HWND_TOPMOST,rect.right,   
                                  rect.bottom,rect1.right-rect1.left,   
                                      rect1.bottom-rect1.top,NULL);   
GetDlgItem(IDC_AreaTree)->ShowWindow(SW_SHOW);

解决方案 »

  1.   

    ::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,HWND_TOPMOST,rect.right,   
                                      rect.bottom,rect1.right-rect1.left,   
                                          rect1.bottom-rect1.top,SWP_FRAMECHANGED);
      

  2.   

    ::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,HWND_TOPMOST,rect.right,   
                                      rect.bottom,rect1.right-rect1.left,   
                                          rect1.bottom-rect1.top,SWP_SHOWWINDOW);
      

  3.   

    CRect rect;   
    GetDlgItem(IDC_AreaTree)->GetClientRect(&rect);   
    ClientToScreen(&rect);   
    CRect     rect1;   
    GetClientRect(&rect1);   
    ::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,HWND_TOPMOST,rect.right,   
                                      rect.bottom,rect1.right-rect1.left,   
                                          rect1.bottom-rect1.top,SWP_SHOWWINDOW);GetDlgItem(IDC_AreaTree)->ShowWindow(SW_SHOW);
      

  4.   

    两位大哥,都试了,不行呢.我的目的是,有一个目录树.当点击某个CEdit时就让这个tree移动到当前CEdit的下方
      

  5.   

    ::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);这个显示到是所有窗口之上,但点空白处的时候可以点到被Tree盖住的控件
      

  6.   

    CRect     rect;   
    GetDlgItem(编辑框控件ID)->GetClientRect(&rect);   
    GetDlgItem(编辑框控件ID)->ClientToScreen(&rect);
    ScreenToClient(&rect);
    ::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,HWND_TOPMOST,rect.left,            rect.bottom,0,0,SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOZORDER);   
      

  7.   

    汗..楼上的大哥,当单击这个tree的空白处时.位置这个tree背后的CEdit 得到了光标这是不希望的结果,而且当痛后的CEdit得到光标时,tree好像被擦出了一样,大小就是这个CEdit
      

  8.   

    你不就是要点击某个Edit的时候,把tree移到它的下面吗?
    移动到的坐标是(rect.left, rect.bottom)这个不刚好是Edit的左下角么?
    参数SWP_NOSIZE根本不会改变tree的大小阿。
    你真的试过么?
      

  9.   

    试过呀是这样的
    类型:[_______]
    名称:[_______]
    单位:[_______]
    在类型的下边显示那个类型tree,结果点击tree时,点空白处时光标却跟到了名称CEdit里去了
      

  10.   

    而且tree要被檫出
    名称:[_______]//这个框框大小的区域出来.就你点像,在这个Tree之上了一样
      

  11.   

    三种方法,可以使tree位于最前端,只有tree覆盖其他的,其他的盖不了tree。
    任选其一:
    1、打开对话框资源的对话框界面,Ctrl+D,先选中tree,使得其编号为1,保留SWP_NOZORDER参数。
    2、编辑.rc文件,把tree控件提到最前面去,保留SWP_NOZORDER参数。
    3、::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,NULL,rect.left,            rect.bottom,0,0,SWP_SHOWWINDOW|SWP_NOSIZE);去掉SWP_NOZORDER参数,前面第二个参数为NULL。
      

  12.   

    忘了说了,上面那样改了的话,功能上是tree在别人前面,但显示上是别人在tree前面。为了tree能够显示在别人前面,在OnPaint函数里面,如果是主对话框就在CDialog::OnPaint()分支的最后加上GetDlgItem(IDC_AreaTree)->Invalidate(),如果是子对话框,就直接在最后面加上。
      

  13.   

    CTreeCtrl   m_AreaTree 我无语老.还是不能成功!
    =================================================
    CRect     rect;   
    GetDlgItem(IDC_Area)->GetClientRect(&rect);   
    GetDlgItem(IDC_Area)->ClientToScreen(&rect);
    ScreenToClient(&rect);
    ::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,NULL,rect.left,rect.bottom,0,0,SWP_SHOWWINDOW|SWP_NOSIZE);
    ==========================================
    void CConsumerAdd::OnPaint() 
    {
    CPaintDC dc(this); 
    GetDlgItem(IDC_AreaTree)->Invalidate();
    ===================================================
      

  14.   

    怎么去悼SWP_NOZORDER参数?  汗...菜得很!!!
      

  15.   

    你现在是不是tree的位置已经对了,但只是因为tree会被其他的控件盖住,所以不行啊?
    如果是这样的话?
    前面我说的照做,然后在Edit的点击函数SetWindowPos之后,再加上GetDlgItem(IDC_AreaTree)->Invalidate();试一下?
      

  16.   

    CRect     rect;   
    GetDlgItem(IDC_Area)->GetClientRect(&rect);   
    GetDlgItem(IDC_Area)->ClientToScreen(&rect);
    ScreenToClient(&rect);
    GetDlgItem(IDC_AreaTree)->Invalidate();
    ::SetWindowPos(GetDlgItem(IDC_AreaTree)->m_hWnd,NULL,rect.left,rect.bottom,0,0,SWP_SHOWWINDOW|SWP_NOSIZE);
    ============================
    在一个单击按钮函数当中的
    ====================================
    Ctrl+D 设置那个Tree 为1 现在是这样一个情况那些CEdit好像遮住了Tree某些区域
      

  17.   

    行了行了...
    GetDlgItem(IDC_AreaTree)->Invalidate();加错位置了,,谢谢w_anthony() ...唉,就是不认识你,如果认得到,今天晚上一定请你K饭....这个问题已经是捆饶了近一个月,今天最终在w_anthony() 帮助下解决了.再新严重感谢!!
      

  18.   

    晕..还是有一个小问题,当加了 自动加上scroll ,当出现scrooll现在仍然现在被对话框中的其它控件遮着了..