MFC应用程序实例

  1. 新建FirstMFC对话框应用程序

    此程序是开发一个'口令'对话框程序,包含了模式对话框与非模式方式调用对话框。

    详细见源文件,地址:

    共享链接:http://u.163.com/b47tr9n提取码:zxx0o2v2

  2. 小时钟程序

主要包含了定时器的启动与关闭的应用,菜单状态的更新。

详细见源文件,地址:

共享链接:http://u.163.com/0Nkr提取码:hdlov0uq

  1. 计算器程序

    主要包含了对话框与常用控件的使用,windows消息处理。

    详细见源文件,地址:

    共享链接:http://u.163.com/JOssJQN提取码:7ahmgfk9

  1. 学生档案管理

    主要包含了对文档与视图结构的应用,文档的存储和装入,添加串行化功能。

    详细见源文件,地址:

    共享链接:http://u.163.com/JwZlq提取码:233y2w3q

  1. 创建绘图程序

屏幕绘图:

    一般步骤:

    利用绘图工具类创建绘图工具对象

        如:CPen(画笔类),CBrush(画刷类),CFont(字体类)

    CDC类进行绘图:

    1.在视图类的OnDraw()函数中绘图

    步骤:

        1.选择绘图工具

            例:pDC->SelectObject(LTGRAY_BRUSH);

        2.绘制图像

            例1:绘制矩形

                1.定义矩形

                CRect rect(10,10,200,70);

                2.画一个矩形

                pDC->Rectangle(rect);

            例2:绘制文本

                pDC->TextOut(100,80,"Hello,VC++编程");

    2.在视图类的一般函数中绘图

        第1种:是在堆栈上构造对象,构造的对象会被自动删除。

            例:

            void CMyHelloView::OnLbuttonDown(UINT nFlags,CPoint point)

            {

                CDC dc(this);            //构造对象dc

                CRect rect(0,0,100,100)    //定义一个矩形

                dc.Rectang(rect);        //绘图

            }    //dc自动地被释放

        第2种:调用GetDC()函数获得显示设备环境的指针pDC进行绘图,但绘图完毕后,

        必须调用ReleaseDC()函数来释放它。

            例:

            void CMyHelloView::OnLbuttonDown(UINT nFlags,CPoint point)

            {

                CDC* pDC=GetDC(); //获取设备环境的指针

                CRect rect;            //绘图部分

                pDC->Rectang(rect);

                ReleaseDC(pDC);        //释放pDC

            }

 

    CPaintDC类进行绘图:

    应用于对话框程序,它可以处理来自Windows的WM_PAINT消息,所以通常是在OnPaint消息响应函数中使用。

        例:

        void MyTestDlg::OnPaint()

        {

        //1.创建一个CPaintDC类的对象

            CPaintDC dc(this);

        //2.调用CPaintDC类的函数进行绘图

            dc.MoveTo(10,10);    //调用MoveTo()函数,定位到点(10,10)

            dc.LineTo(100,100);    //调用LineTo()函数,画线到点(100,100)

            dc.Ellipse(120,120,160,160);    //调用画椭圆函数Ellipse()

            CDialog::OnPaint();

        }

 

    CClientDC类进行绘图:

    CClientDC类对象主要用来自动处理对描述窗口的客户程序区域的设备环境进行调用和释放。在CClientDC类对象

    创建时自动调用GetDC(),在撤销时将自动调用ReleaseDC()。

        例:

        void CMyHelloView::OnLbuttonDown(UINT nFlags,CPoint point)

        {

            CClientDC dc(this);

            CRect rect;

            GetClientRect(&rect);

            dc.MoveTo(rect.left,rect.Top);        //定位到客户程序区域的左上角

            dc.LineTo(rect.right,rect.bottom);    //画线到客户程序区域的右下角

            Cview::OnLbuttonDown(nFlags,point);

        }

 

    绘图工具:

        CPen(画笔类):

            1.构造和初始化对象都在带参数的构造函数中一步完成

                CPen newPen(PS_SOLID,2,RGB(2,255,0));

            2.构造和初始化分两步完成,构造由不带参数的构造函数完成,而初始化由初始函数完成。

                CPen newPen;

                newPen.CreatePen(PS_SOLID,2,RGB(0,255,0));

        CBrush(画刷类):

            1.构造和初始化对象都在带参数的构造函数中一步完成

                CBrush newBrush(RGB(0,0,255));

            2.构造和初始化分两步完成,构造由不带参数的构造函数完成,而初始化由初始函数完成。

                CBrush newBrush;

                newBrush.CreateSolidBrush(RGB(0,255,0));

        CFont(字体类):创建字体由两步完成

            1.定义一个CFont类的对象,应用框架会调用构造函数

                CFont myFont;

            2.调用CFont类的创建字体函数,将构造的CFont类对象与Windows的某种字体相关联

                myFont.CreateFont(...);

                其中,CreateFont()原型为:

                BOOL CreateFont(

                    int nHeight,        //字体高度

                    int nWidth,            //字符平均宽度

                    int nEscapement,    //文本行角度

                    int nOrientation,    //字符角度

                    int nWeight,        //字符粗细度

                    BYTE bItalic,        //斜体

                    BYTE bUnderline,    //下划线

                    BYTE cStrikeOut,    //删除线

                    BYTE nCharSet,        //字符集

                    BYTE nOutPrecison,    //字体输出结果和要求的匹配程度

                    BYTE nClipPrecison,    //如何裁剪落于裁剪区之外的字符

                    BYTE nQuality,        //字体属性匹配的精确程度

                    BYTE nPitchAnFamily,//字体间距和字体簇

                    BYTE lpszFacename    //字体名称

                );

 

        矢量图形:

        点(CPoint):

            CPoint类是对Windows结构POINT的封装,POINT结构:

                Typedef struct tagPOINT

                {

                    LONG X;

                    LONG Y;

                }POINT;

            画点的函数:CDC::SetPixel(),原型为:

                COLORREF SetPixel(POINT point,COLORREF crColor);

            例:

                CClientDC dc(this);

                CPoint point(100,200);

                dc.SetPixel(point,RGB(255,0,0));

 

        直线:绘制线条函数由CDC::MoveTo()和CDC::LineTo()完成

            MoveTo()函数用于设定当前点的位置,其原型为:

                CPoint MoveTo(int x,int y);

                CPoint MoveTo(CPoint point);

            LineTo()函数用于画一条从当前点到指定点的直线,然后将指定咪设为当前点。

            画线的样式取决于指定的画笔,其原型为:

                BOOL LineTo(int x,int y);

                BOOL LineTo(CPoint point);

            例:

                在屏幕上从点p1(100,200)到p2(150,300)画一个线段

                    CClientDC dc(this);

                    CPoint p1(100,200),p2(150,300);

                    dc.MoveTo(p1);

                    dc.LineTo(p2);

 

        矩形(CRect):

        Windows定义了一个描述矩形的结构RECT:

            Typedef struct tagRECT

            {

                LONG left;

                LONG top;

                LONG right;

                LONG botton;

            }RECT,*PRECT,NEAR* NPRECT,FAR* LPRECT;

            画矩形的常用函数是CDC::Rectangle()和CDC::FillRect(),

            CDC::Rectangle()函数原型为:

                BOOL Rectangle(int x1,int y1,int x2,int y2);

                BOOL Rectangle(LPCRECT lpRect);

            CDC::FillRect()函数原型为: 该函数使用给定的画刷给矩形填充颜色

                void FillRect(LPCRECT lpRect,CBrush* pBrush);

            例:

                CPaintDC dc(this);

                dc.Rectangle(120,120,160,160);

        

        椭圆:画椭圆的函数为CDC::Ellipse()

            CDC::Ellipse()函数原型为:

                BOOL Ellipse(int x1,int y1,int x2,int y2);

                BOOL Ellipse(LPCRECT lpRect);

            例:

                CPaintDC dc(this);

                dc.Ellipse(120,120,160,160);

 

        CBitmap(位图类):CBitmap类封装了Windows的GDI位图操作所需的大部分函数。

            LoadBitmap是位图的初始化函数,从应用程序中调用一个位图资源,其函数原型为:

                BOOL LoadBitmap(LPCTSTR lpszResourceName);

                BOOL LoadBitmap(UINT nIDResource);

            若要直接创建一个位图对象,可使用CBitmap类中的CreateBitmap(),CreateBitmapIndirect()以及

            CreateCompatibleBitmap()函数,其函数原型为:

                BOOL CreateBitmap(int nWidth,int nHeight,UINT nPlanes,UINT nBitcount,const void* lpBits);

                BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);

                BOOL CreateCompatibleBitmap(CDC* pDC,int nWidth,,int nHeight);

            

                GDI位图的显示

                步骤:

                    1.调用CBitmap类的CreateBitmap(),CreateCompatibleBitmap()以及CreateBitmapIndirect()函数创建

                    一个适当的位图对象。

                    2.调用CDC::CreateCompatibleDC()函数创建一个内存设备环境,以便位图在内存中保存下来,并与指定的

                    设备(窗口设备)环境相兼容。

                    3.调用CDC::SelectObject()函数将位图对象选入设备环境中。

                    4.调用CDC::BitBlt()或CDC::StretchBlt()函数将位图复制到实际设备环境中。

                    5.使用之后恢复原来的内存设备环境。

                例:

                    见本工程中 void CMyDraw::OnShowbitmap()函数

                

                BMP文件的显示

                步骤:

                    1.定义一个HBITMAP类型变量bitmap,通过它的LoadImage()函数将指定的位图文件读取进来。

                    2.创建兼容的内存设备描述表,并通过SelectObject()将位图选入内存设备描述表中。

                    3.调用BitBlt()函数将位图绘制在客户程序区域。

                例:

                    见本工程中 void CMyDrawView::OnDbmp()函数

        CPalette(调色板类),CRgn(绘图区域类)。。。暂留。。

    详细见源文件,地址:

    共享链接:http://u.163.com/33DA提取码:xqj1ft5x

  1. 媒体播放器

    命令字符串接口控制,媒体文件的控制,封装一个MCI控制类。(此程序还不够完整,封装MCI控制类还有点错误,还有待修改:CMCIClass类插入项目、为'WAVE'Radio控件引入变量、按钮状态更新、添加进度条)

详细见源文件,地址:

共享链接:http://u.163.com/qBhuJKFq提取码:1qpodlx9

  1. 简易多媒体数据库系统

    使用ODBC类编程的一般步骤:

        1.连接数据源

        2.创建并执行SQL语句

        3.检查结果记录

        4.断开数据源

    包含了对数据记录的基本操作。

    详细见源文件,地址:

    共享链接:http://u.163.com/qdBP1Ghn提取码:yfvd8njd

  2. ADO技术的应用

    详细见源文件,地址:

    共享链接:http://u.163.com/5iTVvUp提取码:itxwk1rf

  3. 基于CSocket的网络编程

    MyQQ客户端程序

    MyQQ服务器端程序

        详细见源文件,地址:

        共享链接:http://u.163.com/0IhA提取码:fbcdiicr

  1. 多线程

    桌面差时钟,包含了多线程的应用,线程的控制,以及线程间的通信。

        详细见源文件,地址:

        共享链接:http://u.163.com/AaI3j提取码:mxcr7nkc

    线程同步,使用临界区、互斥对象、信号量对象进行线程同步。

        详细见源文件,地址:

        共享链接:http://u.163.com/1oCw提取码:rr14f9f7

  1. 动态链接库DLL

    (还未完成)

        源文件,地址:

     

 

 

转载于:https://www.cnblogs.com/luowei010101/archive/2011/09/07/2170167.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动小技巧 | 利用DRIVER_ATTR实现调用内核函数

1. 前言 很多朋友在调试驱动的时候,都会遇到这样一个场景:修改一个参数,然后调用某个内核中的函数。比如将某个gpio的值拉高/拉低,修改某个寄存器的值等等。如果每一个参数都通过字符设备的ioctl接口,增加对应的cmd&am…

myeclipse运行java项目_myeclipse运行自己从前的或其他人的javaweb项目

1.配置javaweb 连接部署好本地的tomcat服务器方法如下:1.运行Myecipse-->Window-->preference2.MyEclipse-->Servers-->Runtime Environments-->add-->Apache Tomcat v8.03.next->Browser(Tomcat的安装目录)-->finishMyeclipse 设置jdk版本…

MYSQL性能调优及架构设计学习笔记-影响MYSQL性能的相关因素之实例分析

为什么80%的码农都做不了架构师?>>> 需求概述 一个简单的讨论区系统,需要有用户,用户组,组讨论区这三部分基本功能 简要分析 1) 须要存放用户数据的表; 2) 须要存放分组信息和用户与…

洛谷P2089 烤鸡 题解

题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末、孜然等),每种配料可…

java excel 导入 加校验_POI实现excel各种验证和导入的思路总结

制定标准导入总是与导出相辅相成的,无规矩不成方圆。所谓的标准都是大家一同来维护和遵守的,那么首先就是制定一个模板。这样可以减少验证的工作量。例如时间的规范【yyyy-MM-dd】,获取单元格的时间值用下面的方法java.util.Date date cell.g…

在一个公司10年,会怎么样?

大家好,我是写代码的篮球球痴。最近在知乎上看到一个话题那些在一个公司死磕了5-10年的人最后都怎么样了?"在互联网红利爆发,人心躁动的今天,可以在一个公司磕到5~10年,真的很不容易,我记得前东家要是…

公钥私钥

公钥私钥 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />一&#xff0c;公钥私钥 1&#xff0c;公钥和私钥成对出现 2&#xff0c;公开的密钥叫公钥&#xff0c;只有自己知道的叫私钥 3&#xff0c;用公钥加密的数据只有…

软件测试第三次作业

一、开头 (1)合作者&#xff1a;201631062521&#xff0c;201631062421 (2)代码地址&#xff1a;https://gitee.com/h2503652646/WordCount.git (3)本次作业链接地址&#xff1a;https://edu.cnblogs.com/campus/xnsy/Test/homework/2203 二、正文 (1)互审代码情况 已经实现Wor…

equals()与==的区别

“”比较两个变量本身的值&#xff0c;即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。 比如&#xff1a;String s1,s2,s3 "abc", s4 "abc" ;s1 new String("abc");s2 new String("abc");那么&#x…

Linux驱动开发中与设备树相关的6种debug方法

整理出了6种驱动开发时与设备注册、设备树相关的调试方法&#xff0c;彼此间没有优先级之分&#xff0c;每种方法不一定是最优解&#xff0c;但可以作为一种debug查找问题的手段&#xff0c;快速定位问题原因。例如在芯片验证时&#xff0c;不同时钟频率下系统启动情况摸底时&a…

hdu-1877(大数+进制转换)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1877 思路&#xff1a;注意考虑0,0的情况。 #include<iostream> #include<cstdio> #include<string> #include<algorithm> using namespace std; int m,a,b; string s1,s2; string add…

多线程(一)

1) 什么是线程&#xff1f; 线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。程序员可以通过它进行多处理器编程&#xff0c;你可以使用多线程对运算密集型任务提速。比如&#xff0c;如果一个线程完成一个任务要…

DiscoveryService.getRemoteAdvertisements是否会获得本地通告?

从该方法名称上来说&#xff0c;应该是不能获得本地通告&#xff0c;本着探究的精神&#xff0c;首先做个小测试&#xff0c;再从源代码中寻找答案。----------------------------------------------------------------------------- 测试结果&#xff1a;本地通告确实取不到&a…

java ssh 和mvc_JAVA三大框架SSH和MVC

Java—SSH(MVC)JAVA三大框架的各自作用hibernate是底层基于jdbc的orm(对象关系映射)持久化框架&#xff0c;即&#xff1a;表与类的映射&#xff0c;字段与属性的映射&#xff0c;记录与对象的映射 数据库模型 也就是Model;struts提供的丰富标签是用于显示层View;同时struts也充…

Linux的bc命令计算π的值预估系统算力

这是今天突然想到的一个事情&#xff0c;几年前我和一个朋友做一个开发板&#xff0c;然后我们需要完成的这个开发板有算力的要求&#xff0c;当时我们测试的时候就用了一个shell脚本来分析系统的算力。今天我突然想不起这个命令&#xff0c;然后就想写篇文章记录下&#xff0c…

hotmail在outlook2007中的设置

在姓名中输入你的名字&#xff08;用户可自定义&#xff09;&#xff0c;在电子邮件地址中输入你要设置OutLook的电子邮件地址&#xff0c;账户类型设为POP3&#xff0c;接收邮件服务器为pop3.live.com&#xff0c;发送邮件服务器为smtp.live.com。在用户名中输入你的邮箱用户名…

第九章 图形用户界面的并行化(待续)

为什么GUI是单线程的转载于:https://www.cnblogs.com/hzzjj/p/9825864.html

SQL版DNN的安装心得

最重要的是,DNN必须在WEB HOST 的根目录。中国RainBow提醒的。这是装成的关键&#xff01;另外的主要两个问题&#xff0c;一是CONNECTIONSTRING中的PWD有&符号&#xff0c;出错。通过SQL 的企业管理器登陆REMOTE SQL SERVER修改PASSWORD。(应该试一试 Integrated Security…

面向对象的思想是什么?

我同事的回答&#xff0c;我觉得这句话可以读十遍说下我自己的理解你不是人&#xff0c;你是猪。解释一下我们在编写面向对象的代码时&#xff0c;一定要有抽象的思想&#xff0c;什么是抽象&#xff0c;抽象是一种概念的东西&#xff0c;不是实实在在的&#xff0c;看不见摸不…

java 数组正则表达式_java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】...

本文实例讲述了java正则表达式实现提取需要的字符并放入数组。分享给大家供大家参考&#xff0c;具体如下&#xff1a;这里演示java正则表达式提取需要的字符并放入数组&#xff0c;即arraylist数组去重复功能。具体代码如下&#xff1a;package com.test.tool;import java.uti…