用VC6.0制作控制面板应用程序
一、Windows的控制面板应用程序
---- 在Windows的系统目录下可以找到控制面板应用程序,它们是一些扩展名
为cpl的dll,通常用来提供配置服务,如配置网络硬件和软件用的ncpa.cpl,配
置桌面用的desk.cpl等,它们的父窗口都是桌面。运行这类程序的方法很多:双
击控制面板中的图标,双击系统目录下的cpl文件,或者使用如下DOS命令:
rundll32 shell32.dll,Control_RunDLL
< cpl文件> [@n]或者
control < cpl文件> [@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页中将输出文件
名改为:
---- < WindowsDir >< SystemDir >Mycplapp.cpl,在Debug页中将
"Executable for debug session"改为:< WindowsDir >< SystemDir >Control.exe,
以便直接用控制面板运行。对于Win9x,< SystemDir >为System,对于WinNT,
< SystemDir >为System32。
---- 3.从MSDN Library Visual Studio 6.0光盘的Smples目录中找到
Ctrlpan.cpp 和Ctrlpan.h 文件,并把它们加到项目中。
---- 4.创建如图所示对话框,代号为:IDD_MYDIALOG,用Class Wizard创建
一个CMyDialog类。为每个控件创建成员变量,如"FTP服务器"对应的成员变
量定义为:CString m_strServer。
---- 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)
{ //双击控制面板中的图标时,此函数被调用,
补充:软件开发 , Vc ,
上一个:VC++环境下菜单和工具栏的动态修改技术
下一个:用VC制作初始画面
- 更多VC++疑问解答:
- VC++ 算法。
- MFC CListCtrl获取列数出错了,怎么回事?
- 谁有VC++6.0企业版中文版的下载地址
- vc++,关于TextOut的一个小问题
- 定义一个三维的CStringArray//一定要使用CArray模板?那操作的时候,使用那个类的函数对数组进行操作呢?
- 关于mfc消息映射的问题
- MFC中用TextOut输出的问题
- 请问如何在VC6.0里MFC下对万年历进行编程
- iArray.Add(iValue);//Add函数的参数不可以用CArray模板???
- 'USES_CONVERSION' : undeclared identifier;'A2W' : undeclared identifier
- vc6.0能不能用CImage,能的话给个例子,以及atlimage.h,
- VC 对话框 标题栏 怎么变成这个样子????如图!
- spin控件的UDN_DELTAPOS消息//下面代码什么作用? [
- VC修改DNF
- vc 套接字 struct