关闭

Windows编程基础--第7节 来吧,VS 2010

标签: MFCvisual studio 2010
1968人阅读 评论(0) 收藏 举报
分类:

VS 2010开发第一步


前面几节我们都是采用VC++ 6.0 作为IDE(集成开发环境),但是由于VC++ 6.0 已经过于老旧,目前大多数企业和个人都已经不再使用,而采用vs2005, vs2008, vs2010,vs2015作为MFC程序的开发环境,vs相对vc++6.0具有更友好的界面,及更强大的功能,采用vs开发MFC应用程序更加得心应手。

1、开始使用VS 2010

1.1 安装VS 2010

参见百度百科

1.2 创建一个基于对话框项目

执行“文件”->“新建”->“项目”,选择基于对话框的MFC程序,其他默认就好,基本上和VC++ 6.0 创建项目一模一样,如图所示:
这里写图片描述
这里写图片描述
这里写图片描述

1.3 创建一个字符统计窗口

现在我们通过一个小例子来看看VS2010创建MFC程序有什么不同,我们来创建一个字符统计窗口,输入各种字符,最后统计出所有字符个数;
设计界面如下,
这里写图片描述
一个文本输入框,一个“统计”按钮,一个文本显示“字符个数”,直接在工具箱中拖动进来就OK,然后拖动大小适中就好,方法同VC++ 6.0 没有区别,可以参考上几节内容。
注意: 若是右边没有工具箱选项卡,可以通过“视图”->“工具箱”打开。
编译运行,效果图:
这里写图片描述

1.3 创建一个字符统计窗口

双击“统计”按钮,编辑按钮的点击处理函数,
我们来分析一下:

  • 获取输入框中文本
  • 获取输入框中文本的字符个数
  • 将字符个数显示到静态文本上
    所以处理函数如下:
void Cday07Dlg::OnBnClickedButtonCount()
{
    // TODO: 在此添加控件通知处理程序代码
    CString strInput,strOutput;
    GetDlgItemText(IDC_EDIT_TEXT,strInput);

    int nCount = strInput.GetLength();
    strOutput.Format(_T("字符个数:%d "),nCount);
    SetDlgItemText(IDC_STATIC_COUNT,strOutput);
}

1.4 编译运行

运行结果图:
这里写图片描述
这是我们发现当我们输入完成是,输入“回车”时,程序就会直接结束,那么我们修改输入框的属性值“Want Return”来允许输入框来接收回车,如图
这里写图片描述
其实这是我们可以发现现在文本框是只能输入一行,显然不够美观,那么我们再修改一下输入框属性:
这里写图片描述

  1. Multiline:允许多行
  2. Horizontal Scroll:水平滚动条
  3. Vertical Scroll:垂直滚动条

再次编译运行:
这里写图片描述
现在文本框现在可以输入多行,并且可以任意回车了。
有人可能和我一样,发现程序没有关闭按钮,那是因为我在创建的时候取消了系统菜单,我们可以选定对话框主界面,选择属性->system menu->TRUE:
这里写图片描述
这是关闭按钮就出现了,可以正常关闭了。

2、初探VS中消息映射机制

2.1 创建EDIT的消息处理函数

单击选定输入框,右击选择“添加事件处理程序”,这是可以很直观的看见EDIT的消息列表和要添加到的类,以及添加的处理函数名,现在我们来添加一个EN_CHANGE的消息处理函数,如图所示:
这里写图片描述
单击“添加编辑”来编辑消息处理函数,代码如下:

void Cday07Dlg::OnEnChangeEditText()
{
    // TODO:  如果该控件是 RICHEDIT 控件,它将不
    // 发送此通知,除非重写 CDialogEx::OnInitDialog()
    // 函数并调用 CRichEditCtrl().SetEventMask(),
    // 同时将 ENM_CHANGE 标志“或”运算到掩码中。

    // TODO:  在此添加控件通知处理程序代码
    CString strInput,strOutput;
    GetDlgItemText(IDC_EDIT_TEXT,strInput);

    int nCount = strInput.GetLength();
    strOutput.Format(_T("字符个数:%d "),nCount);
    SetDlgItemText(IDC_STATIC_COUNT,strOutput);

}

2.2 编译运行

这是我们可以发现我们在输入框中输入字符时,下方的字符统计数会实时显示,这就是输入文本时,EDIT的EN_CHANGE消息被触发,从而触发其消息处理函数OnEnChangeEditText,导致字符统计数实时更新,效果图如下:
这里写图片描述

2.3 MFC消息映射机制流程

Created with Raphaël 2.1.0Start输入框文本变化触发EN_CHANGE消息调用EN_CHANGE的处理函数OnEnChangeEditText将输入框字符数返回到界面End

项目源码可以访问我的码云

1
0
查看评论

windows基础编程 -- 资源

前言VC环境可以通过资源脚本文件(.rc)给当前程序添加资源,这些资源包括: Accelerator(加速键),Bitmap(位图),Cursor(光标),Dialog(对话框),HTML(网页脚本),Icon(图标),Menu(菜单),StringTable(字符表),ToolBar(工具栏),V...
  • diletrich
  • diletrich
  • 2016-02-18 23:17
  • 333

Windows编程基础学习笔记

Windows编程概述     Windows系统是一个消息驱动的操作系统,每一个事件的发生都会产生一个消息,我们通过消息来知道发生了什么事件。    Windows编程是在实现程序算法的基础上进行窗口编程。程序员可以直接调用Windows API进...
  • lindagod
  • lindagod
  • 2015-02-17 08:28
  • 3088

Windows编程基础知识点

什么是窗口(window)? 对于从编程的角度解析,不要简单地认为是一个程序的窗口,而是如下面定义: 什么是句柄(handle): 是一个号码,操作系统使用这一的号码识别对象。操作系统有一个很大的表,包含了所有创建的windows的句柄,操作系统就是通过查找这一的表找到windows的。 记住句...
  • kenden23
  • kenden23
  • 2013-12-15 08:03
  • 1595

NOIP2010解题报告

题目链接:T1 机器翻译 T2 乌龟棋 T3 关押罪犯 T4 引水入城题解:一套不算太难的NOIP题目。 第一题直接暴力模拟队列的工作即可。#include<iostream> #include<cstdio> #include<cstdlib> #inc...
  • morestep
  • morestep
  • 2015-09-07 21:08
  • 1435

如何快速入门Windows编程

摘要:不少朋友向我征询学习Windows界面编程的方法,每一次,我总毫不犹豫的回答:先去学Windows SDK吧。——是的,如果你要以最快的速度学习Windows编程,那么,你需要从Windows SDK开始。假如你选择MFC或者Delphi/C++ Builder等...
  • xushiweizh
  • xushiweizh
  • 2006-11-09 00:13
  • 17035

统计学习基础(第二版)——引言

统计学习基础  第二版 引言 统计学习在诸多科学、金融、工业领域起到了关键性的作用,下面列举了一些学习的案例。 针对一位因心脏病住院的病人,预测其心脏病再次发作的概率。基于这位病人的人口信息、饮食和临床诊断信息来预测。 基于公司业绩评估和经济数据,预测6个月之后的股票走势。...
  • LXYTSOS
  • LXYTSOS
  • 2015-03-02 16:27
  • 3058

用VS Express 2010开发第一个应用程序

VS的精简版,Express版本,可以学习,也可以开发一些不太复杂的小型应用。下面图示讲解下VS Express 2010的安装和使用。   解压以后双击Setup开始安装。   初始安装界面;   选择安装C#;   许可;   附带有Sql...
  • bcbobo21cn
  • bcbobo21cn
  • 2015-03-29 11:51
  • 609

vs 2010 sp1

https://www.microsoft.com/zh-CN/download/details.aspx?id=23691
  • zhao1949
  • zhao1949
  • 2016-06-30 13:50
  • 268

Windows Azure Tools for VS2010新版本可用

今天上午我获得消息:Windows Azure Tools for Visual Studio 2010——2011年8月升级版被发布了。它的版本号是1.4.40727.1601,是Windows Azure SDK v1.4.20407.2049的升级版。这个升级版本拥有一些非
  • azurechina
  • azurechina
  • 2011-08-05 15:16
  • 3008

vs2010自定义消息与vc6.0不太一样

ON_MESSAGE(UM_PROGRESS,OnProgress)这个为发生错误行  vs2010显示错误为:error C2440: 'static_cast' : 'void (__thiscall CgjlwordDlg::* )(void)...
  • g710710
  • g710710
  • 2012-02-14 18:01
  • 3912
    个人资料
    • 访问:40585次
    • 积分:695
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1条
    文章分类