SetWindowPos,RegisterHotKey,GlobalAddAtom的用法
时间:2022-03-18 10:30
还以为SetWindowPos是给Frm的子框架间编写的,原来是给mainfrm写的,可以把你写的主窗口置顶,置底(看样子应该可以变成桌面了,还没试呢,才忙到现在。。。)
子窗口的遮挡可以使用窗口的样式叫WS_CLIPCLINGS,这样就不会彼此遮挡了,但是怎样把子窗口移至其他窗口顶部,我还没学会呢,我还不会MDI呢。。。
registerhotkey使用很简单,如果注册全局热键成功了,就返回一个非零值即为TRUE,参数设置hwnd(主窗口,GlobalAddAtom(“随便填写一个字串就可以了”),<font _msthash="1299837" _mstchunk="true" _mstsrchtml="ThefsModifiers(组合键的控制键win或alt或ctrl),VK码);所谓的GlobalAddAtom也可以不用了,但是如果是为dll注册的快捷键就要使用了,以避免和其他的快捷键冲突,检测是否注册成功的最好办法就是这样if(registerhotKey(....)==FALSE)MessageBox(0,"注册热键失败","",0);这样就知道热键是否注册成功了~。
然后比如你要注册一个热键是为调用出自己的程序主窗口写的,你可以用我上面提到的setwindowpos很好用的。估计也应该有active之类的函数吧,该睡觉了,下午接着写。
不过要注意的是如果你主窗口是打开的,即最小化或者最大化总之没有隐藏的话使用showwindow是绝不会有用的,除非你的窗口是在你按下热键被你switch到隐藏状态了,那样才可以呼出窗口。
来了。刚才试了一下SetWindowPos,只要参数没有错误返回值怎么总是正确的,我还以为哪里有消息被阻止了呢,后来写了个messagebox查到的,原来这个东西最多只能呼出两次窗口,要想窗口置前,需要使用SetForegroundWindow(hwnd)这个就一个参数hwnd,果然很好用,怎么呼都能呼出来了,另外不知道今天怎么了,bing词典什么都搜索不到,但是旧版的可以用。。。