今天用MFC编写一个程序,因为要创建菜单,删除了窗体上的默认按钮和标签控件之后,就
直接去创建菜单了,创建了几个主菜单,每个主菜单下面又创建了子菜单。主菜单和子菜单都添加了
访问键(即在菜单名称后加了(&访问键字母))。然后绑定到了窗体,就去调试查看效果,结果
Alt+访问键一点响应也没有,从网上找了好久,也有很多人遇到这个问题,但是都没有解决。
后来看网上有个人说把项目删了,又新建了一个项目,就可以了。我也试着又新建了一个项目,因为着急,
没有删除新建项目窗体上的按钮,就直接创建菜单,添加快捷键,然后绑定窗体,运行,也可以用Alt+字母快捷键了。
心想也没什么区别呀。 又试着新建了一个项目,这次把窗体上的控件都删除了,然后创建菜单,添加快捷键,绑定窗体,
运行程序,结果用Alt+字母快捷键,就没响应了。
至此,总算找到问题所在了。看来下次遇到问题,还是不要急着去解决,等窗体上添加了控件之后,问题也就不是问题了。
上文找出了问题 具体解决办法以及原理。
删除所有控件 菜单无效 ,添加控件 菜单快捷有效。
删除所有控件以后 窗口失去焦点,所以需要把焦点找回来。(一般这种失焦点的情况 都是多种子窗口 存在产生的)
合理 利用 SetFocus(); 找到主菜单所在的窗口的任意一个控件,给上焦点,完美解决这个问题。
xxxx. SetFocus();