[IDE下载和安装]
1、VC和MSDN的下载
强烈建议安装英文版!
2、安装程序制作工具下载
InstallShield系列,可以去缘网下载。
3、VC插件的下载
推荐Visual Assist,其良好的提示功能使开发程序方便很多
似乎中文版不能使用 Visual Assist,vs没有key,但有破解
[IDE环境使用]
1、如何彻底删除一个类:
选择FileView标签把相应的.cpp和.h删除,然后关闭工程,删掉.clw文件,
如果愿意,还可以把没用的.cpp和.h文件从硬盘删除。重新进入工程,按Ctrl+W,
会提示不存在.clw文件,是否重新建立该文件,选确定后,选择全部文件,再按OK。
2、在编辑状态下发现成员变量或函数不能显示
删除该项目扩展名为.ncb文件,重新打开该项目。
3、debug和release的区别,及如何设置
编译在VC++中有两种模式,一种是Release Build另一种是Debug Build。它们之
间的区别在于,Release Build不对源代码进行调试,不考虑MFC的诊断宏,使用的是MFC
Release库,编译十对应用程序的速度进行优化,而Debug Build则正好相反,它允许对源
代码进行调试,可以定义和使用MFC的诊断宏,采用MFC Debug库,对速度没有优化。所以
我们应该在Debug模式下开发应用程序,然后在Release模式下发布应用程序。在我们的工
程文件夹下会有一个Debug文件夹和一个Release文件夹分别存放输出文件和中间文件。
在VC中菜单中选择Build->Set Active Configuration,里面可以选择win32
Release或win32 Debug,来设置目前程序的模式为release版本或debug版本
1、编译:
Q:unexpected end of file while looking for precompiled header directive
A:
(1)使用MFC,未包含stdafx.h
(2)函数或成员函数的"{""}"未匹配
(3)预编译指令未匹配
(4)在编译选项中选择了using precompiled header,而.cpp没有直接或者间接
#incldue 相应的头文件
其实(1)就是(4)的一个特例,只不过一般编写程序的时候很少用到precompiled
header,而MFC程序,哦,其实只要使用AppWizard建的C++工程都会自动使用这个
功能,造成高出错率。
Q:Error spawning c1.exe
A:tool->Option->Directories ,select Executable files,add your executable
filepath,such as :F:/Program Files/Microsoft Visual Studio/VC98/BIN
Q:Cannot open precompiled header file: ''Debug/server.pch''
A: rebuild all,或者不用预编译头文件
2、链接
一般link出错的类型如下:
(1).关于类,比如类中成员函数声明而未实现,或者类的静态成员变量在.cpp文件中
没有声明
(2).使用开发环境中工程类型错误,比如应用console工程的,建了个win
application工程
(3).有些类库的使用需要加载.lib文件,在VC中可以通过#pragma comment(lib,
"lib direction")来解决,或者在project->setting->link->input中填入该lib文
件的路径和名字
(4).变量定义冲突,解决方法一般为在.h中声明该变量,而在.cpp文件中定义该变量
(5).有些code generation需为mulitthread,比如多线程CreateThread函数,在
project->setting->C/C++->code generation中将single thread改为MT(具体看
要求);或者与加载的dll or lib的code generation冲突,具体可查询必要的资料。
其实在VC中出现link错误都有个错误码,可以查询MSDN来了解该错误的阐述,
3.得到文档类,视图类,应用程序对象以及MainFrame类的指针
得到应用程序对象的指针:AfxGetApp();
对于单文档:
在MainFrame里得到Doc的指针:CMainFrame::GetActiveDocument();
在View里得到Doc的指针:CView::GetDocument();
得到MainFrame的指针:CMainFrame* pFrame=(CMainFrame*)AfxGetMainWnd();
然后再用pFrame做想做的任何事。
对于多文档:
在MainFrame里等到Doc的指针:
CFrameWnd* pActiveFrame=GetActiveFrame();
CDocument* pDoc=pActiveFrame->GetActiveDocument();
注意不能直接使用CMainFrame()->GetActiveDocument(),不然会发现得到的是
空指针。
4.如何防止重画闪烁
如果每一次都是对整个画面进行填充的话,可以试试处理WM_ERASEBKGROUND
消息,在CWnd::OnEraseBkGround()函数里,不要调用基类,直接return TRUE好了。
如果是小区域更新,可以使用InvalidataRect(rect)函数,其中rect指定了更新的区域。
另外还有一种方法是使用内存DC,先将图画在内存DC中,然后画在屏幕上,具体方法可以
网上查一下。
5.如何在程序中调用其它应用程序
WinExec,CreateProcess,ShellExcute
最简单的是使用ShellExecute()函数。
比如:
ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL);
文章出处:http://www.diybl.com/course/3_program/vc/vc_js/2008410/108854_2.html
6.检测程序中的括号是否匹配
把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。
7.格式化一段乱七八糟的源代码
选中那段源代码,按ATL+F8。
8.如何整理ClassView视图中大量的类
可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了.
9.定位预处理指定
在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.
10.如何添加系统中Lib到当前项目
在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空格格开.
11.如何添加系统中的头文件(.h)到当前项目.
#include <FileName.h>,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找.
12.如何在Studio使用汇编调试
在WorkBench的Debugger状态下按CTRL+F7.
13.怎样处理ClassZiard找不到的系统消息
如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info页中将Message filter改为Window就有了.
14.在Studio中快速切换两个文件
有时,我们需要在最近使用的两个文件中快速切换,换Ctrl+F6。这在两个文件不相今的时候就有用的。
15.取得源程序预处理后的结果:
在Studio里,可以在->PROJECT->SETTINGS->C/C++->Project Options中,在最后加上 /P /EP 这两个编译开关即可做到"只进行预处理".就可以了。编译以后就可以在源程序目录中发现“文件名.I ”的文本文件。这就是预处理后的结果。 15.在Debug模式中查看WINAPI调用后的返回值:
很简单,且实用:在watch中加入@hr,err。在CSDN的文档中心有一篇讲得更细,请参考。
16.产生指定源程序文件的汇编代码:
从IDE菜单的Project->Setting打开项目设置,按如下文件做:
1.先在左边选择指定文件,可以多选。
2. 在右边的C++属性页中,在category中选择List Files,接着在下面的List Files Type中选择Assembly and source code(或选择其它),最后在List File Name中输入在个C/C++源文件产生的相应的汇编代码的文件。
3.编译整个工程。
17.手工编译纯资源成dll:
Rc.exe /v data.rc
Cvtre*.**e /machine:ix86 data.res
Link /SUBSYSTEM:WINDOWS /DLL /NOENTRY data.res ;编译成DLL文件
这种方式创建的DLL是最小的,比起你用Win 32 Dynamic Libray等产生的更小。
阅读文档中心里的“充分挖掘你的VC++ IDE的潜能”,作者:zhengyun_ustc,这是一系列的好文章
(注意注:区分大小定,请用大定/P)
[其它]
1、常见数据类型之间的转换
例如:
char数组或char*到CString的转换
有char型的数组char buffer[row][col],将它转换成CString类型的
CString str=CString((char*)buffer,row*col);
CStirng与string的转换
string转化为CString:
string s;
s="hello";
CString str(s.c_str());
int,long,float,double 等转换为CString
int i=1;
CString s;
s.Format("%d",i);
类似printf的格式化写法
CString 转换为int,float,double等类型
请参见atoi,atof,atol 等函数
2、CSocket ,CAsyncSock 调用Create()函数失败
请先在CXXXApp::InitInstance里面调用AfxSocketInit函数
文章出处:http://www.diybl.com/course/3_program/vc/vc_js/2008410/108854_3.html
-----------------------------------------------------------------------------------------------------------------------------------
附:VC项目文件说明
.dsp 项目参数配置文件,这个文件太重要,重点保护对象。.
.dsw 工作区文件,重要性一般,因为它信息不我,容易恢复。
以下文件在项目中是可丢弃的,有些文件删除后,VC会自动生成的。
.clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重建.
.ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后会自动生成。
.opt 工程关于开发环境的参数文件。如工具条位置等信息;(可丢弃)
.aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他.
.plg 是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大.在Tools->Options里面有个选项可以控制这个文件的生成.
.hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理.
.mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的DSP格式.
.bsc 是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件.如果不用这个功能的话,可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度.
.map 是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着.
.pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大.
.pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用.
.exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用.