编辑: gracecats 2016-05-07

一、Windows的控制面板应用程序 在Windows的系统目录下可以找到控制面板应用程序,它们是一些扩展名为cpl的dll,通常用来提供配置服务,如配置网络硬件和软件用的ncpa.

cpl,配置桌面用的desk.cpl等,它们的父窗口都是桌面.运行这类程序的方法很多:双击控制面板中的图标、双击系统目录下的cpl文件,或者使用如下DOS命令: rundll32 shell32.dll,Control―RunDLL [@n]或者control [@n] 其中@n用于指定运行哪一个小程序(一个cpl文件中可包含多个小程序),若不带此参数则相当于@0,即运行第一个小程序.例如: Rundll32 shell32.dll,Control―RunDLL main.cpl @n 若不带@n参数,则运行鼠标设置;

@1则运行键盘设置;

@2则运行打印机设置;

@3则显示系统字体.Control―RunDLL是shell32.dll中定义的一个函数,大小写敏感,用于启动控制面板. 通过控制面板应用程序来提供配置服务是一种很好的方法,那么如何设计这种应用程序呢?下面以Visual C++6.0为例进行介绍.

二、开发控制面板应用程序 若希望一个文件传输程序启动后自动连接到某一个站点,就需要为其提供一些缺省值,如:服务器名、用户名、口令等.下面就开发一个控制面板应用程序来提供这些缺省值,具体步骤为: 1.创建一个"MFC AppWizard (dll)"类型的项目,命名为:MyCplApp,选择"Regular DLL With MFC statically linked",使它的运行不依赖于其它任何dll. 2.选择Project选单下的Settings项或按Alt+F7,在Link页中将输出文件名改为: \\Mycplapp.cpl,在Debug页中将"Executable for debug session"改为:\\Control.exe,以便直接用控制面板运行.对于Win9x,为System,对于WinNT,为System32. 3.从MSDN Library Visual Studio 6.0光盘的Samples目录中找到Ctrlpan.cpp 和Ctrlpan.h 文件,并把它们加到项目中. 4.创建如图1所示对话框,代号为:IDD―MYDIALOG,用Class Wizard创建一个CMyDialog类.为每个控件创建成员变量,如"FTP服务器"对应的成员变量定义为:CString m―strServer. 图1 5.引入或新建一个ICON,代号为:IDI―MYICON,用于控制面板中显示. 6.从CControlPanel类(在Ctrlpan.h中定义)继承一个新类CMyPanel,修改MyPanel.h文件: #include ″Ctrlpan.h″ class CMyPanel : public CControlPanel { public: virtual LONG OnInquire(UINT uAppNum, NEWCPLINFO* pInfo);

virtual LONG OnDblclk(HWND hwndCPl, UINT uAppNum, LONG lData);

};

//两个虚拟函数由读者加入 7.在MyPanel.cpp中实现MyPanel.h中定义的两个虚拟函数: LONG CMyPanel::OnInquire(UINT uAppNum, NEWCPLINFO* pInfo) { //此函数在控制面板打开时被调用,用于获取资源信息,即填充pInfo结构 pInfo->dwSize = sizeof(NEWCPLINFO);

//指定结构长度 pInfo->dwFlags = 0;

//此成员忽略 pInfo->dwHelpContext = 0;

//此成员忽略 pInfo->lData = 0;

//小程序传递给应用程序的LONG类型的值 pInfo->hIcon= ::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI―MYICON));

//加载图标 strcpy(pInfo->szName, ″FTP设置″);

//设置名称 strcpy(pInfo->szInfo, ″设置FTP缺省信息″);

//设置描述 strcpy(pInfo->szHelpFile, ″ ″);

//此成员忽略 return 0;

//不发送CPL―INQUIRE消息 } LONG CMyPanel::OnDblclk(HWND hwndCPl, UINT uAppNum, LONG lData) { //双击控制面板中的图标时,此函数被调用,用于读取或保存设置信息. CMyDialog dlg(CWnd::FromHandle(hwndCPl));

//用父窗口句柄初始化对话框 HKEY hcpl;

//主键,用于读写注册表 if (RegOpenKeyEx(HKEY―CURRENT―USER,″Control Panel\\FTPSet″,0, KEY―QUERY―VALUE, &hcpl) == ERROR―SUCCESS) { DWORD dwType = 1;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题