vc++(vs2010) windows编程与绘图程序设计

更新时间:2024-06-20 11:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 Vc++2010开发平台概述 .............................................................................................................. 3

1.1 Vc++2010概述 ............................................................................................................ 3 1.2 Visual Studio 2010 集成开发环境 .................................................................................... 3

1.2.1安装Visual Studio 2010 .......................................................................................... 3 1.2.2配置Visual Studio 2010 .......................................................................................... 3 1.2.3解决方案和项目 ...................................................................................................... 3 1.2.4生成和调试工具 ...................................................................................................... 3 1.2.5部署工具 .................................................................................................................. 3 1.2.6 Ribbon界面设计可视化 ......................................................................................... 4

2 Visual Studio 2010 MFC基本程序设计 ....................................................................................... 4

2.1 MFC应用程序概述 ........................................................................................................... 4

2.1.1简单的MFC应用程序 ........................................................................................... 4 2.1.2 MFC应用程序分析 ................................................................................................ 4 2.2 MFC应用程序的创建 ....................................................................................................... 4

2.2.1 用AppWizard创建CLR控制台应用程序 ........................................................... 4 2.2.2 用AppWizard创建win32控制台应用程序 ........................................................ 4 2.2.3 用AppWizard创建一个MFC应用程序 .............................................................. 5 2.3 MFC的类 ........................................................................................................................... 9

2.3.1 MFC应用程序中包含的类 .................................................................................... 9 2.3.2 应用程序类 ........................................................................................................... 10 2.3.3 主框架类 ............................................................................................................... 10 2.3.4 视图类 ................................................................................................................... 10 2.3.5 文档类 ................................................................................................................... 10 2.3.6 对话框类 ............................................................................................................... 10 2.3.7 菜单类 ................................................................................................................... 10 2.3.8 线程基类 ............................................................................................................... 10

3 Wndows窗体应用程序............................................................................................................... 11

3.1 创建Wndows窗体应用程序.......................................................................................... 11 3.2 窗体属性及设置 .............................................................................................................. 12 3.3 窗体事件及处理 .............................................................................................................. 13 3.4 窗体控件添加与编辑 ...................................................................................................... 13 4 用户界面设计 ............................................................................................................................. 13

4.1 菜单设计 .......................................................................................................................... 13

4.1.1 菜单的类型 ........................................................................................................... 13 4.1.2 菜单设计 ............................................................................................................... 13 4.1.3 创建弹出式菜单 ................................................................................................... 20 4.1.4 创建动态菜单 ....................................................................................................... 20 4.1.5 创建基于对话框的菜单 ....................................................................................... 20 4.2 工具栏设计 ...................................................................................................................... 20 4.3 状态栏设计 ...................................................................................................................... 20 5 对话框设计 ................................................................................................................................. 20

5.1 静态对话框 ...................................................................................................................... 20

5.1.1静态对话框的建立过程 ........................................................................................ 20 5.1.2静态对话框的应用 ................................................................................................ 21

5.2 非静态对话框 .................................................................................................................. 31 5.3 通用对话框 ...................................................................................................................... 31 6常用控件...................................................................................................................................... 31

6.1 公共控件 .......................................................................................................................... 31 6.2 容器 .................................................................................................................................. 31 6.3 数据控件 .......................................................................................................................... 31 7 键盘鼠标事件 ............................................................................................................................. 32

7.1键盘事件 ........................................................................................................................... 32 7.2 鼠标事件 .......................................................................................................................... 42

7.2.1客户区鼠标消息 .................................................................................................... 42 7.2.2非客户区鼠标消息 ................................................................................................ 45 7.2.3实例 ........................................................................................................................ 46

8 图形文本与图像处理 ................................................................................................................. 51

8.1图形设备接口GDI(Graphics Device Interface) ......................................................... 51 8.2 设备上下文DC(device context) ................................................................................ 54

8.2.1 设备上下文概述 ................................................................................................... 54 8.2.2 CDC类 .................................................................................................................. 57 8.3 绘图环境 .......................................................................................................................... 60

8.3.1绘图环境介绍 ........................................................................................................ 60 8.3.2映射模式与坐标系 ................................................................................................ 61 8.3.3绘图颜色 ................................................................................................................ 71 8.3.4设置绘图属性 ........................................................................................................ 72 8.3.6几何对象的结构和类 ............................................................................................ 79 8.4 画笔和画刷 ...................................................................................................................... 85

8.4.1画笔 ........................................................................................................................ 85 8.4.2画刷 ........................................................................................................................ 92 8.5 绘图 .................................................................................................................................. 99

8.5.1 绘图步骤 ............................................................................................................... 99 8.5.2 画像素点 ............................................................................................................. 100 8.5.3 画线状图 ............................................................................................................. 100 8.5.4 拖放画动态直线 ................................................................................................. 105 8.5.5 画填充图 ............................................................................................................. 109 8.5.6 清屏 ..................................................................................................................... 111 8.5.7 在控件上绘图 ..................................................................................................... 112 8.6 文本绘制 ........................................................................................................................ 116 8.7 位图 ................................................................................................................................ 116 8.8 图标和光标 .................................................................................................................... 116 8.9 图像处理 ........................................................................................................................ 116 9 文件处理................................................................................................................................... 116 10 数据库编程 ............................................................................................................................. 117

1 Vc++2010开发平台概述

1.1 Vc++2010概述

1.2 Visual Studio 2010 集成开发环境

1.2.1安装Visual Studio 2010

1.2.2配置Visual Studio 2010

1.2.3解决方案和项目

1.2.4生成和调试工具

1.2.5部署工具

1.2.6 Ribbon界面设计可视化

2 Visual Studio 2010 MFC基本程序设计

2.1 MFC应用程序概述

2.1.1简单的MFC应用程序

2.1.2 MFC应用程序分析

2.2 MFC应用程序的创建

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所示界面,左侧选择“viaual c++语言”,中间选择“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.3 MFC的类

2.3.1 MFC应用程序中包含的类

2.3.2 应用程序类

2.3.3 主框架类

2.3.4 视图类

2.3.5 文档类

2.3.6 对话框类

2.3.7 菜单类

2.3.8 线程基类

3 Wndows窗体应用程序

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: 在此添加命令处理程序代码

下面添加

CClientDC dc(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文件夹上单击右键选择insert dialog,弹出新建的对话框,根据需要可以修改对话框属性面板中的属性值。

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

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

2.添加对话框。通过“视图-其他窗口-资源视图”打开资源视图,在资源视图的DIALOG文件夹上单击右键选择insert dialog,弹出新建的对话框(图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会看见添加了如

下函数:

void line2dlg::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,并且光标定位到该函数中,代码如下:

void ChuituView::OnLine2() { }

// TODO: 在此命令处处理程序代码

图5.1.2.8

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

#include \

目的是把对话框类包含进来,否则系统不认对话框中的信息。然后再online2()函数中添加如下代码:

line2dlg dlg; //生成对话框对象

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

CClientDC dc(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)创建工程。

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

(2)在ClassView选项卡上用鼠标右键单击该类,并从弹出的快速

菜单中选择[Add Member Variable…]

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

单击[OK]按钮,完成成员变量的添加操作。按照同样的方法,再添加2个BOOL型private成员变量bShiftup和bShiftB,

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

CKeyboardDemoView::CKeyboardDemoView() {

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

(3)利用“建立类向导”添加键盘消息及处理函数,步骤如下: 在”ClassName”列表框中,选择键盘消息的处理函数”CKeyboardDemoView”,在”Object IDs”列表框中选择“CKeyboardDemoView”,

则在“Message”列表框中,列出了MFC为其预定义的消息,分别选择WM_KEYDOWN、WM_KEYUP、WM_CHAR消息, 单击“Add Function”按钮,MFC就会为其自动添加相应的消息映射宏和消息处理函数。

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

OnKeyDown函数的代码如下:

void CKeyboardDemoView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {

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

bShiftdown=true; bShiftup=false;

Invalidate(true); //显示信息 }

CView::OnKeyDown(nChar, nRepCnt, nFlags); }

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

void CKeyboardDemoView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) {

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

bShiftup=true; bShiftdown=false;

Invalidate(true);//显示信息 }

CView::OnKeyUp(nChar, nRepCnt, nFlags); }

OnChar函数的代码如下:

void CKeyboardDemoView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) {

//判断是否同时敲击了字符键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函数中,实现在客

户区窗口输出按键提示信息。代码如下:

void CKeyboardDemoView::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(UINT nChar, UINT nRepCnt, UINT nFlags) 其中:

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 Caps Lock VK_KANA 21 VK_HANGUL 21 VK_JUNJA VK_FINAL VK_HANJA VK_KANJI VK_ESCAPE VK_CONVERT VK_NONCONVERT VK_ACCEPT VK_MODECHANGE VK_SPACE VK_PRIOR VK_NEXT VK_END VK_HOME VK_LEFT VK_UP VK_RIGHT VK_DOWN VK_SELECT VK_PRINT VK_EXECUTE VK_SNAPSHOT VK_INSERT VK_DELETE VK_HELP 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 65 Esc Space Page Up Page Down End Home Left Arrow Up Arrow Right Arrow Down Arrow Select Print Execute Snapshot Insert Delete Help 0 1 2 3 4 5 6 7 8 9 A 25* VK_LWIN VK_RWIN VK_APPS VK_SLEEP VK_NUMPAD0 VK_NUMPAD1 VK_NUMPAD2 VK_NUMPAD3 VK_NUMPAD4 VK_NUMPAD5 VK_NUMPAD6 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98 99 B C D E F G H I J K L M N O P Q R S T U V W X Y Z 小键盘 0 小键盘 1 小键盘 2 小键盘 3 100 小键盘 4 101 小键盘 5 102 小键盘 6 VK_NUMPAD7 VK_NUMPAD8 VK_NUMPAD9 VK_MULTIPLY VK_ADD VK_SEPARATOR VK_SUBTRACT VK_DECIMAL VK_DIVIDE VK_F1 VK_F2 VK_F3 VK_F4 VK_F5 VK_F6 VK_F7 VK_F8 VK_F9 VK_F10 VK_F11 VK_F12 VK_F13 VK_F14 VK_F15 VK_F16 VK_F17 VK_F18 VK_F19 VK_F20 VK_F21 VK_F22 VK_F23 VK_F24 VK_NUMLOCK VK_SCROLL VK_LSHIFT 103 小键盘 7 104 小键盘 8 105 小键盘 9 106 小键盘 * 107 小键盘 + 108 小键盘 Enter 109 小键盘 - 110 小键盘 . 111 小键盘 / 112 F1 113 F2 114 F3 115 F4 116 F5 117 F6 118 F7 119 F8 120 F9 121 F10 122 F11 123 F12 124 125 126 127 128 129 130 131 132 133 134 135 144 Num Lock 145 Scroll 160

本文来源:https://www.bwwdw.com/article/3313.html

Top