怎样改变窗体上控件的Z-order呢?
我想把一个Picture控件放在所有其他控件的最上层,
望指教!

解决方案 »

  1.   

    在窗体设计时按下 Ctrl + D 重新设置顺序即可
      

  2.   

    我试了几种方法:
    CBut1.SetWindowPos(&wndTop,100,100,100,100,SWP_SHOWWINDOW);
    CBut2.SetWindowPos(&wndBottom,150,100,100,100,SWP_SHOWWINDOW);
    CBut1.BringWindowToTop();
    好象都不行
    是不是VC中控件的上下和VB中的概念是不同,
    还希望大家指教
      

  3.   

    我想重载OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)函数
    用pWnd->SetWindowPos()函数应该可以,
    你可以试一试!
      

  4.   

    BOOL SetWindowPos(          HWND hWnd,
        HWND hWndInsertAfter,
        int X,
        int Y,
        int cx,
        int cy,
        UINT uFlags
    );
      

  5.   

    试啦,好象没什么用
    CButton CBut1;
    CButton CBut2;
    CBut1.SetWindowPos(&wndTop,100,100,100,100,SWP_SHOWWINDOW);
    CBut2.SetWindowPos(&wndBottom,150,100,100,100,SWP_SHOWWINDOW);
    没作用
      

  6.   

    那就最先创建这一个Picture控件或者最后创建这一个Picture控件试试
      

  7.   

    OnPaint()
    {
      ... ...
      GetDlgItem(ID_PICTURE)->RedrawWindow();
    }试试,也不一定行
      

  8.   

    获不获得焦点对窗体上控件的Z-order没有影响
      

  9.   

    why not use the api function SetWindowPos(), it is powerful for this series problems, the detail in the msdn.
      

  10.   

    “获不获得焦点对窗体上控件的Z-order没有影响”可是获得焦点的控件会压住另一个控件啊
      

  11.   

    CBut1.SetWindowPos(&wndTop,100,100,100,100,SWP_SHOWWINDOW);
    CBut2.SetWindowPos(&wndBottom,150,100,100,100,SWP_SHOWWINDOW);
    这种方法,为什么看不出什么效果呢?
      

  12.   

    试试CButton CBut1;
    CButton CBut2;
    CBut1.SetWindowPos(&wndTop,100,100,100,100,SWP_NOACTIVATE);
    CBut2.SetWindowPos(&wndBottom,150,100,100,100,SWP_NOACTIVATE);
      

  13.   

    试  了,点Cbut1,盖住CBut2
    点Cbut2,盖住CBut1
    主要是不明白
    CBut1.SetWindowPos(&wndTop,100,100,100,100,SWP_SHOWWINDOW);
    CBut2.SetWindowPos(&wndBottom,150,100,100,100,SWP_SHOWWINDOW);
    为什么看不出变化
      

  14.   

    点Cbut1,盖住CBut2
    点Cbut2,盖住CBut1
    那就肯定是代码生效了为什么看不出变化, 是因为你的窗体没有刷新。
    InvalidateRect(NULL);
      

  15.   

    其实是有效的,只是改变了之后触发WM_PAINT,Dialog刷新,于是又复原了。
      

  16.   

    其实只要创建控件的时候在Dialog上面其他的控件创建之后,而且Create的时候指定WS_EX_TOPMOST 风格,就能在最上面显示了
      

  17.   

    告诉楼主一个秘密:
    wndTop是处于最下面,而wndBottom是最上面!
      

  18.   


    GetDlgItem(IDC_EDIT1)->SetWindowPos(&wndBottom,100,100,100,100,SWP_SHOWWINDOW);
    InvalidateRect(NULL);
    GetDlgItem(IDC_EDIT2)->SetWindowPos(&wndBottom,120,120,100,100,SWP_SHOWWINDOW);
    InvalidateRect(NULL);

      

  19.   

    请问MDI主窗体和无模式DIALOG之间怎样互相转换层次?还是有其它方法(两个窗体之间层次转换)。急。请帮忙,不能发帖,只能跟在后面。
      

  20.   

    我目前也在做控件,楼主创建的按钮的属性要注意,试试只保留visible属性看看
      

  21.   

    回复人: hellojl() ( ) 信誉:94  2004-08-31 10:26:00  得分: 0  
     
     
       我目前也在做控件,楼主创建的按钮的属性要注意,试试只保留visible属性看看
      
     
    不太明白,能清楚些吗?
      

  22.   

    楼主的button是Create出来的吗,如果是,按钮style试着只用WS_VISIBLE看看