MFC显示非模态对话框的时候,设置它不获取焦点!

今天在做CAD二次开发时由于需要这个功能,所以学习了一下,发现平时显示的时候大多是

ShowWindow(SW_HIDE); //隐藏

ShowWindow(SW_SHOW); //显示

要实现显示该窗口并且使它不获取焦点,只需要把参数在设置为SW_SHOWNOACTIVATE就可以了。而使用该设置之后如果需要在程序里面自己设置焦点,需要先调用GetActiveWindow判断是否激活,如果没有激活,先调用SetActiveWindow激活,再调用Focus方法获得Focus。

(注意:网上也有人说这样设置有时候会不起效果,怀疑可能是与Dialog显示时SetFocus有关,具体没有仔细去探究,在这里提醒下。

ShowWindow函数其它参数与对应值:

SW_HIDE             0
SW_SHOWNORMAL       1
SW_NORMAL           1
SW_SHOWMINIMIZED    2
SW_SHOWMAXIMIZED    3
SW_MAXIMIZE         3
SW_SHOWNOACTIVATE   4
SW_SHOW             5
SW_MINIMIZE         6
SW_SHOWMINNOACTIVE  7
SW_SHOWNA           8
SW_RESTORE          9
SW_SHOWDEFAULT      10
SW_FORCEMINIMIZE    11
SW_MAX              11

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值