CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何让窗口显示在最前端

楼主sunmono(太阳)2006-11-02 18:05:21 在 VC/MFC / 基础类 提问

窗口不能通过SetWindowPos(&wndTopMost,   0,   0,   0,   0,SWP_NOSIZE   |   SWP_NOMOVE);  
  一直在处于最前端;  
  当窗口在后台的时候,当收到某些信息,要把自己显示到最前端;  
  该如何实现;  
  SetActiveWindow();  
  SetForegroundWindow();  
  使用这些函数好像都不能实现;  
  谢谢; 问题点数:100、回复次数:12Top

1 楼hxzmm()回复于 2006-11-02 18:09:27 得分 0

BringWindowToTop  
  只能把窗口放到最前端,不能激活窗口!!Top

2 楼sunmono(太阳)回复于 2006-11-02 18:17:34 得分 0

BringWindowToTop  
  试过了    
  但是不能放到最前端Top

3 楼119365374(砖头)回复于 2006-11-02 18:30:34 得分 0

ShowWindow(SW_SHOW),不行么?  
  曾经因为皮肤的问题写过这样的代码,看对你有用不:  
   
  m_dlgXXXX.SetWindowPos(  
  &wndTopMost,  
  ::GetSystemMetrics(SM_CXSCREEN)/2-rect.Width()/2,  
  ::GetSystemMetrics(SM_CYSCREEN)/2-rect.Height()/2,  
  rect.Width(),    
  rect.Height(),    
  SWP_SHOWWINDOW);  
   
  m_dlgXXXX.SetWindowPos(  
  &wndNoTopMost,  
  ::GetSystemMetrics(SM_CXSCREEN)/2-rect.Width()/2,  
  ::GetSystemMetrics(SM_CYSCREEN)/2-rect.Height()/2,  
  rect.Width(),    
  rect.Height(),    
  SWP_SHOWWINDOW);Top

4 楼sunmono(太阳)回复于 2006-11-02 18:34:22 得分 0

不会在最前端的Top

5 楼mynamelj(风之羽翼)回复于 2006-11-02 18:39:44 得分 0

试试这段代码  
   
  void   PlacedWindowTop(CWnd*   pWnd)  
  {  
        ASSERT_VALID(pWnd);  
        ASSERT(::IsWindow(pWnd->m_hWnd));  
         
        if(pWnd->IsIconic())  
              pWnd->ShowWindow(SW_RESTORE);  
        else   if(pWnd->IsWindowVisible())  
              pWnd->SetForegroundWindow();  
        else  
              pWnd->ShowWindow(SW_SHOW);  
  }Top

6 楼mynamelj(风之羽翼)回复于 2006-11-02 18:50:33 得分 0

当窗口在后台的时候,当收到某些信息,要把自己显示到最前端;  
  ------------------  
  当窗口在后台的时候,这是什么意思,隐藏了吗?  
   
  如果设置wndTopMost属性,窗口隐藏后直接用ShowWindow(SW_SHOW)就可显示出来.Top

7 楼breakind(冰舞,把练街舞的精神拿来编程,必有所成.)回复于 2006-11-02 18:59:29 得分 0

setwindowposTop

8 楼breakout()回复于 2006-11-02 19:00:38 得分 0

曾经写控制台程序时用到的always   on   top的方法:  
  CRect   rect;  
  GetWindowRect(&rect);  
                   
  ::SetWindowPos(GetSafeHwnd(),   HWND_NOTOPMOST,rect.left,   rect.top,    
                          rect.right-rect.left,   rect.bottom-rect.top,  
                          SWP_SHOWWINDOW       );Top

9 楼xyz666((我是一只怪怪虫up ~up))回复于 2006-11-02 20:05:42 得分 0

SetWindowPos或者  
   
  CWnd   *pWnd   =   CWnd::FindWindow(NULL,   _T("XXX")   );  
  pWnd->ShowWindow(SW_RESTORE);  
  pWnd->SetForegroundWindow();  
   
  Top

10 楼Aaron_Jerry(音乐诗人)回复于 2006-11-02 20:40:13 得分 0

SetWindowPos(&wndTopMost   ,   -1,   -1,   -1,   -1,   SWP_NOMOVE|SWP_NOSIZE);Top

11 楼sunmono(太阳)回复于 2006-11-03 10:44:37 得分 0

窗口不设置wndTopMost属性;  
  在后台就是他不是当前激活的窗口   被其他窗口覆盖了;Top

12 楼sunmono(太阳)回复于 2006-11-03 10:48:45 得分 0

ShowWindow(   SW_SHOWNORMAL);  
  SetActiveWindow();  
  SetForegroundWindow();  
  BringWindowToTop()  
  都没效果  
  只有用SwitchToThisWindow(m_hWnd,TRUE);有一些效果,但是效果不好;Top

相关问题

关键词

得分解答快速导航

  • 帖主:sunmono

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo