1 地址1(from《win8下安装 Microsoft Visual C++(vc6.0)》),电脑上下载不了,用手机可以下载; 下载后可用;VC6.0通用补丁:特别适合于解决:"Compiling...,Error spawning cl.exe"错误。使用方法:退出VC,运行此文件,单击"是",再启动VC,即可解决问题。
2 地址2,电脑上下载不了;
c++中设置静态文本框响应点击事件:1,修改其ID号,因为默认在同一个父窗体中其ID号是相同的。2,修改属性-style 选上Notify复选项。
ClassView:列出项目中的类和成员函数;双击列表中的类或函数,即可以文本编辑器中打开该类的源文件;
ResourceView:列出项目的资源数据;双击列表中的数据项会打开合适的编辑器并加载资源;
FileView:列出项目的源文件,头文件;
资源包括菜单、对话框、图标、字体、快捷键等。开发者可以通过编辑资源来定义windows程序的界面部分;
资源的定义是以文本的形式存放在资源定义文件中,并由编译器编译为二进制代码。
在VC++中,提供了一个资源编辑器,使开发者能在图形方式下对各种资源进行编辑。
Windows是消息驱动(或事件驱动)的操作系统。消息驱动意味着操作系统的每个部分与其它部分,以及应用程序之间通过windows消息进行通信。例如当我们移动鼠标或按下键盘上某个键,windows就会捕捉到这个消息,并存储到消息队列中等待处理(通常是转发给相应的操作系统某个处理程序或者应用程序)。)
以前的软件开发者采用SDK(windows software development kit软件开发工具包)进行windows编程。
SDK的核心内容是API(应用程序编程接口)、事件驱动和消息循环。
API是一个程序包,其内有一组函数,供程序员用它创建其他程序。windows正是利用API实现图形用户界面(GUI)。
选择为开发windows应用而设计的精美的应用程序框架(Application framework).AF是一个完整的程序模型,具备标准应用软件所需的一切基本功能,如文件存取、打印预览。
AF提供了标准和程序模型,我们只需要按个人需要添加一些材料:在派生类中必定虚拟函数,或在派生类中加上新的程序函数。微软的MFC是一种十分成功的AF。
MFC是一个建立在windows API基础上的C++类库,目的是使windows程序设计过程更有效率。我们可以把MFC看作一个零组件“超级市场”。这些零组件(类)功能以及彼此间的关系都已经定义好,我们可以从中选择自己需要的零件构造出一个应用程序。
MFC AppWizard可以创建三种类型的应用程序:
1 Single documents:一次只允许打开一个子文档窗体;如记事本;
2 Multiple documents:允许打开多个子文档窗体;如ms word。
3 Dialog-based:基于对话框的应用将显示一个对话框提供用户输入或者进行选择。
CTimeSpan m_timespan(3,4,5,6); //3天,4小时,5分,6秒;
LONG m_totalSeconds = m_timespan.GetTotalSeconds(); //获得完整秒数;
至于为什么要用C++而不是C呢?对于我们来说理由很现实:时间紧任务重,用C的话需要发明的轮子太多了,C++的抽象层次高,代码量少,bug相对就会更少,现代C++的内存管理完全自动,以至于从头到尾我根本不记得曾遇到过什么内存管理相关的bug,现代C++的错误处理机制也非常适合快速开发的同时不用担心bug乱飞。
C++语言获取环境变量:char *descr = getenv("PROGRAMFILES");m_text = strcat(descr,"\\Mozilla Firefox\\firefox.exe");PATH、ALLUSERSPROFILE、LOCALAPPDATA、APPDATA。
VC 6 代码分行书写,在行末紧跟符号"\";
Win32应用程序是Windows程序设计的基础和核心,本书所采用的MFC应用程序实质是对Win32应用程序的封装和整理,把面向过程化的Win32应用程序编写转换成了面向对象的MFC框架编程;
主要有以下部分:
winMain()函数, 负责调用其他功能函数; MyRegisterClass()函数,负责注册窗口的各项信息; InitInstance()函数, 负责初始化; WndProc()函数, 负责处理消息循环;
Windows应用程序就是一个基于消息处理的应用程序,因此WndProc()函数就是等等着外界或操作系统给它发送信息,如重画界面、鼠标单击或键盘输入;
1 main.cpp
#include <iostream> using namespace std; int main() { cout<<"Hello,C++!"; cin.get(); return 0; }
testView.cpp
void CTestView::OnDraw(CDC* pDC) { CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); tagRECT a = {100,100,200,200}; pDC->DrawText("Hello,MFC!",&a,1); // TODO: add draw code for native data here }
1 &变量名:读取变量名的地址;
2 *变量名:定义指针变量;
1 单文档应用程序(SDI);
2 多文档应用程序(MDI),一次可以处理多个文档;
(基于对话框的应用程序都是这两类应用程序的子集;)
1 模式对话框:如果没有关闭该对话框,则无法处理创建它的父窗口;
2 无模式对话框:没有关闭该对话框,也可以同时处理创建它的父窗口;
(模式或无模式对话框都是相对两个或更多对话框窗口而言,如果是一个基于对话框的应用程序,本身就只有一个对话框,则不能将其归为模式或无模式对话框)
1 为“Edit”控件添加类的成员变量:控件(如编辑框)→ID→变量→源代码;
控件右击→选中控件ID→Add Variable→Variable name→Variable type;
UpdateData(1):将控件上的数据读取到变量中;
UpdateData(0):将变量中的数据写到控件中;
2 添加按钮控件的消息处理函数:
控件(如命令按钮)双击→函数名→编写代码;
3 为新建的对话框添加类:
新建对话框→新建命令按钮→双击→Add a new class→OK→类名→类ID→基类→编写代码;
4 在主框架菜单中添加触发对话框的菜单项
Menu→IDR_MAINFRAME→点击菜单项,如“编辑”→在最下端的列表空白处双击→ID(对话框ID)→标明(菜单项名称)→菜单项右击→建立类向导→Object IDs→Messages:Command→Add Function→Member class function→function name→ID:Command双击→编写代码(如void CMainFrame::OnDlg1()) ;
5 内置(通用)对话框,如CFileDialog类的文件打开对话框;
定义数据结构(就是类定义和类之间的相互关系),然后设计界面(输入输出)→最后是给界面添加相应的消息处理函数;
如五子棋游戏的开发流程:(基于鼠标消息处理)
画棋盘→画棋子→增加下棋制约条件→每下一步,判断输赢;
1 编辑视图型CEditView类特点:
文本不能超过64KB;
不能设置混合字体;
实现了剪贴板的剪切、复制和粘贴功能;
2 富文本编辑视图类:CRichEditView类
Pointer->method()或者pointer->param简单说就是 访问或者调用 指针所指向的结构体(或其他的比如类) 中的方法或者参数->前面是指针;而符号“.”前面是对象;
图标缓存问题(当用C++写一个小工具,换了图标了,此前建立的快捷方式还是以前的图标)。找到C:\Users\wwuhnwu01\AppData\Local\IconCache.db (需要开启显示系统隐藏文件),删除掉IconCache.db (重启后还会自动生成) ,然后打开任务管理器, 结束掉explorer.exe 进程。然后,任务管理器里左上角,点"文件" "新建任务(运行)" 输入 "explorer" 回车,由此重新运行资源管理即可;