文档库 最新最全的文档下载
当前位置:文档库 › MFC制作简易安装程序

MFC制作简易安装程序

MFC制作简易安装程序
MFC制作简易安装程序

任务4 对话框与常用控件编程

一、综合课程实习目的

1.掌握模式对话框的创建与使用。

2.掌握常用控件的使用方法。

3.熟悉通用对话框和消息对话框.。

4.掌握简易安装程序的开发。

二、综合课程实习内容

1.创建一个基本对话框的MFC工程:setuppro

2.在工程对话框IDD_SETUPPRO_DIALOG中,修改其对话框标题为:安装程序;并加入

一个文本框,文本框内容为:“\n\t\t欢迎使用安装向导!\n\n如果你想继续安装程序,请选择“下一步”按钮,\n\n安装向导将一步步指导你完成程序的安装;\n\n\n如果你现在不想安装,请单击“取消”结束程序运行;\n\n在后面的显示页面中,可点击“取消”按钮来结束程序安装”。删除确定按钮,并增加名称为“下一步”的按钮

3.添加一个对话框资源,ID为:IDD_DIALOG1_Ver,对话框名称为:安装向导。在该对

话框中添加一个版权声明的文本框,文本框的属性中增加“边框、下沉”,然后增加该文本框声明内容“\n\t版权声明\n1、本程序版权所有,欢迎传播。\n2、... ...\n3、... ...”,并修改Cancel名称为取消,删除确定按钮,并增加名称为“下一步”的按钮

4.添加一个对话框资源,ID为:IDD_DIALOG2_Tab,对话框名称为:安装向导。在该对

话框中增加一个按钮“上一步”(ID为:IDC_BUTTON1),修改原来的按钮名称:Cancel ->取消;并删除确定按钮,并增加名称为“下一步”的按钮;另外增加一个Tab Control (Tab控件):IDC_TAB1;另外在同一位置增加三个静态文本:(DC_STATIC1:第一页;

IDC_STATIC2:第二页;IDC_STA TIC3:第三页)

5.添加一个对话框资源,ID为:IDD_DIALOG3_Tree,对话框名称为:安装向导。修改原

来的按钮名称:Cancel->取消;删除确定按钮,增加名称为“下一步”的按钮;并增加一个按钮“上一步”(ID为:IDC_BUTTON1),增加一个Tree Ctrol(树形控件),ID 为:IDC_TREE1;修改该树形控件的属性:“有按钮,有行,Lines at root,边框,总是显示选择”;然后再增加一个静态文本“IDC_STA TIC:所选路径:”和一个文本框“IDC_EDIT1”;

6.添加一个对话框资源,ID为:IDD_DIALOG4_ListCtrl,对话框名称为:安装向导。修

改原来的按钮名称:Cancel->取消;删除确定按钮,修改OK按钮为“完成”名称按钮;并增加一个按钮“上一步”(ID为:IDC_BUTTON1),增加一个List Ctrol(列表控件),ID为:IDC_LIST1;修改该列表控件的属性:“Group;查看:Report;排列:Left;分:Ascending;Right aligned text”;然后再增加一个静态文本“IDC_STATIC:需磁盘空间::”和一个文本框“IDC_EDIT1”;

7.开始为每个对话框建立类:在IDD_DIALOG1_Ver 对话框上选择类向导。为

IDD_DIALOG1_V er 对话框建立类。名称为:CDlg1Ver。在IDD_DIALOG2_Tab对话框上选择类向导。为IDD_DIALOG2_Tab 对话框建立类。名称为:CDlg2Tab。同样:CDlg3Tree,CDlg4List

8.开始实现对话框之间的调用:选择IDD_SETUPPRO_DIALOG对话框,在“下一步”按

钮上双击对该按钮实现调用版本对话框的代码:

#include "Dlg1Ver.h"

void CSetupproDlg::OnButton1()

{

// TODO: Add your control notification handler code here

CDialog::OnOK();

CDlg1Ver verdlg;

verdlg.DoModal();

}

9.选择IDD_DIALOG1_V er对话框,在“下一步”按钮上双击对该按钮实现调用包含属性

页Tab对话框的代码:

#include "Dlg2Tab.h"

void CDlg1Ver::OnButton1()

{

// TODO: Add your control notification handler code here

CDialog::OnOK();

CDlg2Tab dlg;

dlg.DoModal();

}

10.选择IDD_DIALOG2_Tab对话框,在“下一步”按钮上双击对该按钮实现调用包含树形

控件对话框的代码:

#include "Dlg3Tree.h"

void CDlg2Tab::OnButton2()

{

// TODO: Add your control notification handler code here

CDialog::OnOK();

CDlg3Tree dlg;

dlg.DoModal();

}

在“上一步”按钮上双击,实现该按钮对版本对话框调用的代码:

#include "Dlg1Ver.h"

void CDlg2Tab::OnButton1()

{

// TODO: Add your control notification handler code here

CDialog::OnOK();

CDlg1Ver dlg;

dlg.DoModal();

}

在该对话框中选择建立类向导,为Tab控件IDC_TAB1增加一个变量:Type:CTabCtrl;

Member:m_tab1;

另外再增加一个OnInitDialog()的函数,用来初始化该对话框。

在该函数中增加如下代码:

BOOL CMyDlg3::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

TC_ITEM* m_pTCItem;

m_pTCItem=new TC_ITEM;

m_pTCItem->mask=TCIF_TEXT;

m_pTCItem->pszText="Tab控件"; //标签中的文字

m_tab1.InsertItem(0,m_pTCItem);

m_pTCItem->pszText="树立信心";

m_tab1.InsertItem(1,m_pTCItem);

m_pTCItem->pszText="哈哈"; //标签中的文字

m_tab1.InsertItem(2,m_pTCItem);

//因为默认选中的标签为第一个,所以显示第一个Static Text 控件

GetDlgItem(IDC_STATIC_TAB1)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC_TAB2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC_TAB3)->ShowWindow(SW_HIDE);

return TRUE; // return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE }

另外增加一个Tab的选择事件:OnSelchangeTab1

再在该事件中加上如下代码:

void CDlg2Tab::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)

{

// TODO: Add your control notification handler code here

if(m_tab1.GetCurSel()==0)

{

GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);

}

else if(m_tab1.GetCurSel()==1) //选中的是第二个标签

{

GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);

}

else

{

GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC3)->ShowWindow(SW_SHOW);

}

*pResult = 0;

}

11.针对IDD_DIALOG3_Tree对话框编程:

首先在类项导中增加树形控件的变量:类型:CTreeCtrl,名称m_Path_TreeCtrl ;以及

文本框的变量类型:CString ,名称:m_CurPath

然后增加OnInitDialog()和OnSelchangedTree1()函数

然后分别对这两个函数编程:

BOOL CDlg3Tree::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

TV_INSERTSTRUCT TreeCtrlItem;

HTREEITEM hTreeItem;

TreeCtrlItem.hInsertAfter=TVI_LAST;

TreeCtrlItem.item.mask=TVIF_TEXT|TVIF_PARAM;

//第一级

TreeCtrlItem.hParent=TVI_ROOT;//父级为根部

CString Disk="C:";

TreeCtrlItem.item.pszText=Disk.GetBuffer(30);

TreeCtrlItem.item.lParam=1; //对于根目录,设置为1

hTreeItem=m_Path_TreeCtrl.InsertItem(&TreeCtrlItem);

//第二级

TreeCtrlItem.hParent=hTreeItem;

TreeCtrlItem.item.lParam=10; //对于子目录,设置为10

strcpy(TreeCtrlItem.item.pszText,"Windows");

m_Path_TreeCtrl.InsertItem(&TreeCtrlItem);

strcpy(TreeCtrlItem.item.pszText,"DOS");

m_Path_TreeCtrl.InsertItem(&TreeCtrlItem);

TreeCtrlItem.hParent=TVI_ROOT;

TreeCtrlItem.item.pszText="D:";

TreeCtrlItem.item.lParam=1;

return TRUE; // return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE

}

void CDlg3Tree::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) {

NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

// TODO: Add your control notification handler code here

CString tempstring;

//获取当前条目的文本

HTREEITEM CurItem=m_Path_TreeCtrl.GetSelectedItem();

TV_ITEM TreeCtrlItem;

TreeCtrlItem.hItem=CurItem;

m_Path_TreeCtrl.GetItem(&TreeCtrlItem);

tempstring=m_Path_TreeCtrl.GetItemText(m_Path_TreeCtrl.GetSelectedItem());

long CurlParam=TreeCtrlItem.lParam;

//当前条目号

if(CurlParam!=1) //子目录

{

TreeCtrlItem.hItem=

m_Path_TreeCtrl.GetParentItem(m_Path_TreeCtrl.GetSelectedItem());

m_Path_TreeCtrl.GetItem(&TreeCtrlItem);

CurItem=TreeCtrlItem.hItem;

m_CurPath=m_Path_TreeCtrl.GetItemText(CurItem);

m_CurPath+="\\";

m_CurPath+=tempstring;

}

else //根目录

{

m_CurPath=tempstring;

}

UpdateData(FALSE); //更新控件中的值

*pResult = 0;

}

再分别针对“上一步”“下一步”和“取消”按钮编程:

//上一步:

#include "Dlg2Tab.h"

void CDlg3Tree::OnButton1()

{

// TODO: Add your control notification handler code here

CDialog::OnOK();

CDlg2Tab dlg;

dlg.DoModal();

}

//下一步

#include "Dlg4List.h"

void CDlg3Tree::OnButton2()

{

// TODO: Add your control notification handler code here

CDialog::OnOK();

CDlg4List dlg;

dlg.DoModal();

}

12.针对IDD_DIALOG4_ListCtrl编程:

首先增加变量:列表控件IDC_LIST1类型为CListCtr,变量名为:m_Content_ListCtrl;文本框控件IDC_EDIT1 类型为long;变量名为:m_Space

然后建立OnInitDialog()和OnClickList1()函数:

分别编辑代码:

BOOL CDlg4List::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

m_Content_ListCtrl.InsertColumn(0,"安装选择",LVCFMT_LEFT,80,-1);

m_Content_ListCtrl.InsertColumn(1,"所需空间(MB)",LVCFMT_LEFT,160,-1);

int JustNowItem;

JustNowItem=m_Content_ListCtrl.InsertItem(0,"典型安装");

m_Content_ListCtrl.SetItemText(JustNowItem,1,"10");

JustNowItem=m_Content_ListCtrl.InsertItem(1,"完全安装");

m_Content_ListCtrl.SetItemText(JustNowItem,1,"20");

UpdateData(FALSE);

return TRUE; // return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE

}

void CDlg4List::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)

{

// TODO: Add your control notification handler code here

int i;

m_Space=0;

for(i=0;i

{

if(m_Content_ListCtrl.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)

{

m_Space+=atol(m_Content_ListCtrl.GetItemText(i,1));

}

}

UpdateData(FALSE);

*pResult = 0;

}

接着对三个按钮进行编程:

上一步:

#include "Dlg3Tree.h"

void CDlg4List::OnButton1()

{

// TODO: Add your control notification handler code here CDialog::OnOK();

CDlg3Tree dlg;

dlg.DoModal();

}

完成:

void CDlg4List::OnOK()

{

// TODO: Add extra validation here

CDialog::OnOK();

}

取消:

void CDlg4List::OnCancel()

{

// TODO: Add extra cleanup here

CDialog::OnCancel();

}

13.最后编译运行,查看结果。

vb程序打包

打包过程: 一).创建部署项目 1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。 2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“名称”框中键入setup1。 3. 单击“确定”关闭对话框。 4. 项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。 5. 在“属性”窗口中,选择ProductName 属性,并键入信息管理系统。 二).将主程序项目的输出添加到部署项目中 1. 在“文件系统编辑器”中,选择“应用程序文件夹”。在“操作”菜单上,指向“添加”,然后选择“项目输出”。 2. 在“添加项目输出组”对话框中,选择“项目”下拉列表中的“你的程序”。 3. 单击“确定”关闭对话框。 4. 从列表中选择“主输出”和“内容文件”组,然后单击“确定”。 三).创建安装程序类 1. 在“文件”菜单上指向“新建”,然后选择“项目”。 2. 在“新建项目”对话框中,选择“项目类型”窗格中的“Visual Basic 项目”,然后选择“模板”窗格中的“类库”。在“名称”框中键入installDB。 3. 单击“打开”关闭对话框。 4. 从“项目”菜单中选择“添加新项”。 5. 在“添加新项”对话框中选择“安装程序类”。在“名称”框中键入installDB。 6. 单击“确定”关闭对话框。 7. 详细代码附后。 四).创建自定义安装对话框 1. 在解决方案资源管理器中选择“setup1”项目。在“视图”菜单上指向“编辑器”,然后选择“用户界面”。 2. 在用户界面编辑器中,选择“安装”下的“启动”节点。在“操作”菜单上,选择“添加对话框”。 3. 在“添加对话框”对话框中,选择“许可协议”对话框,然后单击“确定”关闭对话框。 4. 在“添加对话框”对话框中,选择“文本框(A)”对话框,然后单击“确定”关闭对话框。 5. 在“操作”菜单上,选择“上移”。重复此步骤,直到“文本框(A)”对话框位于“安装文件夹”节点之上。 6. 在“属性”窗口中,选择BannerText 属性并键入:安装数据库. 7. 选择BodyText 属性并键入:安装程序将在目标机器上安装数据库 8. 选择Edit1Label 属性并键入:数据库名称: 9. 选择Edit1Property 属性并键入CUSTOMTEXTA1 10. 选择Edit1Value 属性并键入:dbservers

7-ZIP 制作软件安装包详细教程+7-Zip自解压软件安装包制作工具箱

7-Zip自解压软件安装包制作工具箱 本工具箱包含以下工具: 1.7-Zip解压缩软件:7-Zip v4.57 简体中文版 2.7-Zip自解压包生成工具:7Zip高级自解压包生成工具(SfxMaker7Zip) 3.7-Zip自解压文档分离器:7z自解压文档分离器汉化版(7z SFX Archives splitter) 4.程序文件图标提取工具:零度文件图标提取器 5.程序文件资源替换工具:ResHacker远景专用 以上这些工具在制作7z自解压软件安装*****程中,是很有用的,并且简单易学。 声明:本工具箱所收集的工具均来自网络,所有权归原作者所有,本人仅仅收集而已。 1.7-Zip解压缩软件:7-Zip v4.57 简体中文版 7-Zip是一款号称有着现今最高压缩比的压缩软件,它不仅支持独有的7z文件格式,而且还支持各种其它压缩文件格式,其中包括Zip、RAR、CAB、GZip、BZip2和TAR等等。此软件压缩的压缩比要比普通Zip文件高30-50% ,因此,它可以把Zip格式的文件再压缩2-10% 。 7-Zip 的主要特征: 更新了算法来加大7z 格式的压缩比 7-Zip 是基于GNU LGPL之下发布的软件 支持格式:压缩及解压缩:7z、Zip、GZip、BZip2 和TAR 仅解压缩:RAR、CAB、ISO、ARJ、LZH、CHM、Z、CPIO、RPM、DEB 和NSIS 对于Zip 及GZIP 格式,7-Zip 能提供比使用PKZip 及WinZip 高2-10% 的压缩比 7z 格式支持创建自释放(SFX)压缩档案 集成Windows 外壳扩展 强大的的文件管理 强大的命令行版本 支持FAR Manager 插件 软件界面

mfc绘图程序上机步骤

首先生成MFC程序空框架 空框架中的每个类的职责是什么要自己理解清楚 第一次课: 1.定义自己的数据类CLine直线类,用于绘图 点击菜单:插入—类 选择Generic class,输入类名,每个类都是分成两个文件.h 中只有类体,包含类的数据成员定义和成员函数声明,.cpp中就是成员函数的类体外实现 classCLine { int x1,y1,x2,y2; public: CLine(int a=0,int b=0,int c=0,int d=0); virtual ~CLine(); int Getx1(); int Gety1(); int Getx2(); int Gety2(); void SetPoint1(intx,int y);很多函数是在后面使用中发现问题逐渐添加的 void SetPoint2(intx,int y); }; 2.自定义的类要作为数据成员出现在Doc类中 classCSmallCADDoc : public CDocument { protected: // create from serialization only CSmallCADDoc(); DECLARE_DYNCREATE(CSmallCADDoc) // Attributes public: CLine line1; //数据成员应该是私有,但是由于文档类与视图类交换频繁,为了访问方便,直接定义成公有了。你也可以定义成私有,再定义一个Get函数间接访问,取他的值3.注意:添加了这个数据成员后,需要增加几个#include “Line.h”语句 添加的原则是,每个cpp文件都单独编译,哪里用到新的类,相应的cpp前就要增加#include “。。。”语句 此处是在CSmallCADDoc类中添加了一个CLine line1;类对象,在SmallCADDoc.h文件中。所以,凡是包含了#include “SmallCADDoc.h”的地方都要在前面添加#include “Line.h” 语句。共3处:app doc view 这3个类的cpp文件前 4.注意:初始化 CLine line1; //数据成员是文档类的,它不像dos下程序,明确能看到定义,调用构造

mfc简单绘图程序

M F C 简 单 的 绘 图 程 序 ——王帅

目录 摘要 (2) 关键字 (2) 1 引言 (2) 设计目的 ............................................................................................................ 错误!未定义书签。 2 功能说明 (2) 2.1菜单栏....................................................................................................... 错误!未定义书签。 2.1.1图形 (3) 2.1.2画笔 (4) 2.1.3画硬币 (4) 2.2工具栏 (5) 2.3状态栏 (5) 3 功能的实现 (5) 3.1 视图设计 (5) 3.2 编辑资源 (6) 3.3 编程思路及各个函数的实现 (7) (1)思路 (7) (2)代码的实现 (7)

1.为基本形状创建一个基类 (8) 2.基本形状类的创建 (8) 2.1矩形类的创建及定义 (8) 2.2圆形类的创建及定义 (10) 2.3正五边形类的创建及定义 (11) 2.4正三角形类的创建及定义 (14) 2.5椭圆类的创建及定义 (16) 2.6正四边形类的创建及的定义 (17) 2.7正六边形类的创建及定义 (18) 2.8直线类的创建及定义 (19) 3.各基本形状类在CMyDraw2_0类中的调用和绘图的实现 (20) 3.1矩形类的调用与与绘图的实现 (20) 3.2圆形类的调用 (24) 3.3正三角形类的调用 (25) 3.4基本类型调用的剩余代码 (26) 4.画笔的使用、颜色及大小的调整 (29) 5.画硬币 (35) 6.工具栏中的自定义控件 (38) 7.状态栏中的显示 (39) 4程序功能的测试 (41) 5最后总结 (42)

vs打包程序数据库图解

VS打包数据库图解 1.首先在需要部署的项目的解决方案资源管理器中新建一个安装项目 2.在安装项目的文件视图中,右键【应用程序文件夹】->【添加】->【项目输出】 选择你的项目中的启动项目,下面的列表中,默认就是主输出,确定。 3.此时在文件系统的中间栏目,会自动列出编译所需的文件。一个简单项目打包差不多,还有快捷方式什么的,就不说了。开始重点了。

创建安装程序类 4.在解决方案资源管理器中,新建一个类库项目【InstallDB】,删除Class1.cs,新建一个安装程序类[InstallDB.cs],等下将在这个类中编写附加数据库代码。 创建自定义安装对话框 5.在刚新建的安装项目上右键,【视图】->【用户界面】: 在用户界面中,右键【启动】-【添加对话框】-选择【文本框(A)】-确定。 6.然后右键这个文本框(A),将其上移到欢迎使用下面:

右键选择【属性】,参考下图的信息填写: 7.在刚新建的安装项目上右键,【视图】->【自定义操作】: 8.右键【自定义操作界面】的【安装】节点,【添加自定义操作】,弹出的对话框。

9.在查找范围里选择应用程序文件夹,再点击右侧的【添加输出(O)…】,选择刚新建的安装程序类项目,默认还是主输出,确定。此时: 10.右键这个【主输出来自InstallDB(活动)】,进入属性界面,在【CustomActionData】属性里输入下面的内容: /dbname=[DBNAME] /server=[SERVER] /user=[USER] /pwd=[PWD] /targetdir="[TARGETDIR]\" 说明:其中前四个方括号中的大写字母,为上面第6步图中输入的四个EditProPerty属性,需要对应好。最后一个targetdir的值的意思是安装后文件的目录路径。 特别提醒:前三个"/XXX=[XXX]"后面,都有一个空格的,小xin曾因此烦恼甚久,网上的某些教程实在是。。。很耐人。 11.现在可以添加数据库文件了,在刚新建的安装项目上右键,【添加】->【文件】,选择你的MDF和LDF文件,就是安装时需要附加的数据库文件。 12.最后,我们只需在安装程序类里编写附加数据库的代码了。打开上面第4步中新建的安装程序类,参考下方的代码,编写适合您的附加数据库代码 using System; using System.Collections.Generic; using https://www.wendangku.net/doc/d59987446.html,ponentModel; using System.Configuration.Install; using System.Data.Sql; using System.Collections.Specialized; using System.Data.SqlClient; using System.Windows.Forms; namespace EaterySystem { [RunInstaller(true)] public partial class InstallDB : Installer

C++实验报告(MFC简单画图程序)

VC++程序设计实验报告 一、实验目的 掌握MFC编程 二、实验内容 用MFC向导创建单文档应用程序,一个简单的画图程序。 ?使用C++语言实现 ?使用VC++6.0集成开发环境开发 ?使用MFC应用程序开发框架 三、实验步骤 ?基本功能描述 1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、 曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决 定图形的大小,当鼠标弹起,此图形则绘制完毕。 ?设计思路 1. 对需要用到的变量进行初始化。 2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4. 选择图形或其它属性,可进行下一次绘制。 ?软件设计 A 设计步骤 1.创建单文档 创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。

图1 创建工程 图2 创建单文档

VS2010发布、打包安装程序超全超详细

1、 在vs2010 选择“新建项目”→“其他项目类型”→“Visual Studio Installer→ 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示 的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 9、应用程序文件夹中点右键添加文件:表示添加要打包的文件; 添加的文件一般是已经编译过应用程序的debug目录下的文件;

如果debug 下面有子文件夹则需要“添加文件夹”,例如:data 然后把对应的子文件里的内容添加到此文件夹中; 把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 10、在创建的项目名称(Setup1)上点击右键:属性

选择系统必备: 然后选择.NET的版本,和Windows Installer3.1(可选项) 选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;但是安装包会比较大。

VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图” “启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0; 这样.NET Framework 2.0上创建的项目在安装时,就不会安装.NET3.5或其他版本, 也不会重启(解决.NET 2.0 创建的项目,安装.NET FrameWork3.5的问题)。 11、设置安装文件的目录(路径): 创建的项目名称(setup1)点击左键(不是右键),在属性中设置参数如下图:

【转】制作软件自动安装,软件全自动安装包解析

【转】制作软件自动安装,软件全自动安装包 经常需要帮别人安装一些常用软件,“下一步”、修改安装目录等等,总得做很多重复的工作,很久之前就看到一些高手用autoit 来做一些软件的“自动安装”,软件的整个安装过程是全自动的,不需要点击或者输入任何东西,非常方便。 方法一: 由于对autoit不是很了解,一直没做出自己需要的“自动安装”,虽然也尝试用其他的工具制作过类似的“自动安装”,但是效果不是太好。 今天无意看到一篇文章《制作软件自动化安装的最简便的方法[By Gooker]》,如茅塞顿开,获益匪浅,感谢原作者。 下载自动化编写任务脚本autoit v3.2.55中文绿色版-目前最新是v3版本,类似BASIC语言风格的脚本程序的免费软件,它被设计用来在Windows GUI中进行自动操作.通过它可以组合使用模拟键击,鼠标移动和窗口/控件操作等来实现自动化任务,这是其它语言所无法做到或尚无可靠方法实现的。 这个方法不是用别的工具,正是AU3自带的。最简便的方法是什么样子的: 执行一遍软件的安装,就出来代码了,编译一下就出来工具了。 OK,先说明用的不是用Autoit宏生成器,总感觉那个玩意不准(不知道是不是没用过的原因),其实可能大家也在使用的时候碰到过,偶然按出来了,或者老手都知道这个软件。 好了,现在告诉你如何做: 1、打开 目录是:AutoIt3\SciTe\ScriptWriter 下面的AU3Record.exe文件 2、主角就出现了,建议选中"Record Window Text"(记录窗口文字),另外"Record Mouse"必选,然后browse选择你想要自动安装的软件; 3、选择好之后就点击"Click To Record"的图标,之后就安装你的软件,你的操作都会被记录,这个记录方式是完全模拟的,包括鼠标的移动、点击等等; 4、软件安装完毕之后,我们点击右上角这个 完成,程序会自动把代码写到SciTE里面。

mfc简单绘图程序报告

简单绘图程序 1 需求说明 1.1 问题描述 设计一个简单的绘图应用程序,可以绘制图形或自由绘制线段,可以更改颜色、画笔粗细、保存文件。 1.2功能说明 1.图形绘制功能:直线、椭圆、矩形。 在菜单栏中选择需要的图形(也可以通过工具栏中选择)用鼠标便能在视图中绘出相应的图形。 2.可以绘制自由线段 3.对图形的操作:能通过菜单栏弹出对话框选择线宽、自定义颜色,也可以擦除绘制的线段。 4.可以保存绘图文件,保存后打开可以继续绘制。 2.1.3 数据说明 在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。在CDzyView类中添加一个私有变量xz;用来保存用户的选择(直线、矩形、椭圆、自由绘图)在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标停止移动时得到另外一个点。为视图类CDzyView分别捕获鼠标左键按下和弹起这两个消息。当鼠标左键按下时,需要将鼠标当前按下点保存至sx、sy,在鼠标移动停止后,将当前坐标保存至ex,ey.

其他主要数据说明: int fd 判断是否为自由绘图模式int w 线宽 int R RGB中的R int G RGB中的G int B RGB中的B CGraph类中 int m_nType:保存后重绘时用户的选择int qdx; 重绘起点x int qdy; 重绘起点y int zdx; 重绘终点x int zdy; 重绘终点y CLine类中 int cx; 重绘线宽 int sx; 重绘起点x int sy; 重绘起点y int zx; 重绘终点x int zy; 重绘终点y int w; 重绘线宽 自定义颜色对话框关联变量: IDC_EDIT_RED int m_Red IDC_EDIT_GREEN int m_Green IDC_EDIT_BLUE int m_Blue IDC_SCROLL_RED CScrollBar m_Sred IDC_SLIDER_GREEN CSliderCtrl m_Sgreen IDC_SPIN_BLUE CSpinButtonCtrl m_Sblue 2 分析、设计与实现 2.1 主要功能设计与实现

使用Visual Studio 2010 打包安装程序

打包程序: 1,解决方案—右键菜单“添加”—新建项目—其他项目类型—安装和部署—Visual S tudio Installer—安装项目,输入名称Setup1,点“确定” 2,添加开始程序中的文件夹:右击左侧“应用程序文件夹”—添加—文件夹,自己设置名称。这里的作用就是好管理,这里我就叫它“测试打包系统”;然后再右击左侧“用户的程序菜单”—添加—文件夹,自己设置名称,这里我就叫它“测试打包系统”。

3,添加主输出:右击左侧“应用程序文件夹”—测试打包系统(即刚刚创建的文件夹),添加—项目输出-主输出-确定。 下一步:添加主输出

4,添加开始程序中和桌面的主程序快捷方式:单击左侧“应用程序文件夹”—测试打包系统(即刚刚创建的文件夹),右键菜单“创建主输出来自***的快捷方式”,命名为“测试打包系统”。然后将其分别拖到左侧“用户的程序菜单”—测试打包系统(即刚刚创建的文件夹)和左侧“用户桌面”(或单击左侧刚新建的文件夹--右侧右键—创建新的快捷方式--选择“应用程序文件夹”---主输出--“确定” ;单击左侧用户桌面--右侧右键—创建新的快捷方式---选择“应用程序文件夹”---主输出---确定)

5,设置程序图标:先把图标文件放到你的程序目录下---单击左侧“应用程序文件夹”---Images(自己创建的文件夹),---空白处右键—添加—文件---图标文件。然后左侧“用户的程序菜单下”的文件夹---单击刚才新建的程序快捷方式---属性窗口---Icon—浏览—图标文件---确定。同理添加“用户桌面”里快捷方式的图标。 添加"快捷方式的属性"

Autoit制作软件自动安装包

经常需要帮别人安装一些常用软件,“下一步”、修改安装目录等等,总得做很多重复的工作,很久之前就看到一些高手用autoit 来做一些软件的“自动安装”,软件的整个安装过程是全自动的,不需要点击或者输入任何东西,非常方便。 方法一: 由于对autoit不是很了解,一直没做出自己需要的“自动安装”,虽然也尝试用其他的工具制作过类似的“自动安装”,但是效果不是太好。 今天无意看到一篇文章《制作软件自动化安装的最简便的方法[By Gooker]》,如茅塞顿开,获益匪浅,感谢原作者。 下载自动化编写任务脚本autoit v3.2.55中文绿色版-目前最新是v3版本,类似BASIC语言风格的脚本程序的免费软件,它被设计用来在Windows GUI中进行自动操作.通过它可以组合使用模拟键击,鼠标移动和窗口/控件操作等来实现自动化任务,这是其它语言所无法做到或尚无可靠方法实现的。 这个方法不是用别的工具,正是AU3自带的。最简便的方法是什么样子的: 执行一遍软件的安装,就出来代码了,编译一下就出来工具了。 OK,先说明用的不是用Autoit宏生成器,总感觉那个玩意不准(不知道是不是没用过的原因),其实可能大家也在使用的时候碰到过,偶然按出来了,或者老手都知道这个软件。 好了,现在告诉你如何做: 1、打开 目录是:AutoIt3\SciTe\ScriptWriter 下面的 AU3Record.exe文件 2、主角就出现了,建议选中"Record Window Text"(记录窗口文字),另外"Record Mouse"必选,然后browse选择你想要自动安装的软件; 3、选择好之后就点击"Click To Record"的图标,之后就安装你的软件,你的操作都会被记录,这个记录方式是完全模拟的,包括鼠标的移动、点击等等; 4、软件安装完毕之后,我们点击右上角这个

打包过程vs2010(包含卸载功能、生成一个exe文件)

1、在vs2010 选择“新建项目”----“其他项目类型”----“Visual Studio Installerà“安装项目”: 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的…程序?菜单”表示:应用程序安装完,用户的“开始菜单”中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、应用程序文件夹中点右键添加文件:表示添加要打包的文件;

添加的文件一般是已经编译过应用程序的debug目录下的文件; 如果debug 下面有子文件夹则需要“添加文件夹”,例如:data

然后把对应的子文件里的内容添加到此文件夹中; 把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 3、在创建的项目名称(Setup1)上点击右键:属性

选择系统必备 然后选择.NET的版本,和Windows Installer3.1(可选项)

选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork 组件;但是安装包会比较大。 VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”à“启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0;

轻松制作绿色软件安装文件

安装文件制作之宝典 自己开发了小程序,或是制作的小课件,或是改写了一个软件之类的东东,和网友交 流时,总希望对方收到后安放在指定的地方,运行特定的文件。平时大多采用压缩文件格 式,但使用时总有不尽人意的地方,其实,我们完全可以自己动手,制作出个性化的安装 文件,一个安装文件搞定所有的事情。 借用winrar 工具 Winrar 是大家最常用的压缩软件,利用它,我们可以很轻松的制作出安装文件 准备工作: 首先必须下载安装压缩软件WinRAR ,版本当然是越高越好;同时将要制作成安装文件 的所有程序文件放在一个文件夹中,(以下示范操作的文件夹为“我的作品”)如果还想使 自己的安装文件更专业,可准备自己的图标文件(32*32 ),程序说明文件和安装协议。(建 议作成txt 格式) 创建方法: 1. 进入文件目录,选择所需的文件然后单击右键,在弹出的菜单上选择“添加到压缩 文件”,打开WinRAR 的“压缩文件名和参数”对话框。 2. 如图1 所示,在“常规”选项卡上选择“创建自解压格式压缩文件”复选框,然后在“压 缩方式”下位列表中选择“最好”。 提示:WinRAR 的压缩方式分为六种:“存储”压缩方式的压缩率为0 ,“较快”和“最快”的压缩速度较快,但压缩率较低,“标准”方式是WinRAR 默认的压缩方式,“较好”和“最好”的压缩速度较慢,但压缩率较高。 3. 在“高级”选项栏内单击“自解压选项”按钮打开“高级自解压选项”对话框。 4. 在“高级自解压选项”对话框的“常规”选项卡上,“解压路径”文本框中填入要创建的安

装文件夹名称,我们可输入自己所需的名称如“我的作品、”,并选择“在Program Files 中创建”,接着,同时在“我的作品”文本框中输入要运行的主程序名称,如我的主程序名为“ srart.exe ”,这样,当用创建的这个安装程序安装好以后,s rart.exe 将会自动启动。 提示:这里我只输入了“我的作品”,是因为默认已经选择了“在'ProgramFiles' 中创建” 选项,这时RAR 能自动检测当前操作系统安装在哪个分区上,也就是说,如果您的XP 安 装在 D 分区,那么文件最终会被自动解压到我的作品目录中,这对于安 装了多系统的朋友不能不说是一项非常实用的功能。 5. 切换至“高级自解压选项”对话框的“高级”选项卡,单击“添加快捷方式”按钮打开“添 加快捷方式”对话框,在这个对话框上,我们可以在桌面、开始菜单、开始菜单/程序、以及启 动组中添“查看电脑配置”快捷方式,在这里我们选择“桌面”,在“源文件名”文本框中输入主程 序名称“everest.exe ,”“快捷方式名”中输入“查看电脑配置,”最后单击“确定”。 小提示:若您还想为everest.exe 添加其它位置上的快捷方式,可再次单击“添加快捷方式”按钮并按上述的方法添加。当快捷方式添加完成后,“高级”选项卡上会列出添加的所有快捷方式。 6. 切换至在“高级自解压选项”对话框的“模式”选项卡,在“安静模式”中选取“全部显示”,在“覆盖方式”中选择“覆盖所有文件”,当遇到同名文件后应直接覆盖。 小提示:“安静模式”的含义是在整个解压过程中是否显示默认解压路径等信息,这里由 于制作的是安装文件,所以选择“全部显示”。如果制作升级安装包,“覆盖方式”一定要选“覆 盖所有文件” 7. 在“高级自解压选项”对话框的“文本和图标”选项卡上,在“自解压文件窗口标题”文本 框中输入标题如“我的作品”,在“自解压文件窗口中显示的文本”文本框中输入安装任务的信息“这 是一款我自己改写的小软件,可以用它方便的查看你的计算机的硬件”,然后单击“浏览”,在

MFC实现简单画图形程序(学习相关)

《MFC编程及应用》课程设计报告题目:简单画图形程序 学号:姓名: 指导老师: 时间: 评语:

程序设计步骤: 一、建立基于对话框的应用程序框架; 二、CMy0910200155Dlg类中关键新增变量的作用: CPtrArray pta; //用于保存已绘图形的相关信息。 CMemoryNode *pmN; //指向CMemoryNode类的指针,程序运行过 程中动态保存对象信息。 CMemoryNode *pmn; //指向CMemoryNode类的指针,从文件中读 取信息时动态创建类的对象。 COLORREF m_CurrentBrushColor; //用于存放当前画刷的颜色。 COLORREF m_CurrentPenColor; //用于存放当前画笔的颜色。 int num; //用于存放从"Index.txt"文件中读取的数字。 int flag=0; //用于标识:当为1时,表示按下了”画图”按钮;当为2时, 表示按下了”撤消”按钮;当为3时,表示按下了”加载历史” 按钮,则从文件中读取信息。 int mark; //用于标识:当为0时,表示刚画过矩形;当为1时,表示 刚画过圆角矩形;当为2时,表示刚画过椭圆。 int index; //用于存放pta数组的容量。 int flag1=0; //用于标识,和flag搭配,用来处理多种情况下的窗口重绘 问题。 int ButtonState=0; //用于标识,是类CShow和类CMy0910200155Dlg 的一个接口,通过其值在1和0之间转换,来处理弹出式对 话框的初次绘制和移动时的重绘问题。

android apk安装包的制作过程图解

Android程序安装包APK的制作 完成Android项目后,需要将程序打包成APK文件(Android Package),其后缀名为".apk"。打包的APK 文件可以在Android模拟器或者Android手机上安装运行。 Android系统要求具有开发者签名的私人密钥的应用程序才可以被安装。 Android项目打包和生成数字签名可以使用命令行的方式,但Eclipse中的向导可以方便快捷的完成整个流程。 以HelloWorld为例,介绍如何生成APK。 Android项目编译运行后,右键单击项目名称,选择"Android Tools",再选择"Export Signed Application Package..."(输出签名的应用程序包)。 直接点击Next按钮,进入Keystore设置窗口。其中,Location为证书的目录地址,Password/Comfirm 为证书的密码。

打包程序时系统要求使用数字证书。如果没有数字证书,选择"Create new keystore",设置目录地址和密码,创建新的数字证书。 点击Next按钮,设置证书的信息。Alias:数字证书的名称;Password/Comfirm:证书的密码;Validity(years):证书的有效期;其他信息按需要填写。

完成证书信息设置后点击Next按钮,完成APK打包,如下图所示,生成的APK文件为:E:\Android\keystore\HelloWorld.apk。

如果已有数字证书,可以选择"Use existing keystore",然后点击Browser按钮进行选择,输入密码后点击Next按钮进行下一步。如果没有数字证书,选择"Create new keystore",设置目录地址和密码,创建新的数字证书。

MFC经典绘图方法总结

MFC经典绘图方法总结 Windows 绘图的实质就是利用windows提供的图形设备接口GDI(Graphics Device Interface)将图形会制在显示器上。 为了支持GDI绘图,MFC提供了两种重要的类: 设备上下文DC(Device Context)类,用于设置绘图属性和绘制图形; 绘图对象类,封装了各种GDI绘图对象,包括画笔、刷子、字体、位图、调色板和区域。 CDC类介绍: 在MFC中,CDC是设备上下文类的基类,派生类包括:CClientDC, CPaintDC, CWindowDC, CMetaFileDC类 CClientDC 客户区设备上下文,绘制客户区时 CPaintDC 一般发生在窗口需要重绘时 CWindwDC 可以绘制整个窗口,通常在窗口WM_NCPAINT消息的响应函数CWnd::OnNCPaint()中使用 CMetaFileDC 专门用于图元文件的绘制,图元文件记录一组GDI命令,重建图形输出。 CDC包含m_hDC和m_hAttribDC二个设备上下文。CDC指导所有对m_hDC的输出GDI调用(SetTextColor)以及对m_hAttribDC的大部分属性GDI调用(GetTextColor)。 CDC对象的重要函数如下: 1、为指定设备创建上下文virtual BOOL CreateDC(...) 比如创建一个为屏幕的设备上下文 CDC dc; dc.CreateDC("DISPLAY", NULL, NULL,NULL); 2、创建内存设备上下文,与指定设备上下文兼容virtual BOOL CreateCompatibleDC( CDC * pDC) 3、删除CDC对象对应的Windows设备上下文, 通常不调用该函数而是使用析构程序virtual BOOL DeleteDC(); 4、将HDC句柄转化为设备上下文的句柄: CDC *pDC=CDC::FromHandle( hDC ) 5、选择GDI对象入选到设备上下文中,一共有五种形式: CPen * SelectObject( CPen * pPen) ; CBrush * SelectObject( CBrush * pBrush) ; virtual CFont * SelectObject( CFont * pFont) ; CBitmap * SelectObject( CBitmap * pBitmap) ; int SelectObject( CRgn * pRgn) ;

VS2005安装包打包教程

vs2005打包图解(含卸载功能) (2009-04-17 20:33:09) 转载▼ 标签: vs2005打包图解 卸载 it 分类:编程 该打包过程在vs2005中完成,但也适用于vs2008,程序是用c#写的。 1.新建安装和部署。 打开你所写的项目,在解决方案上右键->添加->新建项目。如图: 选择其他项目类型->安装和部署->安装项目。在名称中把名字改为你所希望的名字,然后确定。如图:

2.确定后打开文件系统,然后单击应用程序文件夹,在右边空白处右键->添加->项目输出。如图: 3.选择主输出,然后确定。这时文件系统中的应用程序文件夹如图: 4.在刚添加的主输出上右键,创建其快捷方式。可以重命名也可不重命名。这里命名为PicSee。 如图:

5.剪切刚创建的快捷方式,然后单击用户的程序菜单,在其上右键,添加,文件夹,重命名文件夹。这个文件夹名字就是你在开始,所有程序中显示的名字。然后单击刚创建的文件夹,在右边空白处粘贴快捷方式,安装好程序后,这个快捷方式会出现在所有程序中。如图: 6.像上面一样再创建一个快捷方式,剪切,然后单击用户桌面,粘贴。安装完程序后,这个快捷方式出现在桌面。如图: 7.右击左边的"应用程序文件夹"打开属性对话框: 将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉, 不然的话做好的安装程序默认安装目录会是"c:\programm file\你的用户名\安装解决方案名称"。 8.右键你的安装项目名,属性。如图:

在打开的属性页中,选择"系统必备",在打开的系统必备页中,选中如下图中的选择项,选上以后,在生成的安装文件包中包含.netframework组件,然后确定。

软件自动安装包制作(InstallRite)图文教程

软件自动安装包制作(InstallRite)图文教程 现在越来越多的朋友在研究软件自动安装,各种各样的方法层出不穷,本人比较懒,喜欢用比较简单和快速的方法,找了N久让我找到了这个InstallRite这个软件,经过试用和测试,个人认为还是比较简单且容易上手的东西,现在发出来和大家分享下: 首先下载并安装InstallRite,打开InstallRite.exe,看到如图所示: 点击安装新的软件并接创建一个安装包,看到如图所示:

下一步:

下一步:这里建议关闭所有运行着的程序,因为你在安装软件的期间如果其它软件正在硬盘些东西又或者在注册表添加东西都会被InstallRite所监听到。 这时InstallRite会自动扫描系统目录和注册表并创建一个快照,如图: 扫描完毕之后选择需要安装的软件,然后点下一步进行安装,怎么安装软件就不用我说了吧! 等到你需要安装的软件安装完毕之后你会看到下面的提示:

直接点下一步,这时InstallRite会自动对比软件安装之前和安装之后系统的所有改变: 对比完毕之后要求你输入你所安装程序的名字,输入之后点确定。

点击确定之后就会出现如下界面: 这时你可以直接点击构建安装包来生成自动安装的程序,如果我们还需要进一步调整的话就先点击完成回到软件初始界面然后再点击检查安装打开如下界面:

在这里你可以删除一些你不希望创建的文件,比如一些快捷方式和临时文件。如果你的其它程序正在处于运行状态也会被InstallRite监听,如杀毒软件,QQ等等。所以我们将一些自己觉得没必要的文件删除掉尽量减少文件的大小。清理完毕之后直接关闭窗口再打开InstallRite初始界面,现在可以点击初始界面里的构建一个安装包了: 选中我们刚才安装的软件之后直接点击确定然后保存。当点击保存之后就会出现如下窗口:

vs2010发布、打包安装程序(超全超详细)

1、在vs2010 选择“新建项目”→“其他项目类型”→“Visual Studio Installer→ “安装项目”: 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示 的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、应用程序文件夹中点右键添加文件:表示添加要打包的文件;

添加的文件一般是已经编译过应用程序的debug目录下的文件; 如果debug 下面有子文件夹则需要“添加文件夹”,例如:data 然后把对应的子文件里的内容添加到此文件夹中;

把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 3、在创建的项目名称(Setup1)上点击右键:属性 选择系统必备:

然后选择.NET的版本,和Windows Installer3.1(可选项) 选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;但是安装包会比较大。

VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”“启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0;

基于MFC的OpenGL绘图

基于MFC的OpenGL绘图 本文更新版本请点击 [置顶]《基于MFC的OpenGL编程》系列文章 一、简介 GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC")。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定了一个当前RC,在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但在单一线程中只有一个当前RC。下面我将首先产生一个OpenGL RC并使之成为当前RC,这将分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。 二、MFC中的OpenGL基本框架 1、首先创建工程 用AppWizard产生一个MFC EXE项目,其他默认即可。 2、将此工程所需的OpenGL文件和库加入到工程中 在工程菜单中,选择"Build"下的"Settings"项。单击"Link"标签,选择"General"目录,在Object/Library Modules的编辑框中输入"opengl32.lib glu32.lib glut.lib glaux.lib"(注意,输入双引号中的内容,各个库用空格分开;否则会出现链接错误),选择"OK"结束。然后打开文件"stdafx.h",加入下列头文件: #include #include 3、改写OnPreCreate函数并给视图类添加成员函数和成员变量

OpenGL需要窗口加上WS_CLIPCHILDREN(创建父窗口使用的Windows风格,用于重绘时裁剪子窗口所覆盖的区域)和WS_CLIPSIBLINGS(创建子窗口使用的Windows风格,用于重绘时剪裁其他子窗口所覆盖的区域)风格。把OnPreCreate改写成如下所示:BOOL COpenGLDemoView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS); return CView::PreCreateWindow(cs); } 产生一个RC的第一步是定义窗口的像素格式。像素格式决定窗口着所显示的图形在内存中是如何表示的。由像素格式控制的参数包括:颜色深度、缓冲模式和所支持的绘画接口。在下面将有对这些参数的设置。我们先在COpenGLDemoView的类中添加一个保护型的成员函数BOOL SetWindowPixelFormat(HDC hDC)(用鼠标右键添加)和保护型的成员变量:int m_GLPixelIndex;并编辑其中的代码如下: BOOL COpenGLDemoView::SetWindowPixelFormat(HDC hDC) {//定义窗口的像素格式 PIXELFORMATDESCRIPTOR pixelDesc= { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL| PFD_DOUBLEBUFFER|PFD_SUPPORT_GDI, PFD_TYPE_RGBA, 24, 0,0,0,0,0,0, 0, 0,

相关文档
相关文档 最新文档