vc++vswindows编程与绘图程序设计.docx

上传人:b****5 文档编号:8001688 上传时间:2023-01-27 格式:DOCX 页数:84 大小:2MB
下载 相关 举报
vc++vswindows编程与绘图程序设计.docx_第1页
第1页 / 共84页
vc++vswindows编程与绘图程序设计.docx_第2页
第2页 / 共84页
vc++vswindows编程与绘图程序设计.docx_第3页
第3页 / 共84页
vc++vswindows编程与绘图程序设计.docx_第4页
第4页 / 共84页
vc++vswindows编程与绘图程序设计.docx_第5页
第5页 / 共84页
点击查看更多>>
下载资源
资源描述

vc++vswindows编程与绘图程序设计.docx

《vc++vswindows编程与绘图程序设计.docx》由会员分享,可在线阅读,更多相关《vc++vswindows编程与绘图程序设计.docx(84页珍藏版)》请在冰豆网上搜索。

vc++vswindows编程与绘图程序设计.docx

vc++vswindows编程与绘图程序设计

1Vc++2010开发平台概述

1.1Vc++2010概述

1.2VisualStudio2010集成开发环境

1.2.1安装VisualStudio2010

1.2.2配置VisualStudio2010

1.2.3解决方案和项目

1.2.4生成和调试工具

1.2.5部署工具

1.2.6Ribbon界面设计可视化

2VisualStudio2010MFC基本程序设计

2.1MFC应用程序概述

2.1.1简单的MFC应用程序

2.1.2MFC应用程序分析

2.2MFC应用程序的创建

2.2.1用AppWizard创建CLR控制台应用程序

2.2.2用AppWizard创建win32控制台应用程序

2.2.3用AppWizard创建一个MFC应用程序

1.打开vc++2010,从起始页中选择“新建项目”如图2.2.3.1。

图2.2.3..1

弹出图2.2.3.2所示界面,左侧选择“viaualc++语言”,中间选择“MFC应用程序”,

图2.2.3.2

名称为huitu,位置为桌面,点击“确定”,弹出图2.2.3.3界面。

图2.2.3`.3

然后一路点击下一步(或者直接点击“完成”),则自动生成一个MFC应用程序,此时查看生成的程序文件夹内包含的文件,如图2.2.3.4

图2.2.3`.4

Huitu文件夹内文件如图2.2.3.5

图2.2.3.5

点击启动调试工具拦(绿色三角,图2.2.3.6)或者按F5则系统调试运行,在弹出界面中选择是,弹出图2.2.3.7的程序运行界面。

图2.2.3.6

 

图2.2.3.7

此时再看程序文件夹内的文件如图2.8

图2.2.3.8

可以看见多了debug文件夹,分别打开debug文件夹以及huitu文件夹内的debug文件夹看看都多了啥文件。

至此,一个文正的MFC应用程序建立完成。

保存退出vc++2010,要再次进入刚才建立的应用程序,直接点击程序文件夹内的“huitu.sln”即可。

2.3MFC的类

2.3.1MFC应用程序中包含的类

2.3.2应用程序类

2.3.3主框架类

2.3.4视图类

2.3.5文档类

2.3.6对话框类

2.3.7菜单类

2.3.8线程基类

3Wndows窗体应用程序

3.1创建Wndows窗体应用程序

1.启动vc++2010,如图3.1.1。

图3.1.1

2.选择新建项目

在打开的窗口中,左侧语言选择vc++,窗口中间选择“windows窗体应用程序”,窗口下面“名称”填写form,工程位置为桌面(图3.1.2),点击确定,建成的应用程序界面如图3.1.3。

图3.1.2

图3.1.3

3.2窗体属性及设置

3.3窗体事件及处理

3.4窗体控件添加与编辑

4用户界面设计

4.1菜单设计

4.1.1菜单的类型

4.1.2菜单设计

建立菜单的过程如下:

1.打开工程。

打开前面建立的工程绘图(双击huitu工程文件夹中的huitu.sln)。

2.打开资源视图。

通过“视图-其他窗口-资源视图”菜单打开资源视图窗口,如图4.1.2.1,在vc++界面左侧显示资源视图窗口。

图4.1.2.1

3.添加菜单。

点击资源视图的menu,展开如图4.1.2.2所示

图4.1.2.2

可以看到在工程中有多个菜单,其中IDR_huituTYPE菜单是显示在各子文档界面中的菜单;IDR_MAINFRAME建立的菜单是程序主框架中显示的菜单(把所有子文档关闭后会显示);

在此双击IDR_huituTYPE,打开窗口如图4.1.2.3所示。

图4.1.2.3

在请在此处键入位置点击,光标激活后输入“直线”,同时会在文本框右边和下面分别出现写有“请在此键入”字样的文本框,右边的代表键入的直线菜单的子菜单,下面代表直线菜单同级的菜单,其他以此类推,选择直线菜单后,查看vc++界面中右下角的属性面板,可以看到“popup”属性设置的是“true”,代表直线菜单是弹出式菜单,它下面还有下一级菜单,否则,该属性如果设置为“false”,则它不能再添加子菜单了。

按照以上方法,在直线菜单下设置“直线1”,“直线2”两个子菜单,建立与直线同级的“圆”菜单,其下设置“圆1”,“圆2”两个子菜单,如图4.1.2.4。

图4.1.2.4

4.运行查看菜单。

按F5或者点击启动调试工具(绿色三角箭头),在探出的窗口中选择是,启动运行后测绘看到建立的菜单(图4.1.2.5)。

图4.1.2.5

5.为菜单添加函数并且编写代码

菜单添加后还不能运行,要想让它起作用,需要为其添加函数并在函数里添加代码,为菜单添加函数过程为(以直线1为例):

选择直线1,在属性面板中把ID属性右边的值改为ID_line1,然后通过“项目-类向导”打开类向导窗口(图1.1.2.6)

图4.1.2.6

类名处选择huituView,在命令标签列表中找到并点击ID_line1,在消息标签中点击COMMAND,如图4.1.2.7。

I

图4.1.2.7

再点击“添加处理程序”按钮,弹出添加函数对话框

图4.1.2.8

成员函数名称默认(也可以修改),点确定,则与菜单直线1对应的函数生成,此时可通过点击图4.1.2.7中的“编辑代码”进入函数,或者在vc界面右上角的“解决资源管理器”面板中展开源代码(图4.1.2.8),找到huituView.CPP双击该文件也可进入函数。

图4.1.2.8

在函数中的//TODO:

在此添加命令处理程序代码

下面添加

CClientDCdc(this);

dc.LineTo(500,500);

两句,如图4.1.2.9

图4.1.2.9

6.运行检验菜单功能

按F5运行程序后点击直线1菜单,可以看到在用户区画出一条直线。

4.1.3创建弹出式菜单

4.1.4创建动态菜单

4.1.5创建基于对话框的菜单

4.2工具栏设计

4.3状态栏设计

5对话框设计

5.1静态对话框

5.1.1静态对话框的建立过程

建立静态对话框的过程如下:

1.打开或建立工程。

按照前面方法打开或者建立一个工程(MFC工程或者窗体应用程序均可,此处以mfc工程为例)

2.打开资源窗口。

通过“视图-其他窗口-资源视图”打开资源视图窗口。

3.建立对话框。

在资源视图的DIALOG文件夹上单击右键选择insertdialog,弹出新建的对话框,根据需要可以修改对话框属性面板中的属性值。

4.添加对话框类。

在建立的该对话框上双击鼠标左键,弹出添加类向导,根据提示设置好参数后确认,则建立了与对话框对应的对话框类。

5.1.2静态对话框的应用

对话框的应用一般是实现人机交互,以下结合huitu工程中的直线2菜单说明对话框的应用,功能为点击直线2菜单,弹出对话框,在对话框里设置好直线的起点与终点坐标并确认后在客户区画出设置的起点到终点的直线。

1.打开工程。

双击huitu.sln打开工程。

2.添加对话框。

通过“视图-其他窗口-资源视图”打开资源视图,在资源视图的DIALOG文件夹上单击右键选择insertdialog,弹出新建的对话框(图5.1.2.1),在属性面板中把对话框的ID属性修改为:

IDD_line2_dlg。

图5.1.2.1

3.建立对话框类。

在建立的对话框上双击鼠标左键,弹出建立对话框类向导,名称中输入line2dlg,基类选择CDIalog(图5.1.2.2),点击完成,完成对话框类的建立,可以看到在解决资源管理器的头文件和源文件中已经建立了相应的件。

图5.1.2.2

4.添加控件。

在对话框上从工具箱中添加四个静态文本框、四个编辑文本框、一个按钮,静态文本框的caption属性分别改为:

起点x坐标,起点y坐标,终点x坐标,终点y坐标,按钮caption属性改为“确定”。

如图5.1.2.3.

图5.1.2.3

5.为编辑文本框添加变量。

要使用文本框,必须为其添加对应的变量,选择第一个文本框,点击“项目-类向导”菜单打开类向导,选择“成员变量”标签(图5.1.2.4),鼠标点击IDC_EDIT1(编辑文本框1对应的ID),点击右边的添加变量按钮弹出添加变量窗口。

图5.1.2.4

图5.1.2.5

在变量设置窗口中,成员变量名称输入m_line1x,类别选择value,类型选择long(图5.1.2.5).点确定。

用同样的方法为其他三个编辑框添加变量,结果如图5.1.2.6所示。

图5.1.2.6

6.为按钮添加函数,获取数据。

为了点击按钮确定后获取坐标数据以便于画直线,需要为按钮添加函数,选择前面添加的按钮“确定”,通过“项目-类向导”菜单打开类向导,选择命令标签,点击确定按钮的ID(IDC_BUTTON1),点击消息列表中的BN_CLICKED(代表鼠标点击时触发函数或者事件运行),见图5.1.2.7,击添加处理程序,弹出处理程序对话框,默认之后点击确定则为按钮添加了对应的函数,双击line2dlg.cpp会看见添加了如下函数:

voidline2dlg:

:

OnClickedButton1()

{

//TODO:

在此添加控件通知处理程序代码

}

图5.1.2.7

7.编写代码获取数据。

在前面添加的按钮函数中编写如下代码获取数据:

UpdateData(true);

CDialog:

:

EndDialog(0);//结束对话框

该函数的作用是把输入文本框的坐标数据赋值到对应的变量中,即四个文本框对应的变量line1x,line1y,line1endx,line1endy。

如果代码为

UpdateData(false);

则是指把变量中的数值显示到变量对应的文本框中。

CDialog:

:

EndDialog(0);

是为了结束对话框。

8.为菜单添加代码,画对话框设置坐标的的直线。

点击资源视图中的menu文件夹展开,双击IDR_huituTYPE菜单,选择直线2菜单,把属性中的ID属性改为ID_line2,通过“项目-类向导”打开类向导,类名选择Chuituview,命令标签中的对象选择ID_line2,消息选择COMMAND(图5.1.2.8),点击添加处理程序,弹出窗口中默认确定,则自动打开ChuituView.cpp,并且光标定位到该函数中,代码如下:

voidChuituView:

:

OnLine2()

{

//TODO:

在此命令处处理程序代码

}

图5.1.2.8

定位到该代码窗口的最上端头文件处,添加以下一句:

#include"line2dlg.h"

目的是把对话框类包含进来,否则系统不认对话框中的信息。

然后再online2()函数中添加如下代码:

line2dlgdlg;//生成对话框对象

dlg.DoModal();//显示对话框

CClientDCdc(this);//生成设备环境对象,获取设备环境

dc.MoveTo(dlg.m_line1x,dlg.m_line1y);//定位到起点坐标

dc.LineTo(dlg.m_line1endx,dlg.m_line1endy);//从起点到终点画直线

9.运行程序。

编译运行,点击直线2菜单会弹出对话框,在对话框中设置好起点终点坐标后点确定,则在客户区画出指定坐标的直线。

5.2非静态对话框

5.3通用对话框

6常用控件

6.1公共控件

6.2容器

6.3数据控件

 

7键盘鼠标事件

7.1键盘事件

为了使用户掌握键盘消息及其处理消息,介绍一个键盘消息处理实例。

1.实例说明

本实例通过工程向导创建一个单文档工程,在其中响应键盘的WM_KEYDOWN、WM_KEYUP、WM_CHAR消息,实现下面的功能:

当用户按下了Shift键,在视图窗口中显示提示信息“用户按下了Shift键”;

当用户释放了Shift键时,在视图窗口中显示提示信息“用户释放了Shift键!

”;

当用户按下了Shift键后又按下了字符“B”键,在视图窗口中显示提示信息“用户同时按下了Shift键和B键”(即输入B键或b键)。

2.开发过程

(1)创建工程。

利用MFCAppWizard[EXE]建立一个单文档的MFC工程“KeyboardDemo”。

(2)在ClassView选项卡上用鼠标右键单击该类,并从弹出的快速菜单中选择[AddMemberVariable…]

菜单命令,为KeyboardDemoView类添加一个新的成员变量bShiftdown,将此成员变量的类型设置为BOOL,并将其访问权限设置为Private,

单击[OK]按钮,完成成员变量的添加操作。

按照同样的方法,再添加2个BOOL型private成员变量bShiftup和bShiftB,

接下来在KeyboardDemoView构造函数中给三个指示变量赋初值”false”。

代码如下:

CKeyboardDemoView:

:

CKeyboardDemoView()

{

bShiftdown=bShiftup=bShiftB=false;//赋初值

}

(3)利用“建立类向导”添加键盘消息及处理函数,步骤如下:

在”ClassName”列表框中,选择键盘消息的处理函数”CKeyboardDemoView”,在”ObjectIDs”列表框中选择“CKeyboardDemoView”,

则在“Message”列表框中,列出了MFC为其预定义的消息,分别选择WM_KEYDOWN、WM_KEYUP、WM_CHAR消息,

单击“AddFunction”按钮,MFC就会为其自动添加相应的消息映射宏和消息处理函数。

(4)添加实现代码:

在资源文件“KeyboardDemoView.cpp”中添加各键盘消息函数的实现代码。

OnKeyDown函数的代码如下:

voidCKeyboardDemoView:

:

OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)

{

if(nChar==VK_SHIFT)//判断Shift键是否被按下

{

bShiftdown=true;

bShiftup=false;

Invalidate(true);//显示信息

}

CView:

:

OnKeyDown(nChar,nRepCnt,nFlags);

}

注:

Invalidate(TRUE)将整个窗口设置为需要重绘的无效区域,它会产生WM_PAINT消息,这样OnDraw将被调用。

OnKeyUp函数的代码如下:

voidCKeyboardDemoView:

:

OnKeyUp(UINTnChar,UINTnRepCnt,UINTnFlags)

{

if(nChar==VK_SHIFT)//判断Shift键是否被释放

{

bShiftup=true;

bShiftdown=false;

Invalidate(true);//显示信息

}

CView:

:

OnKeyUp(nChar,nRepCnt,nFlags);

}

OnChar函数的代码如下:

voidCKeyboardDemoView:

:

OnChar(UINTnChar,UINTnRepCnt,UINTnFlags)

{

//判断是否同时敲击了字符键B键和Shift键

if((nChar=='b')|(nChar=='B'))//if((nChar==66)|(nChar==98))

{

if(bShiftdown)

{

bShiftB=true;

bShiftdown=false;

Invalidate(true);

}

}

CView:

:

OnChar(nChar,nRepCnt,nFlags);

}

在资源文件”KeyboardDemoView.cpp”的OnDraw函数中,实现在客户区窗口输出按键提示信息。

代码如下:

voidCKeyboardDemoView:

:

OnDraw(CDC*pDC)

{

if(bShiftdown)//按下了Shift键

{

pDC->TextOut(20,20,"用户按下了Shift键!

");

}

if(bShiftup)//释放了Shift键

{

pDC->TextOut(20,20,"用户释放了Shift键!

");

}

if(bShiftB)//同时按下了Shift键和B键

{

pDC->TextOut(20,20,"用户同时按下Shift键和B键!

");

bShiftB=false;

}

}

举例:

CDC*pDC=GetDC();

if(nChar==VK_UP)

{

pDC->Ellipse(40,40,200,200);

}

键盘事件总结:

Vc++中键盘事件中函数原型如下(以键盘按下为例,其他类似)

OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)

其中:

nChar:

表示按键的字符代码。

nRepCnt:

表示按键的重复次数。

nFlags:

表示扫描码、先前键状态、键转换状态等。

nChar的取值表:

虚拟键码

对应值

对应键

VK_LBUTTON

1

鼠标左键

VK_RBUTTON

2

鼠标右键

VK_CANCEL

3

Cancel

VK_MBUTTON

4

鼠标中键

VK_XBUTTON1

5

 

VK_XBUTTON2

6

 

VK_BACK

8

Backspace

VK_TAB

9

Tab

VK_CLEAR

12

Clear

VK_RETURN

13

Enter

VK_SHIFT

16

Shift

VK_CONTROL

17

Ctrl

VK_MENU

18

Alt

VK_PAUSE

19

Pause

VK_CAPITAL

20

CapsLock

VK_KANA

21

 

VK_HANGUL

21

 

VK_JUNJA

23

 

VK_FINAL

24

 

VK_HANJA

25

 

VK_KANJI

25*

 

VK_ESCAPE

27

Esc

VK_CONVERT

28

 

VK_NONCONVERT

29

 

VK_ACCEPT

30

 

VK_MODECHANGE

31

 

VK_SPACE

32

Space

VK_PRIOR

33

PageUp

VK_NEXT

34

PageDown

VK_END

35

End

VK_HOME

36

Home

VK_LEFT

37

LeftArrow

VK_UP

38

UpArrow

VK_RIGHT

39

RightArrow

VK_DOWN

40

DownArrow

VK_SELECT

41

Select

VK_PRINT

42

Print

VK_EXECUTE

43

Execute

VK_SNAPSHOT

44

Snapshot

VK_INSERT

45

Insert

VK_DELETE

46

Delete

VK_HELP

47

Help

48

0

49

1

50

2

51

3

52

4

53

5

54

6

55

7

56

8

57

9

65

A

66

B

67

C

68

D

69

E

70

F

71

G

72

H

73

I

74

J

75

K

76

L

77

M

78

N

79

O

80

P

81

Q

82

R

83

S

84

T

85

U

86

V

87

W

88

X

89

Y

90

Z

VK_LWIN

91

 

VK_RWIN

92

 

VK_APPS

93

 

VK_SLEEP

95

 

VK_NUMPAD0

96

小键盘0

VK_NUMPAD1

97

小键盘1

VK_NUMPAD2

98

小键盘2

VK_NUMPAD3

99

小键盘3

VK_NUMPAD4

100

小键盘4

VK_NUMPAD5

101

小键盘5

VK_NUMPAD6

102

小键盘6

VK_NUMPAD7

103

小键盘7

VK_NUMPAD8

104

小键盘8

VK_NUMPAD9

105

小键盘9

VK_MULTIPLY

106

小键盘*

VK_ADD

107

小键盘+

VK_SEPARATOR

108

小键盘Enter

VK_SUBTRACT

109

小键盘-

VK_DECIMAL

110

小键盘.

VK_DIVIDE

111

小键盘/

VK_F1

112

F1

VK_F2

113

F2

VK_F3

114

F3

VK_F4

115

F4

VK_F5

116

F5

VK_F6

117

F6

VK_F7

118

F7

VK_F8

119

F8

VK_F9

120

F9

VK_F10

121

F10

VK_F11

122

F11

VK_F12

123

F12

VK_F13

124

 

VK_F14

125

 

VK_F15

126

 

VK_F16

127

 

VK_F17

128

 

VK_F18

129

 

VK_F19

130

 

VK_F20

131

 

VK_F21

132

 

VK_F22

133

 

VK_F23

134

 

VK_F24

135

 

VK_NUMLOCK

144

NumLock

VK_SCROLL

145

Scroll

VK_LSHIFT

160

 

VK_RSHIFT

161

 

VK_LCONTROL

162

 

VK_RCONTROL

163

 

VK_LMENU

164

 

VK_RMENU

165

 

VK_BROWSER_BACK

166

 

VK_BROWSER_FORWARD

167

 

VK_BROWSER_REFRESH

168

 

VK_BROWSER_STOP

169

 

VK_BROWSER_SEARCH

170

 

VK_BROWSER_FAVORITES

171

 

VK_BROWSER_HOME

172

 

VK_VOLUME_MUTE

173

VolumeMute

VK_VOLUME_DOWN

174

VolumeDown

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1