① 老师让用VC做MFC开发,我连C都还不会呢
初学的话不要看网络资源,往往会造成瞎逛的时间占用了学习的时间。
学编程最好的办法就是拿着一本书,认真研读、多多实践。
现在大学里计算机专业用的比较多的书是清华大学出的《C程序设计》,谭浩强写的。
这本书相比其他C语言书籍,比较通俗易懂,更加适合初学者看。
同时把里面的程序都自己动手打出来,执行一下。
编程这个东西是要投入学习才能学会的,所以最好买本书,天天学习。
一般一两个月会有所效果。
但是如果说道做开发的话,还是需要更长的时间的!
上一万的代码量表示你开始起步;
上十万的代码量表示你已经有点点能耐了。
当然一本书只是用来起步的
要想有所成绩,一本书当然不够
而且程序开发不仅仅是要学会语言,语言只是一种工具,只有工具,不会用,是不行的。
后续要学习的还有很多,比如数C++程序设计(这个应用比较广泛)、据结构、离散数学……这些是最起码的。
编译原理、微机接口、计算机组成原理、操作系统……这些是可以帮助你提高整体水平和整体思维的。
呵呵,道路是曲折的,前途是光明的。
② VC 源代码学习
vc源代码:http://sites.google.com/site/qiujiejia1/Home/VC_SourceCode.zip
通用控件使用详解: http://sites.google.com/site/qiujiejia1/Home/通用控件使用详解.zip
CSDN VC编程经验总结:http://sites.google.com/site/qiujiejia1/Home/CSDN_VC编程经验总结.zip
vc++ 编程指南 :http://sites.google.com/site/qiujiejia1/Home/vc++编程指南.zip
MFC问答 : http://sites.google.com/site/qiujiejia1/Home/MFC问答.zip
MFC教程
下载地址:http://cid-3ba16e78a53d2d3d.skydrive.live.com/self.aspx/ShareData/MFC%e6%95%99%e7%a8%8b.rar
建议你看看孙鑫的视频教程,这样学习起来没那么吃力。
下载地址:http://www.verycd.com/topics/35626/
最后希望你在学习VC++和MFC编程前先学习win32编程,这样不至于到后来学习不下去。个人意见,仅供参考。
③ C语言编程书籍
1.《C程序设计》 谭浩强 清华大学出版社
目前最新版本是第三版
配套的习题解答:《C程序设计题解与上机指导》
高质量C++/C编程指南
http://www.codeguru.cn/CPP/AdvanceC++-CProgramGuide/
应用C++技术构建优质软件
http://www.codeguru.cn/CPP/AppliedCpp/
C++编码规范与指导
http://www.codeguru.cn/CPP/C++CodingGuide/
C++PrimerPlus4th
http://www.codeguru.cn/CPP/C++PrimerPlus4th/
C语言函数示例集
http://www.codeguru.cn/CPP/CFunctionExamples/
C语言技术文章
http://www.codeguru.cn/CPP/CLanguageArticle/
C++疑难解答
http://www.codeguru.cn/CPP/CppAQ/
C++实践之路
http://www.codeguru.cn/CPP/CppInAction/
C++应用程序例解
http://www.codeguru.cn/CPP/CppProgramLiJie/
C++参考
http://www.codeguru.cn/CPP/cppreference/
C语言编程宝典之一
http://www.codeguru.cn/CPP/Cprogramdict/
C语言学习和精华文摘
http://www.codeguru.cn/CPP/CStudyAndArticle/
Effective C++
http://www.codeguru.cn/CPP/EffectiveCpp/
GenericProgramming
http://www.codeguru.cn/CPP/GenericProgramming/
TheCprogrammingLanguage
http://www.codeguru.cn/CPP/TheCprogrammingLanguage/
用VC开发ACTIVEX
http://www.codeguru.cn/VC&MFC/ActiveXProgramingWithVC/
用DirctX9进行高级3D游戏程序设计
http://www.codeguru.cn/VC&MFC//
21天学会VC数据库编程
http://www.codeguru.cn/VC&MFC//
STL轻松入门
http://www.codeguru.cn/VC&MFC/EasySTL/
COM+组件服务技术内幕
http://www.codeguru.cn/VC&MFC/InsideCOM+/
OGRE手册
http://www.codeguru.cn/VC&MFC/OGREManual/
OpenGL基础图形编程
http://www.codeguru.cn/VC&MFC/OpenGLJiChuTuXingBianCheng/
MFC程序设计
http://www.codeguru.cn/VC&MFC/progmfc2/
VC技术内幕
http://www.codeguru.cn/VC&MFC/ProgramingVC/
Windows核心编程
http://www.codeguru.cn/VC&MFC//
VC编程经验总结
http://www.codeguru.cn/VC&MFC/VCBianChengJianYanZongJie/
VC编程资料
http://www.codeguru.cn/VC&MFC/VCBianChengZiliao/
VC高级编程
http://www.codeguru.cn/VC&MFC/VCGaoJiBianCheng/
vchome图形图像编程技术篇
http://www.codeguru.cn/VC&MFC/vchomeGraph/
VC知识库
http://www.codeguru.cn/VC&MFC/vckbase/
vc++ 编程指南
http://www.codeguru.cn/VC&MFC/VCProgramGuide/
Windows程序设计
http://www.codeguru.cn/VC&MFC/WindowsProgramming/
Winsock程序员疑难解答
http://www.codeguru.cn/VC&MFC/WinsockProgrammerFAQ/
Microsoft编程精粹
http://www.codeguru.cn/VC&MFC/WritingCleanCode/
④ Microsoft Visual C++ 6.0的使用指南
中国IT实验室 www. chinaitlab .com 很多计算机相关书籍 喜欢的朋友可以去瞧瞧;(不过顶一下再走,呵呵) 给出部分书的名称: 精通Visual C++图像编程 MFC中文帮助 MFC程序员的WTL指南 VC6从入门到精通-开发者眼中的VC VC6从入门到精通-附录 MS VC++6.0程序员指南 VC6从入门到精通-基础篇 VC6从入门到精通-VC与INTERNET Visual C++ 使用指南 Visual C++知识库 Visual C++ MFC入门教程 Visual C++ 6 参考大全 跟我学 VISUAL C++ 6.0 Visual C++ 6.0语言参考手册 Visual Lisp开发人员手册 Visual C++ 从入门到精通 Visual J++ 6.0 WFC 类库手册 Visual InterDev 从入门到精通 Visual C++ 6.0用户开发手册 VC编程指南 VC++6.0 类库参考手册 VC++database编程大全 VC6.0 运行库参考手册 Visual C++6.0运行库参考手册 VC++6.0模板库手册 VC++面向对象入门 VC新手学堂 Visual C++ 6.0预处理器参考手册 VC5.0开发人员参考手册 VC6中文版程序员开发指南 Visual J++ 6.0 WFC类库参考手册一 VC6 模板库参考手册 VC++编程指南 Visual J++ 6.0 WFC类库参考手册二 VC6.0 MFC类库参考手册 VC6从入门到精通-VC与数据库管理 MS VC++ 6.0 MFC类库参考手册 一 MS VC++ 6.0 MFC类库参考手册 二 走进Visual C++ 实例篇 Visual C++ 实践与提高-图形图像编程篇 Visual C++ 数字图像处理 VC-MFC编程实例 Visual C++实践与提高_环境剖析IDE篇 Visual C++程序设计:基础与实例分析 Visual C++ 6.0实例 Visual C++课程设计案例精编 Visual C++ 6.0开发与实例 VISUAL C++扩展编程实例 Visual C++6.0高级编程技巧与实例 VC++扩展编程实例 Visual C++编程技巧与范例 战胜Visual C++必做练习50题 Visual C++6.0编程与实例解析 VC-MFC扩展编程实例 MFC资源大全 精通Visual C++ 6.0 Visual C++程序模块集锦 Visual C++_Turbo C串口通信编程 Visual C++ 6.0应用编程150例 Visual C++ 6.0实例教程电子教案 教程篇 MFC Windows程序设计 Visual C++网络通信协议分析 VC6.0数据库编程 Visual C++ 学习教程 Visual_C++_新起点—6.0实用教程 Visual C++ 6-24学时学习教程 Visual C++ 6.0 21天自学教程 VC++网络教程 Visual C++ MFC 简明教程 VC 数据库编程三部教学 Visual C++ 6.0 数据库编程大全 VC新手学堂简明教程 Visual C++ 6.0 开发宝典 Visual C++ 6.0 教程 Visual C++ 6.0 高级编程 VC++6.0培训教程 Visual J++ 6.0 即学即用 Visual C++与面向对象程序设计教程 Visual C++6.0高级开发教程 Visual C++.NET 宝典 Visual C++5.0 程序设计 技术与应用 VC++6.0 用户界面制作技术与应用实例 深入浅出WINDOWS MFC程序设计 Visual C++ 角色扮演游戏程序 Visual C++6.0程序设计提高篇 VC++编程资料 VC++ 函数经典 VC++与Matlab混合编程的快速实现 Visual C++ 5.0易学活用 VISUAL C++ 设计WIN32应用程序 Visual C++入门与应用 Visual C++6.0开发宝典 Visual C++6.0技术内幕 VC++6编程方法 深入VC编程内幕 VC编程经验总结 用VC++编写USB接口通信程序 用VC开发CGI 疯狂VC技巧集 VC6开发宝典 Visual C++经典 Visual C++ 6 轻松进阶 VC编程常用捷径 MFC技术内幕 VC深入编程
求采纳
⑤ 我想成为C++编程高手,该学什么课程
1、《计算机组成原理》(熟悉)
2、《数据结构》(掌握)
3、《操作系统》(了解->熟悉)
4、《C语言程序设计》(掌握)
5、《编译原理》(了解原理)
6、《汇编语言》(了解)
7、《计算机网络》(了解)
8、《软件工程》(了解)
9、《关系数据库》(熟悉)
10、《The C++Languege 》(掌握)
11、《面向对象设计》(掌握;结合C++学习)
window程序设计
深入浅出MFC
⑥ Microsoft Visual C++ 6.0的使用指南
中国IT实验室 www. chinaitlab .com 很多计算机相关书籍 喜欢的朋友可以去瞧瞧;(不过顶一下再走,呵呵)
给出部分书的名称:
精通Visual C++图像编程 MFC中文帮助 MFC程序员的WTL指南
VC6从入门到精通-开发者眼中的VC VC6从入门到精通-附录 MS VC++6.0程序员指南
VC6从入门到精通-基础篇 VC6从入门到精通-VC与INTERNET Visual C++ 使用指南
Visual C++知识库 Visual C++ MFC入门教程 Visual C++ 6 参考大全
跟我学 VISUAL C++ 6.0 Visual C++ 6.0语言参考手册 Visual Lisp开发人员手册
Visual C++ 从入门到精通 Visual J++ 6.0 WFC 类库手册 Visual InterDev 从入门到精通
Visual C++ 6.0用户开发手册 VC编程指南 VC++6.0 类库参考手册
VC++database编程大全 VC6.0 运行库参考手册 Visual C++6.0运行库参考手册
VC++6.0模板库手册 VC++面向对象入门 VC新手学堂
Visual C++ 6.0预处理器参考手册 VC5.0开发人员参考手册 VC6中文版程序员开发指南
Visual J++ 6.0 WFC类库参考手册一 VC6 模板库参考手册 VC++编程指南
Visual J++ 6.0 WFC类库参考手册二 VC6.0 MFC类库参考手册 VC6从入门到精通-VC与数据库管理
MS VC++ 6.0 MFC类库参考手册 一 MS VC++ 6.0 MFC类库参考手册 二 走进Visual C++
实例篇
Visual C++ 实践与提高-图形图像编程篇 Visual C++ 数字图像处理 VC-MFC编程实例
Visual C++实践与提高_环境剖析IDE篇 Visual C++程序设计:基础与实例分析 Visual C++ 6.0实例
Visual C++课程设计案例精编 Visual C++ 6.0开发与实例 VISUAL C++扩展编程实例
Visual C++6.0高级编程技巧与实例 VC++扩展编程实例 Visual C++编程技巧与范例
战胜Visual C++必做练习50题 Visual C++6.0编程与实例解析 VC-MFC扩展编程实例
MFC资源大全 精通Visual C++ 6.0 Visual C++程序模块集锦
Visual C++_Turbo C串口通信编程 Visual C++ 6.0应用编程150例 Visual C++ 6.0实例教程电子教案
教程篇
MFC Windows程序设计 Visual C++网络通信协议分析 VC6.0数据库编程
Visual C++ 学习教程 Visual_C++_新起点—6.0实用教程 Visual C++ 6-24学时学习教程
Visual C++ 6.0 21天自学教程 VC++网络教程 Visual C++ MFC 简明教程
VC 数据库编程三部教学 Visual C++ 6.0 数据库编程大全 VC新手学堂简明教程
Visual C++ 6.0 开发宝典 Visual C++ 6.0 教程 Visual C++ 6.0 高级编程
VC++6.0培训教程 Visual J++ 6.0 即学即用 Visual C++与面向对象程序设计教程
Visual C++6.0高级开发教程 Visual C++.NET 宝典 Visual C++5.0 程序设计
技术与应用
VC++6.0 用户界面制作技术与应用实例 深入浅出WINDOWS MFC程序设计 Visual C++ 角色扮演游戏程序
Visual C++6.0程序设计提高篇 VC++编程资料 VC++ 函数经典
VC++与Matlab混合编程的快速实现 Visual C++ 5.0易学活用 VISUAL C++ 设计WIN32应用程序
Visual C++入门与应用 Visual C++6.0开发宝典 Visual C++6.0技术内幕
VC++6编程方法 深入VC编程内幕 VC编程经验总结
用VC++编写USB接口通信程序 用VC开发CGI 疯狂VC技巧集
VC6开发宝典 Visual C++经典 Visual C++ 6 轻松进阶
VC编程常用捷径 MFC技术内幕 VC深入编程
⑦ vc++6.0操作方法
VC++6.0上机操作指南
贵州大学计算机科学与技术学院
张志明
2006年9月
目录
1. Visual C++ 控制台应用程序上机实现步骤
2. MFC对话框应用程序实现举例
3. MFC单文档应用程序实现举例
4. 用32位调试程序了解类和对象的内存映象
1. Visual C++控制台应用程序(Win32 Console Application Project)
上机实现步骤
一. 单文件程序的实现
本教材中的程序在Visual C++环境下都是以Win32 Console Application 项目实现,而且都是单文件程序,即只含有一个源程序(.cpp)文件的C++程序。
一个单文件程序在Visual C++ IDE中的实现主要步骤是:(1)建立新项目(2)建立新文件(3)输入源代码(4)编译、连接,生成可执行程序文件。以上步骤均可在Visual C++的Wizard指导下通过对话框交互输入完成。
1. 建立新项目:
每个C++程序的实现都要建立一个项目。所谓项目是一个文件生成过程的管理单位,项目名称就是最后实现的可执行文件的名称,一个项目就是与生成这个可执行程序文件相关的所有源文件和中间文件的集合,存放在以项目名称命名的文件夹中。
图1 Microsoft Visual C++ 6.0系统初始界面
执行菜单命令File>New,打开New对话框:
图2 打开New对话框
在New对话框的Project选项卡中选择Win32 Console Application选项,然后输入项目存放位置项目名称后确定。
图3 输入项目位置和名称
在Win32 ConsoleApplication-Step 1 of 1对话框中选择An empty project,完成后返回。系统弹出新建项目信息报告对话框。
图4 Win32 ConsoleApplication-Step 1 of 1对话框
图5 新建项目信息报告
2. 建立新文件:
再一次执行菜单命令File>New,打开New对话框,在File选项卡中选择C++ Sourse File选项,然后输入源程序文件名。完成后系统打开源程序(.cpp)文件编辑窗口。
图6 在New对话框输入源程序文件名
3. 输入源代码:
此时即可在源程序(.cpp)文件编辑窗口输入源程序代码。
图7 源程序(.cpp)文件编辑窗口
4. 生成和运行可执行程序文件:
11从源程序文件生成可执行文件,需要经历编译,连接两步,在VC++6.0编程环境中可以有以下几种操作方式:
(1)打开Build (编译)菜单,先执行Compile命令,接着再执行Build命令。
(2)打开Build (编译)菜单,执行Rebuilde All命令。
(3)打开Build (编译)菜单,直接发出Execute 执行命令,一次性完成编译、连接和启动程序执行的任务。
(4)直接单击“!”(BuildExecute)命令按钮,一次性完成编译、连接和启动程序执行的任务。
图8 Build (编译)菜单
图9 程序运行结果
打开工程文件夹可以找到该工程的所有工作文件。
打开工程文件夹中的Debug子文件夹,可以找到生成的可执行(.exe)文件。
二. 多文件程序的实现
一个较大型C++程序,有时需要包含多个源程序文件。一种常见的情况是将类的定义放在头(.h)文件中,将类的实现或对类的访问放在源(.cpp)文件中。
多文件程序的实现与单文件程序的实现方式需要经历同样的步骤,不同的是,在编译之前需要利用新建文件对话框逐一将所有需要的文件追加到项目中。
1. 建立新项目:
2. 建立新文件:
(1)加入和编辑头文件:
在New对话框,在File选项卡中选择C/C++ Header File选项,然后输入头文件名。完成后系统将打开源程序(.h)文件编辑窗口。
(2)加入和编辑源程序文件
打开New对话框,在File选项卡中选择C++ Sourse File选项,然后输入源程序文件名。完成后系统打开源程序(.cpp)文件编辑窗口。
注意:在源程序文件中应该用文件包含命令将头文件包含进来。如下例源程序文件s719.cpp的第一行:#include"h719.h"
3. 生成和运行可执行程序文件:
步骤同单文件程序的生成和执行。
#
2.MFC对话框应用程序实现举例
本指导书给出3个MFC对话框应用程序的实现实例,例1为求三科平均成绩的简单程序,例2为实现一个具有四则运算功能的简单计算器,例3为一个彩票机程序(提供手动摇号和自动摇号两个彩票机程序版本)。
通过这些程序可以达到以下目的:
掌握AppWizard的使用方法。
掌握Workshop中各种视图的使用和在不同视图之间切换的方法。
学会利用控件工具箱中的控件定制对话框界面。
学会控件变量及其他类成员变量的设置。
学会消息映射的概念和操作方法。
学会查看和编辑代码。
学习编译、运行和调试对话框应用程序。
例1.实现一个求三科平均成绩的MFC对话框应用程序。假设运行时的界面如下:
实现步骤:
1. 在Visual C++ 6.0工作开发环境中,New对话框中选择MFC AppWizard [exe]项目,输入项目名称并指定存放位置。
2. 在MFC Wizard Step1选择Dialog(基本对话)程序类型,在MFC Wizard Step2中输入对话框标题“求平均成绩”。
AppWizard对话结束后打开对话框编辑窗口如下:
3. 定制界面:添加控件、设置属性
删除对话框模板中原有的“确定”按钮和内容为“TODO: 在这里设置对话控制。”的Static Text控件。
在控件工具箱中取一个Group Box控件,调整适当大小,鼠标右键单击该控件边框,在弹出的下拉菜单中打开属性对话框。将Group Box控件标题由“Static”改为“求平均分”。
在Group Box中添加4个Static Text控件,按同样方法修改它们的标题属性为“成绩1”、“成绩2”、“成绩3”和“平均分”。
在Group Box中添加4个Edit Box控件,打开属性对话框的Extended Styles选项卡中将它们设置为文本右对齐(Right Aligend Text)方式。其中第4 个Edit Box控件的Styles属性设置为Read-only。
在Group Box中添加一个按钮Button1,打开属性对话框将按钮的标题属性改为 “计算平均分”。
鼠标右键单击“取消”按钮边框,在弹出的下拉菜单中打开属性对话框。将按钮标题改为“退出”。
设计完成的界面如图,其中控件属性列表如下:
控件
ID号
标题
属性
Group Box
IDC_STATIC
求平均分
Static Text
IDC_STATIC
成绩1
Static Text
IDC_STATIC
成绩2
Static Text
IDC_STATIC
成绩3
Static Text
IDC_STATIC
平均分
Edit Box
IDC_EDIT1
Align text:Right
Edit Box
IDC_EDIT2
Align text:Right
Edit Box
IDC_EDIT3
Align text:Right
Edit Box
IDC_EDIT4
Align text:Right;Read-only
Button
IDC_BUTTON1
计算平均分
Button
IDCANCEL
退出
4. 添加成员变量
单击View(查看)>ClassWizard(建立类向导)菜单进入ClassWizard,打开Member Variables选项卡:为4 个Edit Box控件设置对应的变量:
同样的方法为其它3个Edit Box控件设置变量:
控件ID
变量名
变量类型
数值范围
IDC_EDIT1
m_S1
int
0~100
IDC_EDIT2
m_S2
int
0~100
IDC_EDIT3
m_S3
int
0~100
IDC_EDIT4
m_Sav
CString
5. 添加消息映射(两条消息)
进入ClassWizard,打开Messages Maps选项卡,在Object Ids中选择CAverageDlg,在Messages中鼠标单击WM_INIDIALOG,在Member functions中出现生成的消息映射成员函数OnInitDialog提示:
在Object Ids中选择IDC_BUTTON1,在Messages中鼠标单击BN_CLIKED,在弹出对话框中单击OK按钮:在Member functions中出现第二个生成的消息映射成员函数OnButton1。
6. 添加代码
在ClassWizard中双击OnInitDialog函数,打开代码编辑器中的OnInitDialog()函数代码,找到其中的 // TODO: Add extra initialization here,加入下面的黑体字给出的3行代码:
BOOL CDlgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
…;
// TODO: Add extra initialization here
m_Sav="0.00";
m_S1=m_S2=m_S3;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
在ClassWizard中双击OnButton1()函数,打开代码编辑器中的OnButton1()函数代码,找到其中的 // TODO: Add extra initialization here,加入下面的黑体字给出的4行代码:
void CDlgDlg::OnButton1()
{
// TODO: Add extra initialization here
UpdateData();
double ave=(double)(m_S1+m_S2+m_S3)/3.0;
m_Sav.Format("%6.2f",ave);
UpdateData(FALSE);
}
7. 编译运行程序:
注释:
UpdateData()函数的作用是允许更新控件变量,
UpdateData(FALSE) 禁止更新控件变量的值。
例2.设计MFC对话框应用程序,实现一个具有四则运算功能的简单计算器。
1. 新建项目:
2. 定制界面:
(1) 修改MFC AppWizard自动创建的对话框项目模板。删除模板上自动创建的三个控件。
(2) 加入“简单计算器”、“请输入数据:”、“结果”三个静态文本框和相应的3个编辑框。
(3) 加入一个Group Box,标题修改为“请选择运算符:”,并在其中放入4个Radio Button将标题分别改为“+”、“-”、“*”、“/”。
(4) 继续用鼠标从工具箱中向对话框添加和3个按钮控件,更改按钮的标题为“计算”、“清除”、“关闭”。
3. 添加变量
本例中用到以下4个CSimpleCalcDlg类的成员变量:
变量类型
名称
float
m_N1
float
m_N2
float
m_ Result
char
Operator
用ClassWizard为编辑框添加变量:m_N1, m_N2, m_Result
变量char Operator的添加方法:
在WorkSpace中进入ClassView视图, 鼠标右键单击CSimpleCalcDlg, 在菜单中选择“Add Member Variable…”
然后在弹出的对话框的输入变量类型和名称:
4. 添加消息映射
用ClassWizard为按钮控件添加消息映射:
继续用ClassWizard为Radio Button控件添加消息映射:
5. 加入单击按钮时的事件响应代码
在实现文件(cpp文件)中加入单击按钮时的事件响应代码。(双击一个按钮可直接进入函数编辑)
//选择运算符
void CSimpleCalcDlg::OnRadio1()
{ Operator='+'; }
void CSimpleCalcDlg::OnRadio2()
{ Operator='-'; }
void CSimpleCalcDlg::OnRadio3()
{ Operator='*'; }
void CSimpleCalcDlg::OnRadio4()
{ Operator='/'; }
//计算
void CSimpleCalcDlg::OnButton1()
{
UpdateData();
switch(Operator)
{
case '+':
m_Result=m_N1+m_N2;
break;
case '-':
m_Result=m_N1-m_N2;
break;
case '*':
m_Result=m_N1*m_N2;
break;
case '/':
if(m_N2 == 0 )
MessageBox("除数不能为零!");
else
{
m_Result = m_N1/m_N2;
break;
}
default:
m_Result=m_N1+m_N2;
}
UpdateData(FALSE);
}
//清除
void CSimpleCalcDlg::OnButton2()
{
UpdateData();
m_N1=0;
m_N2=0;
m_Result=0;
UpdateData(FALSE);
}
//关闭
void CSimpleCalcDlg::OnButton3()
{ CDialog::OnOK(); }
6. 编译运行程序
例3. 彩票机程序:
本例给出手动摇号和自动摇号两个彩票机程序版本。
1. 彩票机界面:
定制含有7个Edit Box 、1个Progress(进度条)和3侦探按钮控件的对话框界面如下:
2. 设置变量:
(1) 设置进度条变量:
(2) 设置7个编辑框变量:
(3)添加类成员变量m_x:
3. 消息映射:
在ClassWizard中产生OnInitDialog、OnButton1、OnButton2、OnOK四个消息映射函数:
4. 添加代码:
//初始化
BOOL CLotusDlg::OnInitDialog()
{
CDialog::OnInitDialog();
……
// TODO: Add extra initialization here
m_x=0;
m_pProg.SetRange(0,70);
srand((unsigned)time(NULL));
return TRUE; // return TRUE unless you set the focus to a control
}
(一)手动摇号
//手动摇号,每按一次摇号按钮出一个号
void CLotusDlg::OnButton1()
{
// TODO: Add your control notification handler code here
switch(m_x/10)
{
case 0:
m_N1=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 1:
m_N2=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 2:
m_N3=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 3:
m_N4=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 4:
m_N5=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 5:
m_N6=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 6:
m_N7=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
}
UpdateData(FALSE);
}
void CLotusDlg::OnButton2()
{
// TODO: Add your control notification handler code here
m_x=0;
m_N1=0;
m_N2=0;
m_N3=0;
m_N4=0;
m_N5=0;
m_N6=0;
m_N7=0;
UpdateData(FALSE);
m_pProg.SetPos(1);
}
void CLotusDlg::OnOK()
{
CDialog::OnOK();
}
(二)自动摇号
将前面实现的手动摇号程序修改为自动定时摇号。
添加OnTimer消息映射函数:
//按摇号按钮启动摇号
void CLotusDlg::OnButton1()
{
SetTimer(1,2000,NULL);
}
void CLotusDlg::OnButton2()
{
m_x=0;
m_N1=0;
m_N2=0;
m_N3=0;
m_N4=0;
m_N5=0;
m_N6=0;
m_N7=0;
UpdateData(FALSE);
m_pProg.SetPos(0);
KillTimer(1);
}
void CLotusDlg::OnTimer(UINT nIDEvent)
{
switch(m_x/10)
{
case 0:
m_N1=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 1:
m_N2=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 2:
m_N3=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 3:
m_N4=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 4:
m_N5=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 5:
m_N6=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 6:
m_N7=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
}
UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
void CLotusDlg::OnOK()
{
KillTimer(1);
CDialog::OnOK();
}
5. 注释:
(1)产生随机数的方法
函数unsigned int rand() 产生随机数。
函数void srand(unsigned int seed) 设定随机数产生器的种子,其中seed为随机数产生器的种子,本例中用系统时钟当前值作随机数种子:
srand((unsigned)time(NULL));函数的
表达式rand()%36+1产生1-36之间的随机数
(3) 定时器的使用方法
定时器的使用涉及OnTimer、SetTimer、KillTimer三个函数。
SetTimer用于设定定时时间和启动定时器,其中第一个参数是定时编号,第二个参数是定时的毫秒数。本例中将1号定时器定时时间设定为2秒:
SetTimer(1,2000,NULL);
定时器启动以后将持续工作,每到达一次定时时间即启动一次OnTimer消息函数的执行。KillTimer的作用是停止指定定时器的工作。
3.
MFC单文档应用程序实现举例
创建单文档应用程序的一般步骤:
利用AppWizard创建单文档应用程序框架。
在文档类中声明保存文档数据所需要数据对象。
完成文档类的OnNewDocument函数,初始化新文档。
完成文档类的Serialize函数,保持和加载文档数据。
完成视类的OnInitialUpdate函数,初始化显示。
完成视类的OnDraw函数,显示当前文档内容。
在视类中加入可以使用户编辑文档数据所需的代码。
本实验指导通过以下4 个实验循序渐进演示创建单文档应用程序的基本操作,在前一个例子中演练过的操作,在后面的中出现时不再重复描述。
例1 一个简单的单文档应用程序——记事本程序
例2 简单文本和图形输出
例3 利用定时器输出滚动字幕
例4 文档串行化编程
例1.
一个简单的单文档应用程序——记事本程序
1. 只要在AppWizard的Step 6将Base Class设置为EditView,AppWizard就自动完成了一个记事本程序的设计:
2. 运行程序,即可测试记事本的各种功能:
3.说明:
(1)打开Workshop中的Class视图,可以看到,一个简单的单文档应用程序向导自动建立五个类:
向导自动建立的类
相应源文件
其他源文件
相应头文件
其他头文
⑧ 我要学什麽c语言系类
【牢记24条】
1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。
2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。
3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。
4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。
5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。
6.知道一点东西,并不能说明你会写c++,是需要经验积累的。
7.学c++并不难,--难的是长期坚持实践和不遗余力的博览群书;
8.看再多的书是学不全c++,要多实践。
9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
10.学习c++最好的方法之一就是多练习;
11.在任何时刻都不要认为自己手中的书已经足够了;
12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;
15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;
16.不要漏掉书中任何一个练习——请全部做完并记录下思路;
17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。
18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;
19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理解了;
20.记录下在和别人交流时发现的自己忽视或不理解的知识点;
21.保存好你做过的所有的源文件----那是你最好的积累之一;
22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如google、网络都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!
23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。
24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!
浮躁的人容易问:我到底该学什么;----别问,学就对了;
浮躁的人容易问:c++有钱途吗;----建议你去抢银行;
浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!
浮躁的人分两种:只观望而不学的人;只学而不坚持的人;
浮躁的人永远不是一个高手。
十部算法经典着作 合集
http://www.codeguru.cn/cpp/10book
二级试题全集
http://www.codeguru.cn/cpp/2JiCShiTiJi
高质量C++/C编程指南
http://www.codeguru.cn/cpp/AdvanceC++-CProgramGuide
应用C++技术构建优质软件
http://www.codeguru.cn/cpp/AppliedCpp
ASCII码表
http://www.codeguru.cn/cpp/ASCII
C\C++语言程序百例
http://www.codeguru.cn/cpp/C&&C++YuanYanChenXuBaili
C++编码规范与指导
http://www.codeguru.cn/cpp/C++CodingGuide
C++PrimerPlus4th
http://www.codeguru.cn/cpp/C++PrimerPlus4th
C++语言程序设计课件(作者:郑莉)
http://www.codeguru.cn/cpp/C++ProgramingZhengLi
C++语言程序设计
http://www.codeguru.cn/cpp/C++YuYanChengXuSheJi
C语言函数示例集
http://www.codeguru.cn/cpp/CFunctionExamples
C高级编程技术
http://www.codeguru.cn/cpp/CGaoJiBianCheng
C语言技术文章
http://www.codeguru.cn/cpp/CLanguageArticle
C++疑难解答
http://www.codeguru.cn/cpp/CppAQ
C++实践之路
http://www.codeguru.cn/cpp/CppInAction
C++应用程序例解
http://www.codeguru.cn/cpp/CppProgramLiJie
C++参考
http://www.codeguru.cn/cpp/cppreference
CPrimerPlus5thEdition习题答案
http://www.codeguru.cn/cpp/CPrimerPlus5thEditionAnswer
C语言编程宝典之一
http://www.codeguru.cn/cpp/Cprogramdict
C语言参考手册
http://www.codeguru.cn/cpp/Creference
C语言学习和精华文摘
http://www.codeguru.cn/cpp/CStudyAndArticle
数据访问模式
http://www.codeguru.cn/cpp/DataAccessPatterns
数据结构与算法综合资料库
http://www.codeguru.cn/cpp/DataStructsLibrary
数据结构-严蔚敏
http://www.codeguru.cn/cpp/DataStructYanWeiMin
Effective C++
http://www.codeguru.cn/cpp/EffectiveCpp
GenericProgramming
http://www.codeguru.cn/cpp/GenericProgramming
设计模式迷你手册
http://www.codeguru.cn/cpp/MiniDesignPattern
经典排序算法
http://www.codeguru.cn/cpp/SortingAlgorithms
谭浩强C语言
http://www.codeguru.cn/cpp/TanHaoQiangC
TheC++ProgrammingLanguage3rdEd
http://www.codeguru.cn/cpp/TheC++ProgrammingLanguage3rdEd
TheCprogrammingLanguage
http://www.codeguru.cn/cpp/TheCprogrammingLanguage
TurboC2.0集成开发环境的使用
http://www.codeguru.cn/cpp/TurboC2ShiYong
用VC开发ACTIVEX
http://www.codeguru.cn/VC&MFC/ActiveXProgramingWithVC
用DirctX9进行高级3D游戏程序设计
http://www.codeguru.cn/VC&MFC/
APracticalGuideUsingVisual C++andATL
http://www.codeguru.cn/VC&MFC/
21天学会VC数据库编程
http://www.codeguru.cn/VC&MFC/
STL轻松入门
http://www.codeguru.cn/VC&MFC/EasySTL
InsideAtl
http://www.codeguru.cn/VC&MFC/InsideAtl
COM+组件服务技术内幕
http://www.codeguru.cn/VC&MFC/InsideCOM+
MFC参考手册
http://www.codeguru.cn/VC&MFC/MFCReference
Windows网络编程技术
http://www.codeguru.cn/VC&MFC/
OGRE手册
http://www.codeguru.cn/VC&MFC/OGREManual
OpenGL基础图形编程
http://www.codeguru.cn/VC&MFC/OpenGLJiChuTuXingBianCheng
MFC程序设计
http://www.codeguru.cn/VC&MFC/progmfc2
VC技术内幕
http://www.codeguru.cn/VC&MFC/ProgramingVC
Windows核心编程
http://www.codeguru.cn/VC&MFC/
21天学会ActiveX编程
http://www.codeguru.cn/VC&MFC/TeachYourselfActivexIn21Days
游戏编程大师技巧(第二版)
http://www.codeguru.cn/VC&MFC/
VC编程经验总结
http://www.codeguru.cn/VC&MFC/VCBianChengJianYanZongJie
VC编程资料
http://www.codeguru.cn/VC&MFC/VCBianChengZiliao
VC常见问题集(中文)
http://www.codeguru.cn/VC&MFC/VCFaqsCN
VC高级编程
http://www.codeguru.cn/VC&MFC/VCGaoJiBianCheng
vchome图形图像编程技术篇
http://www.codeguru.cn/VC&MFC/vchomeGraph
VC知识库
http://www.codeguru.cn/VC&MFC/vckbase
VC语言参考手册
http://www.codeguru.cn/VC&MFC/VCLANG
vc++ 编程指南
http://www.codeguru.cn/VC&MFC/VCProgramGuide
Windows程序设计
http://www.codeguru.cn/VC&MFC/WindowsProgramming
Winsock程序员疑难解答
http://www.codeguru.cn/VC&MFC/WinsockProgrammerFAQ
Microsoft编程精粹
http://www.codeguru.cn/VC&MFC/WritingCleanCode
⑨ 我初学C语言,对C不是很了解,哪位高手可以告诉我一些学习方法,经验,万分感激
自己博客上的文章
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢?
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。
第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。
那么究竟怎样学习C语言呢?
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turbo?C?2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo?C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo?C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。?
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。
那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。
⑩ vc++入门看哪本书好些
VC++的编译语言是C++,开发目标是Windows程序,使用的基础类库是MFC。所以要学会使用VC++编程,下面的几项课程是必须掌握的:C++语言、Windows编程、MFC。
我建议的顺序是C++语言---->Windows编程---->MFC,这是因为:
C++是最基本的语法规则,毫无疑问是我们掌握如何与计算机交流的第一步。由于我们的开发目标是Windows,所以要掌握Windows编程的原理以及Windows提供的应用程序接口(API)。而MFC本质上是以C++面向对象的方式对WindowsAPI进行封装,如果不理解Windows编程的一些重要原理,比如API调用、消息处理机制等等,仅学习MFC必然只能理解得很片面,模棱两可,即使知道怎样做也不知道为什么这样做。
下面列出一些公认的经典书:
The C Programming Language----------Brian W.Kernighan,Dennis M.Ritchie“介绍标准C语言及其程序设计方法的权威性经典着作”---
C++ Primer----------Stanley B. Lippman“帮助全球无数程序员学会C++”---
Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”---
Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”---
Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”---
深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷
MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise
Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski
深入解析MFC-------------MFC四大天王”-----------George Shepherd
这些书籍包括其作者都是响当当的。
如果你不打算深入研究编程,而只是作为临时任务的工具的话,看一些应用方面,有很多例子代码的书就行,比如孙鑫的《VC++深入详解》,或者一些其他的大部头工具书。如果想研究编程,深入理解MFC的工作机制,首先要精通Windows编程。《Windows 程序设计》是较为基础的,实例代码很多,《Windows核心编程》和《Windows高级编程指南》就比较拔高了,涉及很多操作系统的知识。掌握Windows编程后再研究MFC就轻松多了,它就是对WindowsAPI的封装,侯捷的《深入浅出MFC》讲得蛮细致深入。