CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

使用互斥后,再次打开窗口时,怎么使该窗口获得焦点?

楼主cokeclassic(灌水可乐)2003-08-03 18:41:14 在 VC/MFC / 基础类 提问

CWnd   *pMainWnd=AfxGetMainWnd();  
          pMainWnd->SetWindowPos(&(pMainWnd->wndTopMost),0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);  
  可是窗口没有活得焦点啊,标题栏是灰的。怎么样获得焦点呢?  
  ::SetActiveWindow(AfxGetMainWnd()->m_hWnd);不行啊 问题点数:0、回复次数:7Top

1 楼kui(kui)回复于 2003-08-03 19:41:07 得分 0

pMainWnd->ShowWindow(SW_SHOW);  
  pMainWnd->SetFocus();Top

2 楼DeautyFan(可可魔仙)回复于 2003-08-03 19:48:22 得分 0

SetFocusTop

3 楼cokeclassic(灌水可乐)回复于 2003-08-04 08:48:20 得分 0

这样窗口始终在最前面了,想在点击别的程序打开的窗口时,让原来在最前面的退居后面怎么办呢?Top

4 楼lightwell(大道不过两三行)回复于 2003-08-04 08:53:53 得分 0

SetForegroundWindowTop

5 楼cokeclassic(灌水可乐)回复于 2003-08-04 09:53:06 得分 0

另外的程序,不是我写的啊,不能用setforegroundwindowTop

6 楼wangjinwang(王者之疯)回复于 2003-08-04 10:09:11 得分 0

调用这个函数,或用里面的代码  
  //   单次运行控制函数  
  BOOL   StartCheck(CWinApp   *   app)  
  {  
  ::CreateMutex(   NULL,   TRUE,   app->m_pszExeName   );  
  if(   GetLastError()   ==   ERROR_ALREADY_EXISTS   )  
  {  
  //   Set   Focus   to   Previous   instance  
  //   First   find   our   previous   application's   main   window.  
  CWnd   *   pPrevWnd   =   CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);  
  while(   pPrevWnd   )  
  {  
  if(   ::GetProp(   pPrevWnd->GetSafeHwnd(),   app->m_pszExeName   )   )  
  {  
  //   Found   window,   now   set   focus   to   the   window.  
  //   First   restore   window   if   it   is   currently   iconic.  
  if(   pPrevWnd->IsIconic()   )  
  pPrevWnd->ShowWindow(SW_RESTORE);  
  //   Set   focus   to   main   window.  
  pPrevWnd->SetForegroundWindow();  
  //   If   window   has   a   pop-up   window,   get   next   window   in   list.  
  pPrevWnd->GetLastActivePopup()->SetForegroundWindow();  
  return   FALSE;  
  }  
  //   Did   not   find   window,   get   next   window   in   list.  
  pPrevWnd=pPrevWnd->GetWindow(GW_HWNDNEXT);  
  }  
  TRACE("Could   not   find   previous   instance   main   window!\n");  
  return   FALSE;  
  }  
  return   TRUE;  
  }  
  Top

7 楼cokeclassic(灌水可乐)回复于 2003-08-04 15:16:25 得分 0

wangjinwang(王进)  
  你的代码不能达到要求啊Top

相关问题

  • 怎样通过互斥区的名称获得该互斥区的句柄?
  • 如何使得控件获得焦点得时候自动打开输入法?
  • 如何打开网页就让某个超链接获得焦点
  • 用VB打开EXCEL文件后,如何让EXCEL文件获得焦点
  • datetimepicker有没有办法让一获得焦点就把下拉框打开!不用去点按钮才打开!
  • 谁能给我解释一下互斥和权限的关系?不同权限的进程能打开同一个互斥对象么?
  • 当COMBOX获得焦点时,自动打开,可以用键盘选择,如何做?
  • 获得当前焦点
  • image获得焦点问题
  • 无法获得焦点

关键词

  • pprevwnd
  • pmainwnd
  • 焦点
  • setforegroundwindow
  • cwnd
  • app
  • set focus

得分解答快速导航

  • 帖主:cokeclassic

相关链接

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

广告也精彩

反馈

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