平时自己在使用过程中遇到的一些问题,搜集的资料

--------------------------------------------------------------------------------------------------------------------

[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文件中的一些信息.一般也没什么用.

VC的一些实用技巧和注意事项。相关推荐

  1. ps4jump大乱斗服务器维护,Jump大乱斗新人实用技巧分享 新手注意事项介绍

    Jump大乱斗新人实用技巧分享 新手注意事项介绍 2019-02-15 11:30:23来源:jumpforce吧/媚鬼丶编辑:云曼衍评论(0) <Jump大乱斗>已经于今天正式和玩家们见 ...

  2. 不思议迷宫c语言基础,不思议迷宫新手注意事项 新手实用技巧

    不思议迷宫是一款对新手不怎么友好的游戏,因此新手上手需要注意许多东西,那么一起来看看新手注意实行与实用技巧吧. 1,SL大法 分两种,小的是在你没有进门之前,退掉游戏,然后再上,这样可以刷新这一层的东 ...

  3. VC驿站《实用C++》教程开篇

    首先,欢迎大家来到VC驿站.不知不觉中,VC驿站已经开办了将近8年的时间,非常感谢各位网友对VC驿站一如既往的支持. 教程方面从刚开始的<Vc++控件使用>.<VC++界面库编程&g ...

  4. 隐藏在sketch的10个实用技巧,学会就是赚到!

    Sketch Mac是一款为设计师量身定做的优美界面和强大工具兼有的专业绘图工具.能够满足网页.用户界面.图标等的设计需求. Sketch是一款为设计师量身定做的优美界面和强大工具兼有的专业绘图工具. ...

  5. 手机通讯录分组名称_华为手机的几大办公实用技巧,让你效率提升不止一点点...

    现在手机越来越方便了,功能也月来越多,下面就给大家分享一下华为手机的几大实用办公技能. 1.备忘录实用技巧 备忘录的灵感速记,可以让你通过语音文字.图片的方式随时随地记录灵感,方便快捷. 打开[备忘录 ...

  6. 技术管理者的几个实用技巧

    技术管理者的几个实用技巧 前言 个人从程序员到技术 Leader 经历了不少的心路历程,我目前在带一支十几人的技术团队(控制团队人数主要是遵循亚马孙 CEO 贝索斯提出的两个披萨原则)我记得刚开始带团 ...

  7. 视频教程-【吴刚】PS软件基础实用技巧标准视频教程-UI

    [吴刚]PS软件基础实用技巧标准视频教程 业内知名UID.UED.用户体验.品牌策略与创意设计师,十三年行业职业教育培训经验,业内"UI视频第一人",教学总监.视觉设计讲师. Ad ...

  8. 【吴刚】PS软件基础实用技巧标准视频教程-吴刚-专题视频课程

    [吴刚]PS软件基础实用技巧标准视频教程-1465人已学习 课程介绍         <PS软件基础实用技巧标准教程>为吴老师亲自讲解的PS软件基础篇的技术操作内容,通篇干货,使学员上手出 ...

  9. 访达前往文件夹_Mac实用技巧之:访达/Finder

    由于不太可能每次都来这里更新,更多MacOS实用技巧系列文章,请看我的博客:Mac使用技巧系列教程. 动图发到知乎后被压缩的看不清了,如果要看的更清楚一点,请直接访问我博客原文:Mac实用技巧之:访达 ...

  10. 《众妙之门——网站UI设计之道(修订版)》一1.3 制作有效用户界面的实用技巧...

    本节书摘来自异步社区<众妙之门--网站UI设计之道(修订版)>一书中的第1章,第1.3节,作者[德]Smashing Magazine,更多章节内容可以访问云栖社区"异步社区&q ...

最新文章

  1. Spring的基础应用
  2. android异常 More than one file was found with OS independent path ‘META-INF/XXX‘
  3. scalar parameter xxxxx created globally in function xxxx
  4. 嵌入式开发板03---看门狗、编写启动代码
  5. Android中各个权限详解
  6. 路由重发布之RIP和OSPF
  7. 【脑筋急转弯】—— 谁是诚实人?
  8. Illustrator 教程,认识 Illustrator 中的工作区
  9. Scala 深入浅出实战经典 第91讲:Akka第一个案例动手实战架构设计
  10. 如何搭建一个可以搜题的微信公众号?完整教程
  11. Python-获取法定节假日
  12. 不是美术生学3D建模多久能上手?靠自学很难学成功吗?
  13. MFC下的汉字串拼音首字母提取
  14. Python爬虫实例(2)--beautifulsoup的应用
  15. JODD与数据页面绑定
  16. python做马尔科夫模型预测法_李航《统计学习方法》第十章——用Python实现隐马尔科夫模型...
  17. Feedforward ANC 主动降噪原理
  18. 基于matlab的MRC最大合并比误码率仿真,包括维特比译码,MRC,中继
  19. 隐患重重遭诟病 细数固态硬盘“七宗罪”
  20. pygame.surface.blit()方法4个参数的使用方法

热门文章

  1. 熊拍拍是什么?熊拍拍是下一个风口吗?
  2. 基于MATLAB波的叠加仿真模拟
  3. centos7mysql错误代码7_CentOS7下安装mysql5.7及mysql登录错误
  4. win10 外接显示器后出现input signal out of range
  5. Win10如何修改外接显示器分辨率
  6. 搭建sql注入平台及DVWA漏洞环境
  7. 1054 The Dominant Color(20 分)
  8. 双非上岸北大计算机,双非二战考研上岸北大汇丰经验贴
  9. TeamViewer 被发现用于(检测为)商业用途解决方案(亲测有效 )
  10. matlab 读取mdf文件路径,从 MDF 文件中读取数据