用VS制作对话框向导Word格式文档下载.docx
- 文档编号:6839186
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:31
- 大小:28.77KB
用VS制作对话框向导Word格式文档下载.docx
《用VS制作对话框向导Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《用VS制作对话框向导Word格式文档下载.docx(31页珍藏版)》请在冰点文库上搜索。
向导说明。
”这个需要在vsdir文件修改。
打开DialogBasedApplication.vsdir文件,只有简单的一行:
DialogBasedApplication.vsz||DialogBasedApplication|1|TODO:
向导说明。
||6777||DialogBasedApplication
大家一定看到了“TODO:
”这句话吧,我先来修改这句话,改成“DialogBasedApplication.By&
lt;
Rover12421&
gt;
”。
保存,然后新建项目选择我们刚才创建的向导,是不是已经改过来了?
如果以前创建过,可能这里并不能看出来。
关于vsdir文件,大家也可以参考MSDN,下面贴下MSDN上的一些说明,大家看看就行了。
可为VSDir文件中的每个记录指定下列字段:
字段
含义
RelPathName
必需。
向导的.vsz文件的名称(如MyWizard.vsz),此文件与VisualStudio安装目录有关。
{clsidPackage}
可选。
表示产品的GUID,该产品(如VisualC++)带有的DLL中包含本地化资源。
通常,对于符合第三方向导的VSDir文件,此字段为空。
LocalizedName
这是向导或模板的可本地化的名称以及出现在“添加项”对话框中的名称。
它可以是字符串或#ResID形式的资源标识符。
SortPriority
表示向导的排序顺序和相对优先级的整数,1为最高。
例如,如果此项为“1”,那么它出现在其他1之后和所有2或更低级别之前。
说明
当选定项后,将在“添加项”对话框中显示的模板或向导的可本地化说明。
仅应用于模板文件,不应用于文件夹。
DLLPath或{clsidPackage}
指定到DLL或EXE文件的完整路径,或产品的GUID,该产品所带的.dll文件包含要为向导加载的图标。
该图标使用给定的IconResourceId作为DLL/EXE文件外部的资源加载。
此设置重写图标位置的{clsidPackage}(如果已指定)。
IconResourceId
DLL文件内确定要显示的图标的资源标识符。
如果未定义图标,环境用默认图标替代与该项具有相同扩展名的文件。
Flags
请参见下面的Flags说明和表。
SuggestedBaseName
在对话框的“名称”字段中显示的向导的默认名称。
它是字符串或#ResID形式的资源标识符。
如果该名称不是唯一的,那么环境将为该名称追加一个整数。
例如,MyFile.aspx可能更改为MyFile1.aspx。
如果未提供名称,那么使用“Project”。
说明任何没有有含义的数据的非必选字段应包含零(0)作为占位符。
如果未提供本地化名称,则使用相对路径。
如果未定义图标,则IDE用该扩展名替换文件的默认图标。
如果未提供建议的基名称,则使用“Project”。
Flags
一组用于启用或禁用“添加项”对话框中的“名称”和“位置”字段的位标志。
也就是说,当用户从“添加”菜单中选择“添加新项”时,项目将决定名称和位置是否显示在“模板”窗格上,而标志将决定名称和位置是否可由用户使用。
将Flags的值设置为各个值的和。
即33等于VSDIRFLAG_NonLocalTemplate|VSDIRITEM_DisableLocationField。
标志名称十进制值DescriptionVSDIRFLAG_NonLocalTemplate1使用非本地用户界面行为和保存机制。
VSDIRFLAG_BlankSolution2创建空白(空)解决方案。
不创建项目。
VSDIRFLAG_DisableBrowseButton4对此项目或项禁用“浏览”按钮。
VSDIRFLAG_DontAddDefExtension8不将默认扩展名追加到为项提供的名称中。
(此设置对项目无效。
)VSDIRFLAG_DisableLocationField32禁用此项目或项的位置字段。
VSDIRFLAG_DontInitNameField4096不用有效的名称初始化此项目或项的名称字段。
VSDIRFLAG_DisableNameField8192禁用此项目或项的名称字段。
接着说下Default.js,具体也参考MSDN
默认情况下,项目的Default.js文件包含以下函数:
AddConfig
添加项目的配置。
可以提供编译器和链接器设置。
AddFilesToCustomProj
当用户单击“完成”时,将指定的文件添加到项目中。
AddFilters
当用户单击“完成”时,将指定的源筛选器添加到项目中。
CreateCustomProject
当用户单击“完成”时,在指定位置创建项目。
CreateCustomInfFile
创建项目的Templates.inf文件。
DelFile
删除指定的文件。
GetTargetName
获取指定文件的名称。
OnFinish
当用户单击“完成”时,由向导调用以创建项目、添加文件和筛选器、呈现模板以及设置配置。
PchSettings
设置预编译头设置。
有关更多信息,请参见Common.js参考中的SetCommonPchSettings。
下节我们只需要修改AddFilters函数,来把文件分别添加到源文件,头文件和资源文件里。
还需要修改GetTargetName函数,用来修改项目的文件名,使每次创建的项目的文件名都不一样。
差不多了解这些就行。
第三步,制作对话框向导
这步就是让大家制作功能完善的自定义向导。
首先我们把第一节中制作的Win32DLG对话框项目的文件拷贝到自定义向导中。
下载(41.33KB)
2010-2-813:
15
打开Win32DLG项目目录,选择所有的头文件,源文件和资源文件,拷贝到向导项目下的\Templates\2052下面.
下载(48.14KB)
然后在“模板文件”上点“右键--添加现有项”,把刚刚拷贝到\Templates\2052下的几个文件全部添加进来。
下载(34.54KB)
再打开Templates.inf文件,把添加的文件的文件名全部写到里面。
为什么要写着里呢?
这是我们使用向导新建项目所需要的文件,default.js通过调用AddFilesToCustomProj函数,把写在Templates.inf中的文件拷贝到新建的项目文件夹里。
下载(57.36KB)
现在我们来修改default.js文件。
找到GetTargetName函数,修改它。
修改后的代码:
1.
2.functionGetTargetName(strName,strProjectName)
3.{
4.try
5.{
6.//TODO:
基于模板文件名设置呈现文件的名称
7.varstrTarget=strName;
8.if(strName=='
readme.txt'
)
9.strTarget='
ReadMe.txt'
;
10.if(strName=='
sample.txt'
11.strTarget='
Sample.txt'
12.if(strName=='
Win32DLG.cpp'
13.strTarget=strProjectName+'
.cpp'
14.if(strName=='
Win32DLG.h'
15.strTarget=strProjectName+'
.h'
16.if(strName=='
Win32DLG.ico'
17.strTarget=strProjectName+'
.ico'
18.if(strName=='
Win32DLG.rc'
19.strTarget=strProjectName+'
.rc'
20.returnstrTarget;
21.}
22.catch(e)
23.{
24.throwe;
25.}
26.}
functionGetTargetName(strName,strProjectName)
{
try
{
//TODO:
基于模板文件名设置呈现文件的名称
varstrTarget=strName;
if(strName=='
)
strTarget='
strTarget=strProjectName+'
returnstrTarget;
}
catch(e)
throwe;
}
我们添加了4个if语句,用来把原来的文件名改成“新建的项目名”+扩展名。
这个规则可以自定义,但是一定要和后面的更改一致。
说下这个函数的两个参数,strName就是传进来的文件名,strProjectName就是传进来的项目名。
接着往上找到AddFilters函数,修改如下:
2.functionAddFilters(proj)
6.//将文件夹添加到项目
7.//varstrSrcFilter=wizard.FindSymbol('
SOURCE_FILTER'
);
8.//vargroup=proj.Object.AddFilter('
源文件'
9.//group.Filter=strSrcFilter;
10.proj.Object.AddFilter('
).Filter='
cpp;
c'
11.proj.Object.AddFilter('
头文件'
hpp;
h'
12.proj.Object.AddFilter('
资源文件'
ico;
rc;
bin'
13.}
14.catch(e)
15.{
16.throwe;
17.}
18.}
functionAddFilters(proj)
//将文件夹添加到项目
//varstrSrcFilter=wizard.FindSymbol('
//vargroup=proj.Object.AddFilter('
//group.Filter=strSrcFilter;
proj.Object.AddFilter('
}AddFilter('
'
),是我们要添加到项目中显示的那个目录里面,比如源文件、SourceFile,可以自定义,但最好写成相对应的中文或英文,Filter后面的就是判断的扩展名。
差不多这样就修改完成了。
可以先新建一个项目看看,看起来会没什么问题,但是编译会出错,这很正常,因为我们还有几个地方需要做小小的修改。
我们需要把所有老的项目名命名的地方全部改成新建的项目名,用到就是[!
outputPROJECT_NAME]。
一共有两个文件,一个是Win32DLG.cpp,一个是Win32DLG.rc
打开Win32DLG.cpp,找到#include"
Win32DLG.h"
,修改成
#include"
[!
outputPROJECT_NAME].h"
Win32DLG.rc是资源文件,不能直接双击编辑,要在上面点“右键,查看代码”。
下载(22.22KB)
15找到
IDI_WIN32DLGICON"
Win32DLG.ico"
修改成
outputPROJECT_NAME].ico"
还有一处
IDS_APP_TITLE"
Win32DLG"
IDC_WIN32DLG"
WIN32DLG"
对应的修改成
outputPROJECT_NAME]"
这样保存之后这个向导就算完成了。
大家可以自己用这个向导生成试试。
下一节讲讲怎么把这个向导给别人使用。
1.制作一个DialogBasedApplication(对话框应用程序)程序。
下载(60.32KB)
2010-2-809:
26
新建一个Win32项目,配置使用默认的就行。
我新建的项目是Win32DLG。
先看下这个项目有哪些文件
下载(18.1KB)
一共是10个文件。
首先我们需要修改的是资源文件----Win32DLG.rc。
这里的修改很简单。
新建一个Dialog对话框资源或直接修改现有的ABOUT对话框资源也行。
我用的新建。
在Dialog上点右键,插入Dialog.
下载(49.11KB)
默认的界面如下。
我们只保留一个确定按钮。
调整界面大小,标题,风格等等,这些很容易就不说了。
相信大家都会。
下载(13.05KB)
我修改的如下,并修改确认按钮的ID为IDC_OK。
主界面的ID为IDD_Main.
下载(10.63KB)
接着删除无用的资源IDD_ABOUTBOX和IDC_WIN32DLG
下载(18.41KB)
下载(13.35KB)
界面就修改好了。
接着就是重点,修改Win32DLG.cpp文件。
除了包含的头文件和WinMain函数,其他全部删除。
WinMain函数里也只保留前两句,和return。
并把“return(int)msg.wParam;
”修改成“return0;
”
下载(46.25KB)
然后在WinMain函数里添加一条DialogBox,来显示我们的主界面
DialogBox(hInstance,MAKEINTRESOURCE(IDD_Main),NULL,WinProc);
再在后面添加主界面的处理函数WinProc,以及主界面的载入和关闭事件函数Main_OnInitDialog,Main_OnClose,和OnCommand事件函数Main_OnCommand。
完成的Win32DLG.cpp代码如下
2.//Win32DLG.cpp:
定义应用程序的入口点。
3.//
4.#include"
stdafx.h"
5.#include"
6.intAPIENTRY_tWinMain(HINSTANCEhInstance,
7.HINSTANCEhPrevInstance,
8.LPTSTRlpCmdLine,
9.intnCmdShow)
10.{
11.UNREFERENCED_PARAMETER(hPrevInstance);
12.UNREFERENCED_PARAMETER(lpCmdLine);
13.DialogBox(hInstance,MAKEINTRESOURCE(IDD_Main),NULL,WinProc);
14.return0;
15.}
16.BOOLWINAPIWinProc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam)
17.{
18.switch(uMsg)
19.{
20.HANDLE_MSG(hWnd,WM_INITDIALOG,Main_OnInitDialog);
21.HANDLE_MSG(hWnd,WM_COMMAND,Main_OnCommand);
22.HANDLE_MSG(hWnd,WM_CLOSE,Main_OnClose);
23.}
24.returnFALSE;
26.BOOLMain_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam)
27.{
28.returnTRUE;
29.}
30.voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)
31.{
32.switch(id)
33.{
34.caseIDC_OK:
35.{
36.MessageBox(hwnd,_T("
HelloWorld"
),_T("
OK"
),MB_OK);
37.}
38.break;
39.default:
40.break;
41.}
42.}
43.voidMain_OnClose(HWNDhwnd)
44.{
45.EndDialog(hwnd,0);
46.}
//Win32DLG.cpp:
//
intAPIENTRY_tWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPTSTRlpCmdLine,
intnCmdShow)
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
DialogBox(hInstance,MAKEINTRESOURCE(IDD_Main),NULL,WinProc);
return0;
BOOLWINAPIWinProc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam)
switch(uMsg)
HANDLE_MSG(hWnd,WM_INITDIALOG,Main_OnInitDialog);
HANDLE_MSG(hWnd,WM_COMMAND,Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE,Main_OnClose);
returnFALSE;
BOOLMain_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam)
returnTRUE;
voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)
switch(id)
caseIDC_OK:
MessageBox(hwnd,_T("
break;
default:
voidMain_OnClose(HWNDhwnd)
EndDialog(hwnd,0);
}主要的函数都写好了,按钮的事件也添加到Main_OnCommand里了。
现在就是要处理头文件。
打开Win32DLG.h头文件,添加函数声明。
先看看我们在Win3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VS 制作 对话框 向导