大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 设定系统热键关闭当前窗口

设定系统热键关闭当前窗口

时间: 2021-07-31 作者:daque

- windows中有一体例热键alt+f4用来封闭暂时窗口,笔者迩来出于爱好,用vc++ 6编写了一个步调用来实行此热键功效.实行思维如次: ---- 1.创造一个不在工作栏表露图目标窗口.---- 2.在步调中备案一个体例热键,并在报告栏为步调创造一个图标..---- 3.遏止多个步调同声运转.---- 4.经过列举窗口因变量封闭暂时窗口. ---- 一、创造一个不在工作栏表露图目标窗口 ----运用appwizard天生一个最大略的sdi窗口,不要状况条、东西条、activex 扶助、 3d 控件、打字与印刷和打字与印刷预览。 ---- 翻开资源编纂器,插入一个空对话框,id号为idd--dia,并在主框类中添写代码。 bool cmainframe::precreatewindow(createstruct& cs){ if( !cframewnd::precreatewindow(cs) )return false;//m_bcreate 是cmainframe类中的一个protected型bool变量,初始值为false。 if( !m_bcreate ) {//dlg是cmainframe类中的一个public型cdialog变量。m_bcreate=dlg.create( idd_dia );if(m_bcreate ) { dlg.showwindow( sw_hide );} }; if(m_bcreate)cs.hwndparent=dlg.getsafehwnd(); cs.cx=330; cs.cy=100; return true;}二、在步调中备案一个体例热键并在报告栏为步调创造一个图标在视类ononinitialupdate因变量中增添代码如次: void ckillview::oninitialupdate() { cview::oninitialupdate(); // todo: add your specialized code here and/or call the base class//id和nid是ckillview类的分子变量,id典型为atom型,nid典型为notifyicondataid=::globaladdatom( "#123" );//shift+alt+z为热键,尽管运用比拟生硬的键. if(!::registerhotkey ( m_hwnd,id,mod_shift| mod_alt,'z' ) )messagebox( "hot key register failed!" ); hicon hicon=afxgetapp()->loadicon( idi_icon1 ); nid.hicon=hicon; nid.hwnd=m_hwnd; nid.cbsize=sizeof( notifyicondata );// wm_mymessage在文献头中设置:#define wm_mymessage wm_user+10 nid.ucallbackmessage=wm_mymessage; nid.uflags=nif_icon|nif_message|nif_tip; nid.uid=idr_menu1; sprintf(nid.sztip,"体例监督器" ); shell_notifyicon(nim_add,&nid );}在视类重载wm_destory动静因变量void ckillview::ondestroy() { cview::ondestroy(); // todo: add your message handler code here shell_notifyicon( nim_delete ,&nid ); ::globaldeleteatom( id ); ::globaldeleteatom( ::globalfindatom( "unique_zxd" ) );}---- 三、遏止多个步调同声运转. ---- 在运用步调类中增添代码: bool ckillapp::initinstance(){ if(::globalfindatom( "unique_zxd" )==0)::globaladdatom( "unique_zxd" ); else {afxmessagebox( "已有范例运转!" );return false; }    .         .         . }四、经过列举窗口因变量封闭暂时窗口 ---- 为相应热键动静,在动静映照进口增添代码: begin_message_map( ckillview, cview ) //{{afx_msg_map( ckillview )     .     .     . on_message( wm_hotkey,onhotkey ) //}}afx_msg_mapend_message_map()在视类增添分子因变量: afx_msg void onhotkey ( wparam wparam,lparam lparam );在因变量体中增添代码:void ckillview::onhotkey( wparam wparam,lparam lparam ){ //sign是ckillview类中的一个 protected型int变量,初始值为0。 sign=0; ::enumwindows( ( wndenumproc  )enumwindowp,0 );}---- 对于enumwindows()因变量在各类期刊中均有引见,此处不多作引见.要详知看msdn. enumwindowp()因变量为一全部因变量,代码如次: bool callback enumwindowp( hwnd hwnd,lparam lparam ){ cwnd *pwnd=cwnd:: fromhandle( hwnd ); if( pwnd->iswindowvisible() ) {cstring str;pwnd->getwindowtext(str);if(!str.isempty()&& ( str.comparenocase( "program manager" )!=0 ) ){ sign++; if( sign==1 ) {       pwnd>sendmessage( wm_syscommand,                             sc_close, makelparam( 123,123 ) );          } } return true; }---- 其余还需为报告栏图标相应动静,增添菜单并相应菜单因变量,因不是正文中心,在此不作引见. ---- 之上步调在win97,win98,win2000中均获经过

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.