VS教程Word文件下载.docx
《VS教程Word文件下载.docx》由会员分享,可在线阅读,更多相关《VS教程Word文件下载.docx(176页珍藏版)》请在冰点文库上搜索。
![VS教程Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/9afa7808-493f-4e1e-977f-04de4d5039b7/9afa7808-493f-4e1e-977f-04de4d5039b71.gif)
在Windows中,用户既可以使用键盘来操作,也可以使用鼠标来操作,而且鼠标既可以点击菜单,也可以点击工具栏。
为了使处理方式简单化,在Windows中,程序使用了一种称为消息的模式来获取用户的输入。
一个消息由一组4个数据组成,分别是消息的类型,接受消息的窗口,消息中包含的数据(两个32位的整型数,分别命名为wParam和lParam)。
比如说用户选择了某个菜单项,Windows系统就向相应的窗口发送如下的消息:
消息类型:
WM_COMMAND//表示是一个命令消息
接受消息的窗口:
A
wParam:
菜单项的代号
lParam:
空
一般在Windows程序中都会设置一个无限循环来获取消息并根据所获取的消息调用相应的消息处理函数,如下所示:
//Mainmessageloop:
while(GetMessage(&
msg,NULL,0,0))
{
if(!
TranslateAccelerator(msg.hwnd,hAccelTable,&
msg))
{
TranslateMessage(&
msg);
DispatchMessage(&
}
}
GetMessage()函数获取当前发送给该窗口的消息,TranslateMessage()函数把消息翻译一下,然后由DispatchMessage()函数调用相应的消息处理函数来执行对应的功能。
在Windows中界面是由窗口构成的,那么程序如何创建窗口呢?
这需要用到一个叫做CreateWindow()的函数,这个函数负责创建一个窗口,并设定窗口的大小,位置,标题文字,风格,窗口的消息处理函数等等。
在创建好了窗口之后,程序还要负责在窗口中显示内容,否则的话窗口就像是透明的,可以看到窗口后面的东西。
这项工作也是在一个消息处理函数中完成的。
但为什么是在一个消息处理函数中完成而不是调用一个普通的绘图函数?
这是因为Windows的显示方式和DOS不一样。
在DOS中,由于一次只能运行一个程序,所以一个程序显示的文字不会被别的程序抹掉,而在Windows中,由于可以有多个程序同时运行,因此如果A程序在窗口中显示了内容后就不去管它的话,一旦用户切换到别的程序,而那个程序的窗口和A程序的窗口又有重叠时,那个程序就会把A程序窗口中的内容给覆盖掉,代之以它的内容。
那么等到用户使用完那个程序后回到A程序,A程序窗口中的内容就将是那个程序的内容了。
为了避免这种情况的发生,在Windows中一个窗口什么时候应该显示内容是由Windows系统本身来控制的,如果Windows系统发现一个窗口被激活了,需要更新它窗口中的内容,它就会发送一条名为WM_PAINT的消息给那个窗口,通知它“你要更新一下你窗口里面的内容了!
”。
所以在Windows程序中,几乎所有的显示工作都是在WM_PAINT的消息处理函数中完成的。
由于Windows程序运作机制的复杂性,如果仅仅使用WindowsAPI函数来写Windows程序的话,一般一个最小的Windows程序也需要一百多行的代码,这和DOS下的程序往往寥寥数行就可以解决问题形成了鲜明的对比。
为了解决Windows程序开发繁琐的问题,微软推出了一套名为.NetFramework(简写为.Net)的C++类库,旨在简化Windows软件的开发。
在这套类库中,几乎所有常用的WindowsAPI函数都被封装在相应的类里面,而且.NetFramework还提供了一套现成的程序模版,通过对模版程序的简单修改,程序员就能够很快的编写出一个标准的Windows程序。
第二章Windows编程初步
下面几章的重点就将讲述如何使用.NetFramework来开发Windows程序。
首先先介绍一下开发用的软件:
VisualStudio2005。
这是微软公司推出的一套专门用于开发Windows程序的开发环境。
在这个环境中,可以完成各种Windows软件的开发。
1.第一个程序
启动VisualStudio2005后可以看到类似下面的界面:
在VisuallStudio2005里面写程序,哪怕是很小一个程序都需要建立一个项目,项目实际上就是一堆文件的集合。
因为在编写大型软件时往往一个软件会由几千个源文件组成,为了保证可以轻松的找到需要的文件,VisuallStudio2005中采用“项目”和“解决方案”这两个概念来管理所有这些文件。
“解决方案”包括所有的文件,可以包含多个“项目”,每一个项目是一个独立的程序,也可以是一个供其它项目使用的公共库。
下面给出建立一个项目的具体步骤:
选菜单“文件/新建/项目”,如下图所示:
项目的名称设为“DemoOne”,类型为“CLR控制台应用程序”,解决方案的名称设为“Demo”,如下图所示:
点击“确定”按钮后一个新的解决方案和项目就建立好了,如下图所示:
现在在源代码窗口中输入如下的代码:
#include"
stdafx.h"
usingnamespaceSystem;
intmain(array<
System:
:
String^>
^args)
{
Console:
WriteLine(L"
HelloWorld!
\n"
);
Press'
Enter'
keytoquit............"
Console:
ReadLine();
return0;
}
这是一个传统的命令行程序,现在来执行这个程序,点击如下图所示的菜单就可以运行程序了:
如果是第一次运行VisuallStudio2005,可能会出现如下的提示,这时点击“是”就可以了。
程序的运行结果如下(按下回车键结束程序):
第一个小程序就写好了,但是这是一个传统的命令行程序,体现不出Windows编程的特点,所以下面再来写一个真正具有Windows风格的程序。
刚才已经建立了一个“解决方案”和一个“项目”,现在在这个“解决方案”中再添加一个“项目”,在“解决方案”名字上点击鼠标右键,选择“新建项目”,如下图所示:
这时会出现一个对话框,让用户选择项目的类型,现在要写的是一个Windows程序,所以选择“Windows窗体应用程序”,然后在“名称”一栏里面填入项目的名字,在这里叫它“Hello”,如下图所示:
项目建立好了就会出现如下图所示的界面,一个空白的窗体。
在上图中可以看到,现在有两个项目在解决方案“Demo”里面,一个叫“DemoOne”,一个叫“Hello”,这两个程序互相不会影响。
注意到其中“DemoOne”的字样是粗体,这表示“DemoOne”这个项目是启动项目,这就是说,用户点击“启动调试”菜单运行程序时,“DemoOne”这个程序将被运行,但是现在需要调试的是“Hello”这个程序,所以需要把“Hello”设为启动项目,这只需在“Hello”上面点击鼠标右键,选“设为启动项目”就可以了,如下图所示:
现在这个空白的窗体程序什么事情都干不了,但是这个程序是个很好的起点,用户可以在它的基础上添加各种其它的功能。
下面给它添加一个按钮:
首先将鼠标箭头移到屏幕右侧的“工具箱”标签上面,这是屏幕右边会弹出一个“工具箱”窗口,里面列出了各种各样的窗口控件,如下图所示:
这时用鼠标左键点一下“Button”工具,如下图所示:
然后在“Form1”窗体上面拉出一个按钮,如下图所示,系统会自动的给这个按钮起个名字叫“Button1”:
按钮是做好了,但是这时的按钮还只是个摆设,没有实际的功能,也就是说,当运行程序,按下这个按钮的时候,什么事情都不会发生。
这是因为程序中所有的功能都必须由相应的代码来实现,而现在并没有为按下按钮这个操作编写代码,所以当然按钮被按下时就什么也不会发生了。
现在来为“按下按钮”这个操作写一些代码。
用鼠标左键双击屏幕上面的“Button1”按钮,此时VisuallStudio2005会自动的将屏幕切换到代码窗口,并给“Button1”按钮添加一个按钮被按下时的响应函数,如下图所示:
这个函数名字叫button1_Click,其中button1是按钮的名字,Click表示这个函数将在按钮被点中时执行。
现在来给它添加一个功能,让按钮在被按下时弹出一个消息框,上面写着“WelcometouseVisualC++2005”。
为了完成这个功能,需要调用系统的一个函数MessageBox:
Show(),这个函数的功能就是弹出一个消息框。
具体的代码如下:
private:
System:
Voidbutton1_Click(System:
Object^sender,System:
EventArgs^e){
MessageBox:
Show("
Hello!
"
"
WelcomeToUseVisualC++2005"
}
代码写好后就可以运行这个程序来看看效果了。
同样选菜单“调试/启动调试”,或者直接按下快捷键“F5”就可以运行程序了,如下图所示:
还可以按下下图中所示的“启动调试”按钮,也可以运行程序,这是一个快捷按钮:
程序运行成功,如下图所示:
现在来点击一下窗口中的“button1”按钮,看看是不是有如下图所示的消息框弹出来?
2.查看系统库函数的帮助说明
在开发Windows软件的过程中需要调用大量的系统库函数,如果在写程序的时候看到一个库函数不知道它的用法,可以把光标移动到这个函数上面,然后按下“F1”键,就可以看到关于这个函数的帮助说明了。
第一次使用这个功能的时候系统可能会显示如下图所示的提示,这时可以选择“使用本地帮助做为主要源”:
以系统库函数“Console:
WriteLine”为例,可以看到如下图所示的帮助说明:
3.设置控件的属性
现在程序运行后窗口的标题还是“Form1”,这个是系统自动给起的名字。
新的程序需要以自己的名字命名,那么怎么给窗口改名字(标题)呢?
很简单,只要在窗体上按下鼠标右键,就会弹出一个菜单,如下图所示:
点击“属性”,这是屏幕右边就会弹出一个琳琅满目的属性设置框,里面显示了这个窗口的各种可以修改的属性,或者叫参数,如下图所示:
修改其中的“Text”属性,如上图所示。
把它改成“第一个程序”,改完后会发现窗口的标题立即就换成了“第一个程序”,如下图所示:
第一步修改完成了。
现在进一步把那个叫“button1”的按钮的名字也改掉,毕竟一个按钮叫“button1”,用户会不知道这是什么意思。
用鼠标左键点中按钮“button1”,在右侧的属性设置框中修改“Text”属性,如下图所示:
把它改成“执行”,改好后按钮上面的字会立即变成“执行”,如下图所示:
现在再来运行一下这个程序,看看界面是不是改过来了?
如下图所示:
4.完成的程序
下面把完整的源代码列在这里,以供参考:
#pragmaonce
namespaceHello{
usingnamespaceSystem;
usingnamespaceSystem:
ComponentModel;
Collections;
Windows:
Forms;
Data;
Drawing;
///<
summary>
///Form1摘要
///
///警告:
如果更改此类的名称,则需要更改
///与此类所依赖的所有.resx文件关联的托管资源编译器工具的
///“资源文件名”属性。
否则,
///设计器将不能与此窗体的关联
///本地化资源正确交互。
/summary>
publicrefclassForm1:
publicSystem:
Forms:
Form
public:
Form1(void)
InitializeComponent();
//
//TODO:
在此处添加构造函数代码
protected:
///<
///清理所有正在使用的资源。
~Form1()
if(components)
{
deletecomponents;
private:
Button^button1;
///必需的设计器变量。
System:
ComponentModel:
Container^components;
#pragmaregionWindowsFormDesignergeneratedcode
///设计器支持所需的方法-不要
///使用代码编辑器修改此方法的内容。
voidInitializeComponent(void)
this->
button1=(gcnewSystem:
Button());
SuspendLayout();
//
//button1
button1->
Location=System:
Drawing:
Point(73,70);
Name=L"
button1"
;
Size=System:
Size(133,75);
TabIndex=0;
Text=L"
执行"
UseVisualStyleBackColor=true;
Click+=gcnewSystem:
EventHandler(this,&
Form1:
button1_Click);
//Form1
AutoScaleDimensions=System:
SizeF(6,13);
AutoScaleMode=System:
AutoScaleMode:
Font;
ClientSize=System:
Size(292,271);
Controls->
Add(this->
button1);
Form1"
第一个程序"
ResumeLayout(false);
#pragmaendregion
};
5.输入数据的控件
一般Windows里面的应用程序都需要用户输入数据的,这个程序也不例外。
下面就来给它添加输入数据的功能。
首先把执行按钮缩小并移动到窗口下面,然后在右侧的工具箱中选取“TextBox”工具,如下图所示:
在窗口中拉出一个输入框,如下图所示:
在右侧的属性修改框中将它的名字改成“InputLine”,如下图所示:
这是将会发现代码中多了一行关于这个输入框的声明,如下图所示:
然后在函数button1_click中添加如下的代码:
String^line="
你输入的是:
+InputLine->
Text;
Show(line);
按下“F5”键执行程序,在输入框中输入“aaa”,如下图所示:
然后点击“执行”按钮,就会弹出如下图所示的消息框:
现在屏幕上的输入框没有任何提示,用户使用这个程序会不知道要输入什么东西。
下面来给它加个提示。
在右侧的工具箱里选“Label”工具,如下图所示:
在窗体中拉出一个提示标签,如下图所示:
点中这个标签,在右侧的属性修改框中把“Text”一栏改为“请输入一些文字”,如下图所示:
运行程序就会发现现在输入框有了提示文字,如下图所示:
第三章Windows编程进阶
公司人事档案管理软件
下面来学习设计一个公司人事档案管理软件,通过学习设计这个软件,将会学到很多新的控件的使用方法。
新建一个项目“HRManagement”,如下图所示:
把Form的尺寸拉大一些,因为将要在里面加入很多控件,如下图所示:
1.列表框控件
首先给Form添加一个“员工列表”列表框,点击“工具箱”里面的“ListBox”控件,如下图所示:
在Form里面拉出一个列表框,并将其命名为“EmployeeList”,如下图所示:
然后在Form里面加入一个“姓名”输入框,将其命名为“EmployeeName”,如下图所示:
2.单选框控件
如上图所示在“工具箱”里面选中“GroupBox”控件,在Form里面拉出一个“性别”框,然后在“工具箱”里面选中“Radiobutton”控件,在“性别”框里面拉出一个“男”,一个“女”两个Radio按钮,分别命名为GenderMale,GenderFemale,如下图所示:
3.组合框控件
如下图所示在“工具箱”里面选中“ComboBox”控件,在Form里面拉出一个“部门”选择框,命名为Department:
在这个“部门”选择框中用户可以选择这名员工是属于哪个部门的。
这就需要预先设置好各个部门的名称,这些数据将在“部门”选择框的属性中输入。
点击“部门”选择框,在右侧的属性修改框中找到名为“Items”的一栏,如下图所示:
点击右侧的“...”,将会弹出一个输入框,让你输入选择框里面将要显示的内容,比如说公司各个部门的名称,现在输入如下图所示的部门名称:
再给程序添加一个“电话”输入框,命名为Phone,如下图所示:
为了把“部门”和“电话”两个控件对齐排列,可以同时选择这两个控件,然后点击上图所示的“对齐”按钮就可以了。
4.复选框控件
选中工具箱里面的“CheckBox”,在Form里面添加一个“实习生”选框,命名为IsIntern,如下图所示:
再在Form里面添加一个“添加”按钮,命名为AddButton,如下图所示:
现在软件已经做了一半了,再给它添加一些代码,让它可以实际运行起来。
首先先新建一个文件叫Tools.h,输入下面的代码:
//HeaderfileforTools
namespaceHRManagement{
publicrefclassEmployeeRecord{
String^m_Name;
String^m_Gender;
String^m_Department;
String^m_Phone;
String^m_IsIntern;
String^m_Photo;
EmployeeRecord(){};
然后在Form1.h文件里面找到如下的这行代码:
在这个类里面添加如下的代码: