忘说了,操作系统是winxp sp2,vc6.0开发环境
windows2000上测试过,没有这个问题。

解决方案 »

  1.   

    任务栏是个Popup的TopMost窗口,你的也是,当然可以相互覆盖了,这有什么奇怪的
      

  2.   

    Re珠穆朗玛
    没有设置成顶级窗口,这是某些功能的需要。Re磨刀霍霍向猪羊
    那么为什么正好把窗口大小设置成和屏幕一样大的时候,就不会被任务栏覆盖呢?
    有什么解决办法呢?多谢两位回贴!
      

  3.   

    任务管理器,不会被任务栏覆盖,因为它具有TopMost属性。
    在不改变任务栏的前提下,也只有修改你的程序啦。
      

  4.   

    Re:高手.高手.高高手
    由于某些要求,程序是不能设置成topmost的
    问题是正好把窗口大小设置成和屏幕一样大并且没有移动过的时候,就不会被任务栏覆盖。
    这说明即使不设置成topmost,也可以实现前端显示!
    这是为什么呢?
      

  5.   

    重载WM_NCHITTEST消息响应函数,直接返回0,使拖动无效
       
      CYourDlg::OnNcHitTest(CPoint   point)    
      {  
      //   TODO:   Add   your   message   handler   code   here   and/or   call   default    return     0;  
      } 
      

  6.   

    Re:rageliu
    多谢回帖。
    对不起,窗口不可以设置成拖动无效。
    我的问题是为什么拖动之后,就被任务栏覆盖了,没有拖动就不能被覆盖。
      

  7.   

    试试加个选项,可以让用户选择是否topmost
      

  8.   

    那就再你的全屏窗口出来时隐藏掉任务栏,退出时再让他出来
    HWND hWndTray = ::FindWindow(_T("Shell_TrayWnd"), NULL);
    if(hWndTray != NULL)
    {
    ::ShowWindow(hWndTray, SW_HIDE);
    }
      

  9.   

    SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);//把窗口放到最前边
      

  10.   

    缺省状态下,系统不允许应用程序窗口大小超过工作区大小在你的WindowProc中处理WM_GETMINMAXINFO,
    switch (uMsg)
    {
    .............................
       case WM_GETMINMAXINFO:
       { 
           MINMAXINFO* lpMMI= (MINMAXINFO*)lParam;
           CRect rc( 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN) ); //获得屏幕大小
           rc.InflateRect( 10, 50 ); // 让你区域比这个屏幕区域大一些
           lpMMI->ptMaxSize = CPoint(rc.Size());
           lpMMI->ptMaxTrackSize = CPoint(rc.Size());       return 0;
       }
       break;
    ............................
    }
      

  11.   

    同意11L
    是不是窗口移动的时候更改了窗口的显示风格?可能是你或者系统默认更改了这个设置,可以SetWindowPos试试,也可以ModifyStyle(0,WS_EX_TOPMOST)试试
      

  12.   

    任务栏的TopMost属性是去不掉的,一激活任务栏,它会立刻变成TopMost。
    解决方法就只有隐藏任务栏或是把你的窗口设置成TopMost, 想让非TopMost的窗口覆盖在TopMost窗口的上面本身就是违反Window的窗口规则的。QQ截屏实际上也是覆盖了一个TopMost的透明窗口在上面。
      

  13.   

    Re:磨刀霍霍向猪羊
    我并没有激活任务栏,只是移动了一下窗口。为什么任务栏就变成topmost了呢?
      

  14.   

    Re:星岛孤裔林郎君(屹峰)
    我不能要求客户用我的软件还必须改变电脑设置啊!Re:alunlee 
    没有为什么,客户要求,咱就得照办!
      

  15.   

    我想搂主想要的是这个:
        ShowWindow(SW_MAXIMIZE);//使窗口全屏显示在前面(可跟别的窗口切换)
        不过用SetWindowPos()设置窗口时最好用全屏的宽高设置,要不可不怎么好看借贴的这位大侠是不是:
        SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);中第一个参数是&wndTopMost
    这样你的窗口级别跟任务栏一个级别(最高)了,就总是显示在最前面,别的窗口会被被覆盖。--希望能对现在遇到同样问题的伙伴们有所帮助