欢迎来到天天文库
浏览记录
ID:41007048
大小:21.82 KB
页数:8页
时间:2019-08-13
《如何编程结束应用程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、如何编程结束应用程序?这是个很简单又是编程中经常要遇到的问题.向窗口发送WM_CLOSE消息,调用CWnd::OnClose成员函数.允许对用户提示是否保存修改过的数据.Example:AfxGetMainWindow()->SendMessage(WM_CLOSE)还可以创建一个自定义的函数TerminateWindowvoidTerminateWindow(LPCSTRpCaption){CWnd*pWnd=Cwnd::FindWindow(NULL,pCaption)if(pWnd)pWnd->SendMessage(WM
2、_CLOSE)}说明:FindWindow函数不是提倡的做法,因为它无法处理标题栏自动改变,比如我们要检测Notepad是不是已运行而事先不知道Notepad的标题栏,这时FindWindow就无能为力了,可以通过枚举windows任务列表的办法来实现。在机械出版社"Windows95API开发人员指南"一书有比较详细的介绍,这里就不再多说乐。如何编写控制面板程序控制面板程序是用户用于配置Windows环境的一些特殊动态连接库(DLL)。Windows已经为我们提供了一些标准的控制面板程序,如字体、键盘、鼠标设置等;如图1所示。
3、我们也可以根据实际的需要创建自己的控制面板程序,以便让用户来查看或者修改特定软硬件的参数设置。控制面板的功能和操作方式控制面板程序的主要功能是显示一个对话框让用户完成特定的任务。但是,与其它应用程序不同的是,控制面板程序并不是一个独立的应用程序,它不提供标准菜单或者其它方法让用户直接去操作这些对话框,而是在其他应用程序(如控制面板)的控制下操作和显示它们的对话框的。控制面板程序通常是由一个Windows的系统工具(即控制面板)所控制,从而让用户来运行的。但是,其它应用程序只要发送控制面板程序所需要的消息并且处理它们的返回值同样可
4、以加载并且管理这些控制面板程序,为了陈述简单,下文中我们将这类程序统称为控制面板。大多数的控制面板程序仅显示并且维护一个对话框让用户来控制系统某一个部件的参数设置以及操作方式,但事实上控制面板程序可以提供多个对话框来控制多个系统部件(这些单个的对话框通常被称为Applet小程序)。为了区分这些对话框,控制面板程序通常为每个对话框提供一个图标。控制面板则把这些图标显示出来,供用户选择不同的对话框进行配置。程序入口函数前面提到,控制面板程序是特殊的动态连接库(DLL),在每一个控制面板程序中必须提供一个标准的函数入口CPlApple
5、t,控制面板程序通过这个函数来接收控制面板发送的消息,从而执行相应的功能,如初始化程序、显示并且管理对话框以及关闭程序等。当控制面板首次加载控制面板程序时取得CPlApplet函数的地址,通过该地址去调用控制面板程序的函数以及给它发送消息。控制面板可以向控制面板程序发送的消息名称及其意义如下表所示:消息名称含义CPL_DBLCLK该消息通知CPlApplet函数用户双击了某对话框相关联的图标。CPlApplet应该显示相应的对话框并且完成用户指定的任务。CPL_EXIT该消息在最后一条CPL_STOP消息之后,并且控制面板调用F
6、reeLibrary函数释放包含控制面板程序的动态连接库DLL之前调用。CPlApplet应该释放所用资源准备关闭。CPL_GETCOUNT该消息在发送了CPL_INIT消息之后发送,CPlApplet应该返回一个整数指明它支持多少个对话框。CPL_INIT该消息在控制面板动态连接库DLL程序首次加载时调用,CPlApplet在此可以执行一些初始化过程,包括内存的分配。CPL_INQUIRE该消息在CPL_GETCOUNT消息之后发送,让CPlApplet提供特定对话框的信息。CPlApplet的lParam2参数指向一个CPL
7、INFO结构。CPL_NEWINQUIRE该消息在CPL_GETCOUNT消息之后发送,让CPlApplet提供指定对话框的信息。参数lParam2是指向NEWCPLINFO结构的指针,在Windows95andWindowsNTversion4.0,为了提高性能,控制面板程序应该处理CPL_INQUIRE消息,而不是CPL_NEWINQUIRE消息。CPL_STOP在控制面板关闭前向每一个对话框发送该消息。CPlApplet应该释放与给定对话框相关联的内存资源。消息处理回调函数CPlApplet处理所有由控制面板发送给控制面板
8、程序的上述消息,这些消息是按照特定的顺序来发送并且处理的。当控制面板首次加载控制面板程序的动态连接库时,CPlApplet收到CPL_INIT消息。CPlAppet在处理该消息的程序中应该执行一些初始化的工作,如分配内存等,并且返回非0值;如果CPlApplet
此文档下载收益归作者所有