【申精】每日一点,跟我一起学MFC
mfc吧
全部回复
仅看楼主
level 8
[Yeah]下午在开始更新
2012年07月24日 03点07分 1
level 8
ok 开始更新了 首先是装一个开发环境,我估计大家的开发环境以winxp或者win7居多的把
我家里的win7的 这里我们重点是mfc编程 这里下载一个ide的话 最好下载vs系列的
我下载的是vs2010 虽说s2012都有了 我还是下载一个老点的 而且对于vc6.0的话
又貌似和windows7 兼容性不好
2012年07月24日 09点07分 2
楼主,以后每天都看你
2012年09月09日 10点09分
回复 另一个掘金者 :[Kiss]呵呵,我又来了
2013年01月29日 13点01分
用VS编写C++程序?怎么用?
2013年12月04日 07点12分
一天看一点,我来鸟
2013年12月13日 14点12分
level 8
而且vs2010的话 有三种版本的 我下载的是速成版的 由于免费 ,所以推荐大家到微软的官方网站上去下载 首先下载的是一个下载器,然后双击打开这个下载器就ok了,大约也就不到二百兆吧 然后安装就ok了 安装之后就可以写代码了 很多东西都是自带的
下面我们一起学习把
2012年07月24日 09点07分 3
速成版好像不支持mfc吧,就是express edition
2012年09月25日 06点09分
- -刚在官网搞了个vs2013,版本号12.0.。。。会不会太新
2013年12月13日 14点12分
level 8
学习mfc之前 我也是看他们的介绍 我们主要使用的语言是c++ 语言 ,说是cpp,其实主要也就是vc++语言 ,在这 之前我还是想跟大家一起复习一下我们的vc++功底, 由于这些都是我手打的 但是我也是按照教科书上一点一点打下来的
2012年07月24日 09点07分 4
C++ 0基础怎么破
2013年12月13日 14点12分
level 8
[瞌睡]万恶验证吗 ok 我们首先来复习c++的基础知识 楼下开始更新了哈
2012年07月24日 09点07分 5
level 8
这里是基础的一些语法 会的话就当复习一下把[害羞] 再说又不会怀孕
语句简介 2012年七月二十四号
1.赋值运算符将右边的值复制给左边的变量.2.在任何可以使用单挑语句的地方都可以使用符合语句(也叫语句块),语句块一左大括号开始,以右大括号结束.虽然语句块中的每条语句都必须一分号结尾,但语句块本身并不需要.3.语句一定要用分号结尾,使用空白来提高代码的可读性.4.y=x= a+b; 它将a和b相加,将结果赋给x,将表达式x=a+b的结果赋给y5.x=a+b; 它将a和b相加,将结果赋给x,并返回所赋的值(x的值),因此这条语句也是表达式.6.注意任何表达式都可以放在赋值运算符的右边,这包括上述赋值语句.7.对unsigned整型变量执行减法运算时,如果结果为负,则会出现变量溢出的情形.8.递增运算符和递减运算符有两种版本:前缀和后缀,再简单语句中,使用前缀还是后缀无关紧要.但是在对变量递增,然后将结果赋值给另外一个变量这样的复杂语句中,他们的区别相当大,使用前缀运算时,在赋值前进行递增或递减,使用后缀运算符时,在赋值后进行递增或者递减.
9.如 int a = ++x; 则先将x递增,然后再将改变量的值赋给a10.在早期的c++版本中,真和假都用整数表示,新的ANSI标准引入了bool类型,bool变量只有两个可能的取值:false或者true.现在,遵循ANSI标准的编译器提供的bool类型通常只占用一个字节.11.关系运算符用来对两个数字进行比较,判断前者和后者的大小关系.12.所有关系运算符都返回一个bool值,即true或者false,在老版本的c++中,这些关系运算符要么返回0(表示false),要么返回非零值(通常为1,表示true)13.if语句让你能够测试某个软件,然后根据结果,执行不同的代码片段.14.空格和缩进只是为了给程序员提供方便,对编译器来说毫无意义.15.不要用if(x)来代替if(x!==0) 因为后者更加清晰16.在可以使用单语句的任何地方,都可以使用一堆大括号括起来的语句块.17.规定任何非零值都表示真是因为这种约定是从c语言那里继承来的,编写低级软件(如操作系统和实时控制软件)时经常会使用这种约定,这种用法可能称为检测掩码或变量的所有位是否为o的简洁方式.18.所有非零值不论正负均为真.19.制表符.空格和换行符(也叫空白符)对程序没有什么影响.
2012年07月24日 09点07分 6
15.不要用if(x)来代替if(x!==0) 吧主 这条语句有病句。。正确为 if(x!=0)
2013年06月12日 11点06分
楼主,可不可以把格式稍微注意下??
2013年06月20日 14点06分
- -看不懂,我还是先去把C++学好
2013年12月13日 14点12分
level 8
这个有点残缺 相当于世string类首先认识下把 以后关于这个神奇的类 我们还会有更多的描述的额
string类 2012年七月二十四号
1.c++继承了c语言中一空字符结尾的c风格字符串以及包括strcpy()函数的函数库,但这些函数并没有集成到面向对象的框架中.2.c++标准库提供了一个string类,它提供了封装的数据集和操纵这些字符串数据的函数,是的处理字符串更轻松. std::string类负责处理内存分配,这使得复制字符串或给它们赋值变得很轻松.3.使用时需要包含头文件string
2012年07月24日 09点07分 8
level 8
这个关于循环,说实话 其实没有太多好说的 ,大家应该都会了吧 那就在复习下 话说楼主也是辛辛苦苦精选的 都是 循环 2012年七月24日
1.作为一条原则,程序员避免使用goto语句,因为goto语句可以向前或者向后跳转到源代码的任何位置,不加选择的使用goto语句会导致混乱.质量低下和无法阅读的程序,这杯称为"意大利面条式"代码2.为了避免goto语句,引入了更加高级.控制更严格的循环命令:for.while.和do while3.只要开始条件为真,while循环将导致程序重复执行一段代码,总是使用大括号将循环体括起来是个不错的注意,及时循环体只有一行代码,这样可避免这样一种常见的错误,不小心在后面加上分号,导致循环无休止的执行,如 int i = 0 ; while (i < 5); i++ ;4.有时候在执行while循环体中所有语句之前返回到while循环的开头.continue语句用于调到循环的开头.5.而在另一些时候,需要在满足魂环退出条件之前跳出循环break语句立即跳出while循环,继续执行右括号后的语句.6.应该慎用continue和break语句,它们的危险性仅次于goto语句.需要中途跳出循环通常意味着没有使用何时的布尔条件设置循环终止条件,与使用break相比,再循环语句中使用if语句来跳过某些代码通常是一种更好的选择.7.do while循环在测试条件前执行循环体,从而确保循环体至少被执行了一次.8.for(initialization;test;action) statement; initialization语句用来初始化技术变量货位循环做准备,test可以是任何c++表达式,每次循环都将其进行测试,如果test为真,就执行for循环,然后执行action语句通常都是对计数器进行递增.
2012年07月24日 09点07分 9
level 8
14.函数的声明与定义通过比较可以看出,函数名.返回类型和参数列表是一致的,如果它们不同,将出现编译错误,事实上,唯一的不同在于,函数原型以分号结尾且没有函数体..15.函数原型中的参数名和定义中的参数名可以不一样,而且原型中的参数名没有实际意义,只是为程序员提供一些信息,良好的变成习惯是在原型和定义中使用相同的参数名.16.实参按照声明和定义中的参数排列顺序传递,但不进行名称的匹配.17.函数体总是用大括号括起来,及时只有一条语句.18.变量都有作用域,作用域决定了变量在程序中的存活时间以及在什么地方可以访问它.19.在于巨快中声明的变量的作用域为该语句块,只能在该语句块中访问它,离开该语句块后,它将不复存在,全局变量的作用域为全局,在程序的任何地方都可以使用.20.在函数体内声明的变量被称为局部变量,因为它们只能在函数中存在,当函数返回时,局部变量不再可用,编译器对其进行标记,以便销毁.21.局部变量的定义方法与其他变量相同,传入函数的参数也可以被视为局部变量,可以在函数体内使用它们.22.可以在函数的任何地方定义变量,而不仅限于函数开头,变量的作用域为定义它的语句所在的语句块,也就是说,如果在函数中的一对大括号内定义了一个变量,则改变量只在该语句块中可用.23.传入函数的参数作为函数中的局部变量,修改这些参数不会影响调用函数中的值,这种被称为按值传递,这意味着将在函数中创建每个参数的局部副本.24.在函数外面定义的变量的作用域为全局,在程序的任何函数包括main()函数都可以用.25.与全局变量同名的局部变量不会修改全局变量,但是会隐藏它,如果函数中有一个与全局变量同名的局部变量,则在函数中使用该名称时,指的是局部变量而不是全局变量.26.在c++中,全局变量是合法的,但是人们几乎不实用它,在c语言中,全局变量是一个危险但是必不可少的工具.之所以必不可少, 是因为程序员经常需要让数据对很多函数来说是可用的,而将数据作为参数在函数之间传递非常麻烦,尤其当调用序列中的众多函数接受参数只是为了将其传递给其他函数时.全局变量之所以危险,是因为它们是共享的数据,一个函数可能以另一个函数看不到的方式修改全局变量,这将会导致难以发现的错误.27.对于函数体可包含的局域数量和类型几乎没有任何限制,虽然在函数中不能定义其他函数,但可以调用其他函数,函数甚至可以自己调用自己.28.虽然在c++中,对函数的长度没有限制,但涉及良好的函数通常较短,很多程序员都建议函数长度不超过一屏,这样可以同时看到整个函数.函数越短越容易理解和维护.
29.任何合法的c++表达式都可以用作函数实参,包括常量.数学和逻辑表达式以及返回一个值的函数,重要的是,表达式的结果必须与函数期望的实参类型匹配.甚至可将函数作为参数,毕竟函数将返回一个值,其类型与函数的返回类型相同.但是,将函数作为参数可能是代码难以理解和调试.30.遇到关键字return时,其后面的表达式将作为函数的返回值,并立即返回到调用函数,return后面的所有语句都不会被执行.31.对每个在函数原型中或定义中声明的变量,盗用函数都必须为其传递一个值,传递的值必须是声明的类型,档案函数原型也可以声明参数默认值默认值是在没哟提供参数时使用的一个值,如 int fun(int x = 50) ; 该原型指出函数fun()接受一个int参数,并且返回一个int类型的值,如果没有提供参数,则使用默认值50.由于函数原型可以不包含参数名,因此上面的原型也可以写成这样: int fun(int = 50); 声明默认参数对函数定义没有影响,因此在上述函数的定义中,函数头可以写成 intfun(int x) 如果调用该函数时没有提供参数,编译器将把x设置为默认值50.在原型和函数头中,默认参数的名称可以不同,默认值是根据位置而不是函数名指定的.32.如果函数原型定义如下 int fun(int x1,intx2 ,int x3); 则只有给x3指定默认值之后,才能给x2指定默认值;只有x3和x2都有默认值之后,才能给x1指定默认值.

2012年07月24日 09点07分 11
level 8
33.函数参数在函数中的局部变量.34.在一个函数中修改全局变量,将影响所有使用改变量的函数.35.在函数的参数列表中,如果第二个参数没有默认值的时候,不要为第一个参数指定默认值.36.安置传递参数时不悔影响调用函数中变量的值.
37.c++允许创建多个名称相同的函数,这杯称为函数重载,在这些同名函数的参数列表中,必须有不同的参数类型,参数个数或者都有.重载函数的返回类型可以相同也可以不同然而,不同的重载版本不能仅仅是返回类型不同,也就是说,它们还应接受不同的参数.38.即函数的重载版本必须有独特的特征标,及接受的参数类型不同.39.函数多态值得是可以对函数进行重载使其有多种含义.40.内联函数有助于提高性能,递归函数有可能解决其他方法无法解决的问题.41.当我们定义函数是,编译器通常会在内存中创建一组指令,当您调用函数是,程序将跳到这些指令处执行,当函数返回时,程序跳到调用函数的下一行继续执行,42.如果声明函数是使用了关键字inline,扁你其将不会创建函数,而直接将内联函数的代码复制到调用函数中,这样,便不需要进行跳转,就像函数的语句被写道调用函数中一样.43.除非函数只有一两条语句,否则不要将函数声明为内联的,入股程序员指定的内联函数太大,导致生成的可执行文件急剧膨胀,有些编译器可能不悔将其作为内联函数.
44 声明内联函数只需要在声明的时候加上inline即可,在定义函数时并不需要.45.关键字inline是一种提示,它告诉编译器,我们希望函数是内联的,编译器可以忽略这种提示,创建真正的函数调用.46.函数可以调用自身,这被称为递归,47.递归可以是直接的或者简介的.直接递归是指函数调用自身,而间接递归是指函数调用了另一个函数,而后者又调用了它.
92页

2012年07月24日 09点07分 12
level 2
楼主加油撒
2012年07月25日 00点07分 14
[Yeah]谢谢啦
2012年07月25日 03点07分
level 7
楼主注意排版啊,已精
2012年07月26日 00点07分 15
[囧]本来想着弄完在申请的 既然给了 我就好好干 绝对不辜负吧主的期望的
2012年07月26日 00点07分
@追梦使者0913 对吧友有帮助的帖子,当然加精了,哈哈[开心]
2012年07月26日 00点07分
@追梦使者0913 楼主,愿意当小吧吗[哈哈]
2012年07月26日 01点07分
@▲△月流风 [傻笑] 如果有荣幸的话最好了
2012年07月26日 02点07分
level 8
好的 我们继续更新 话说排版还是蛮困难的 本来我的格式都调整好了 一发表又乱了
昨天我号被人给封了 没有来 因此首先把昨天的发上来 而且有什么不懂或者不对 或者什么的及时在楼中楼里回复 我会尽快核对 改正的
2012年07月26日 00点07分 16
level 8
然后我们开始研究指针的东西 ,说道指针 我会非常谨慎的 ,毕竟这个东西比较难 顺便我会每一楼都做的小小的
指针 2012年七月二十四号
1.指针是一个强大而低级的工具,可以使用指针来直接操纵计算机内存.2.指针是存储内存地址的变量.
3.计算机内存被划分成按照顺序编号的内存单元,每个变量都位于某个独特的内存单元中,这被称为地址.
4.能够使用指针以及在底层操纵内存是c++被选择用于编写嵌入式和实时应用程序的原因之一.
5.不同的计算机使用不同的复杂方式对内存进行编号.通常,程序员不需要知道变量的具体地址,因为编译器负责处理细节,然而,要获得变量的内存地址,可以使用地址运算符&.它返回对象在内存中的地址,只需将该运算符放在变量名的前面,就可以返回变量的地址.
6.当我们声明变量时,编译器将根据其数据类型决定为它分配多少内存,编译器负责为变量分配内存,并自动给它们指定地址,我们的编译器也有可能总是给新变量分配4字节整数倍的内存.
2012年07月26日 00点07分 17
level 8
7.每个变量都有地址,及时不知道变量的具体地址,也可以将其地址存储到指针中.
8.指针是另一种类型的变量.因此可以使用任何合法的变量名,有关变量的命名规则和建议也适用于指针名.建议所有的指针都用p开头.
9.如int *p_age = 0; p_age被初始化为0,值为0的指针被称为空指针,所有指针在创建时都应该进行初始化,如果不知道要讲什么值复制给指针,将0赋值给它.
10.没有被初始化的指针被称为失控指针(wild pointer),因为我们不知道它的指向,有可能指向任何东西,失控指针是非常危险的
11.我们一定要初始化所有指针.
12.通过指针的访问变量的值称为间接访问,因为这是通过指针间接的访问变量,间接访问意味着访问谓语指针存储的地址处的值,指针提供了一种间接方式来获取存储在地址出的值.
13.常规变量的类型告诉编译器需要多少内存来存储其值,而指针的类型没有这样的功能,所有指针都存储内存地址,因此长度都相同,在使用32位处理器的计算机上为四个字节,在使用六十四位处理器的计算机上为八个字节.
14.指针的类型告诉编译器,他存储的地址处的对象需要多少内存.
15.间接运算符*也被称为解除引用运算符,对指针解除引用时,将得到指针存储的地址处的值, 如int s = 20 ; int *p = &s; int c = *p; 指针变量p前面的间接运算符的含义是:存储在该地址处的值,这条赋值语句的含义是:将存储在p中的地址出的值赋值给c.
2012年07月26日 00点07分 18
level 8
16.星号的用途: ①声明指针时,*是声明的组成部分,谓语被指向的对象的类型后面, ②对指针接触引用时,解除引用运算符指出要访问指针指向的内存单元中的值 ,而不是地址本身,
17.对指针.其存储的地址以及其存储的地址出的值的区分相当重要.这是人们对指针感到迷惑的根源.
18.除了使用间接运算符来查看存储在指针指向的位置处的数据外,还可以对数据进行操纵,将变量的地址赋给指针后,可以使用该指针来访问它指向的变量中的数据.
19.指针能够让我们操纵地址,而无需知道其实际值,将变量的地址复制给指针时,指针的值为变量的地址,
20.务必使用间接运算符来访问存储在指针指向的地址处的值,
21.五笔将任何指针初始化为合法的地址或者空值,
22.不要将指针指向的地址和存储在该地址处的值混为一谈.
23.在cpp中,数组名是一个常量指针,指向数组的第一个元素, int number[5]; 则这里的number是一个指向数组number的第一个元素number[0]的指针.
24.对指针执行加法,递增,递减运算时,编译器将执行所有的算术运算.
25. 这三个声明 int n1[500]; n1是一个包含五百个int对象的数组 int * n2[500]; n2是一个包含五百个int指针的数组 int * n3 = new int[500]; n3是一个指针,指向的是一个包含五百个int对象的数组
2012年07月26日 00点07分 19
level 8
26.将所有指针初始化的时候初始化为有效的地址或者null(0).
27 指针常被用于完成以下三种任务:
① 管理自由存储区中的数据
② 访问类的成员数据和函数
③安引用传递参数
28.对于const指针,如下三个例子:
const int * p; 这里的p是一个指向整型常量的指针,它指向的值是不可以被修改的 int * const p; 这里p是一个指向整型的常量指针,它指向的值可以修改,但是p不能呢个指向其他变量 const int * const p; 这里的p是一个指向整型的常量的常量指针,它指向的值不能修改,但这个指针也不能指向其他变量
29.理解如上三个例子的技巧在于查看关键字const右边来确定什么被声明为常量,如果该关键字的右边是类型,则值是常量,如果该关键字的右边是指针变量,则该指针本身是常量.
2012年07月26日 00点07分 20
level 8

30.如果对象不应该修改,则按照引用传递时应使用const进行保护
31.务必将指针设置为空,而不要让它违背初始化 (悬浮)
32.不要使用已被删除的指针
.33.不要将指针删除多次.
34.指针提供了一种间接访问数据的强有力的手段,每个变量都有地址,可以通过地址运算符&来获得.地址可以存储在指针中.
35.要声明一个指针,首先指出它指向的对象的类型,然后就爱上间接运算符和指针名.应将指针初始化为指向一个对象或者空(0),要访问指针存储的地址处的值,可使用接触引用运算符. 可以声明const指针和指向const对象的指针,对于前者,不能给它重新赋值使之指向其他对象,而后者不能用于修改它指向的对象.
36.要在自由存储区中创建对象,可以使用关键词new,并将它返回的地址赋给一个指针.要释放指针指向的内存,将关键词delete用于该指针,但这样做并不会销毁指针,因此,释放指针指向的内存后,必须给它重新赋值.
2012年07月26日 00点07分 21
level 8
嗯 这个帖子 就不写知识了 当作预留 顺便以后人多了 给人喷的 嘎嘎 我mfc大吧是迟早要壮大的
2012年07月26日 00点07分 22
现在MFC的市场怎么样
2013年01月31日 08点01分
level 8
再次保留一楼 很有必要 的奥 在编程中我们流出一些东西用来作为扩展
这里就是大家休息的地方啦
2012年07月26日 00点07分 25
1 2 3 4 5 6 尾页