弹出窗口后,焦点并不改变 在线等

xiaogang_1 2010-01-14 03:05:58
我在A类,继承于CButton类,弹出B类,(B类使用api方式创建,是一个窗口),
我的程序里要求B类窗口弹出时,B类窗口并不得到焦点,(当前焦点并不改变)。
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
昨夜无风 2010-01-14
  • 打赏
  • 举报
回复
创建的时候去掉:WS_EX_TOPMOST

WS_EX_TOPMOST :
Specifies that a window created with this style should be placed above all non-topmost windows and should stay above them, even when the window is deactivated. To add or remove this style, use the SetWindowPos function.
xiaoji 2010-01-14
  • 打赏
  • 举报
回复
HWND hWnd = ::CreateWindowEx(WS_EX_TOPMOST,"11","11",WS_POPUP|WS_BORDER|WS_VISIBLE,rect.left,rect.top,rect.Width(),rect.Height(),m_hWnd,NULL,wndcls.hInstance,NULL);
::ShowWindow(hWnd,SW_SHOWNA);
::SetActiveWindow(m_hWnd);
xiaogang_1 2010-01-14
  • 打赏
  • 举报
回复
都不行啊,是我描述的不够清楚?

我是这么做的啊
HWND hWnd = ::CreateWindowEx(WS_EX_TOPMOST,"11","11",WS_POPUP|WS_BORDER|WS_VISIBLE,rect.left,rect.top,rect.Width(),rect.Height(),m_hWnd,NULL,wndcls.hInstance,NULL);
::ShowWindow(hWnd,SW_SHOWNA);
xiaoji 2010-01-14
  • 打赏
  • 举报
回复
如果你显示B类的时候用的是ShowWindow的话,你可以这样调用ShowWindow(SW_SHOWNA);
也可以重载CWnd,处理WM_SHOWWINDOW,在OnShowWindow(BOOL bShow,UINT nStatus);中激活窗口A
xiaogang_1 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhucde 的回复:]
使用SetFocus或者SetForeGroundwindow之类的把A类的窗口再设为有焦点
[/Quote]

这样做会不会还会闪烁。我先试试再说
我在地球 2010-01-14
  • 打赏
  • 举报
回复
那该咋办呢
zhucde 2010-01-14
  • 打赏
  • 举报
回复
使用SetFocus或者SetForeGroundwindow之类的把A类的窗口再设为有焦点

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧