您的位置:首页 > 其它

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

2013-11-20 12:01 141 查看
今天在做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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: