VC++最全最好的学习日志以及编程技巧.pdf
《VC++最全最好的学习日志以及编程技巧.pdf》由会员分享,可在线阅读,更多相关《VC++最全最好的学习日志以及编程技巧.pdf(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习各种高级外挂制作技术,马上去百度搜索(魔鬼作坊),点击第一个站进入,快速成为做挂达人。(1)不相匹配的程序代码或模块定义(.DEF)文件导致 LNK2001。例如,如果在 C+源文件了内声明了一变量“var1”,却试图在另一个文件内以变量“var1”访问改变量。(2)如果使用的内联函数是在.cpp 文件内定义的,而不是在头文件内定义将导致 LNK2001 错误。(3)调用函数时如果所用的参数类型和头函数声明时的类型不符将会产生 LNK2001 错误。(4)试图从基类的构造函数或析构函数中调用虚拟函数时将会导致 LNK2001 错误。(5)要注意函数和变量的可公用性,只有全局变量、函数是可公
2、用的。静态函数和静态变量具有相同的使用范围限制。当试图从文件外部方位任何没有在该文件内声明的静态变量时将导致编译错误或 LNK2001 错误。由于编译和联机的设置而造成的 LNK2001 错误(1)如果编译时使用的是/NOD(/NODERAULTLIB)选项,程序所需要的运行库和 MFC 时将得到又编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。这种情况下使用/NOD 将导致 LNK2001 错误。2)如果没有为 wWinMainCRTStartup 设定程序入口,在使用 Unicode 和 MFC 时将出现“unresolved external on
3、 _WinMain16”的 LNK2001 错误信息。(3)使用/MD 选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“_imp_func”的引用。如果试图使用静态库 LIBC.LIB 或LIBCMT.LIB 进行链接,将在_imp_func 上发生 LNK2001 错误。如果不使用/MD 选项编译,在使用 MSVCxx.LIB 链接时也会发生 LNK2001 错误。(4)使用/ML 选项编译时,如用 LIBCMT.LIB 链接会在_errno 上发生 LNK2001 错误。(5)当编译调试版的应用程序时,如果采用发行版模态库进行链接也会产
4、生 LNK2001 错误;同样,使用调试版模态库链接发行版应用程序时也会产生相同的错误。(6)不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。(7)在不同的模块中使用内联和非内联的编译选项能够导致 LNK2001 错误。如果创建 C+库时打开了函数内联(/Ob1 或/Ob2),但是在描述该函数的相应头文件里却关闭了函数内联(没有 inline 关键字),只是将得到错误信息。为避免该问题的发生,应该在相应的头文件中用inline 关键字标志为内联函数。(8)不正确的/SUBSYSTEM 或 ENTRY 设置也能导致 LNK2001 错误。19、如何调
5、试一个没有源码的 exe 文件调用的dll在 Visual C+6.0 中,进入“Project Setting”对话框然后选择 Debug 标签页。通常 Visual Studio默认“executable for debug session”为可执行文件名,但可以将他改成任何你想要的程序。甚至可以指定不同的工作目录以及传递参数到你的程序。这个技术常用来调试 Dlls、名字空间扩展、COM 对象和其他从某些 EXE 以及从第三方的 EXE 中调用的 plug-in 程序。20、Visual C+6.0 工程中的项目文件都表示什么.opt:工程关于开发环境的参数文件。如工具条位置等信息。.ap
6、s(AppStudio File)资源辅助文件,二进制格式,一般不用去管它。.clw:ClassWizard 信息文件,实际上是 INI 文件格式,有兴趣可以研究一下。有时候ClassWizard 出了问题,手工修改 CLW 文件可以解决。如果此文件不存在的话,每次用ClassWizard 的时候回提示是否重建。.dsp(DevelopStudio Project):项目文件,文本格式,不过不熟悉的不要手工修改。.dsw(DevelopStudio Workspace):是工作区文件,其他特点和.dsp 差不多。.plg:是编译信息文件,编译时的 error 和 warning 信息文件(实际
7、上是一个 html 文件),一般用处不大。在单击菜单【Tool】【Option】弹出的对话框里面有个选项可以控制这个文件的生成。.hpj(Help Project):是生成帮助文件的工程,用 microsoft Help Compiler 可以处理。.mdp(Microsoft DevStudio Project):是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的.dsp 格式。.bsc:是用于浏览项目信息的,如果用 SourceBrower 的话就必须有这个文件。如果不用这个功能的话,可以在 Project Options 里面去掉 Generate BrowseInfo F
8、ile,这样可以加快编译速度。.map 是执行文件的映象信息记录文件,除非对系统底层,这个文件一般用不着。.pch(Pre-Compiled File):是与编译文件,可以加快编译速度,但是文件非常大。.pdb(Program Database):记录了程序有关的一些数据和调试信息,在调试的时候可能有用。.exp:只有在编译 DLL 的时候才会生成,记录了 DLL 文件的一些信息,一般也没有用。.ncb:无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。编译工程后会自动生成。1.41.4 利用利用 MFCMFC 进行开发的通用方法介绍进行开发的通用方
9、法介绍以下是我在最初学习 VC 时所常用的开发思路和方法,希望能对初学 VC 的朋友有所帮助和启发。1、开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。2、开发注重交互的简单应用程序可以使用对话框为基础的窗口,如果文件读写简单这可利用 CFile 进行。3、开发注重交互并且文件读写复杂的的简单应用程序可以利用以 CFormView 为基础视的单文档视结构。4、利用对话框得到用户输入的数据,在等级提高后可使用就地输入。5、在对多文档要求不强烈时尽量避免多文档视结构,可以利用分隔条产生单文档多视结构。6、在要求在多个文档间传递数据时使用多文档视结构。7、学会利用子窗口,并在自
10、定义的子窗口包含多个控件达到封装功能的目的。8、尽量避免使用多文档多视结构。9、不要使用多重继承并尽量减少一个类中封装过多的功能。1.51.5 MFCMFC 中常用类,宏,函数介绍中常用类,宏,函数介绍常用类CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right。分别表是左上角和右下角的坐标。可以通过以下的方法构造:CRect(int l,int t,int r,int b);指明四个坐标CRect(const RECT&srcRect);由 RECT 结构构造CRect(LPCRECT lpSrcRect);由 RECT 结构构造CRect(POINT p
11、oint,SIZE size);有左上角坐标和尺寸构造CRect(POINT topLeft,POINT bottomRight);有两点坐标构造下面介绍几个成员函数:int Width()const;得到宽度int Height()const;得到高度CSize Size()const;得到尺寸CPoint&TopLeft();得到左上角坐标CPoint&BottomRight();得到右下角坐标CPoint CenterPoint()const;得当中心坐标此外矩形可以和点(CPoint)相加进行位移,和另一个矩形相加得到“并”操作后的矩形。CPoint:用来表示一个点的坐标,有两个成员变
12、量:x y。可以和另一个点相加。CString:用来表示可变长度的字符串。使用 CString 可不指明内存大小,CString 会根据需要自行分配。下面介绍几个成员函数:GetLength 得到字符串长度GetAt 得到指定位置处的字符operator+相当于 strcatvoid Format(LPCTSTR lpszFormat,.);相当于 sprintfFind 查找指定字符,字符串Compare 比较CompareNoCase 不区分大小写比较MakeUpper 改为小写MakeLower 改为大写CStringArray:用来表示可变长度的字符串数组。数组中每一个元素为 CStr
13、ing 对象的实例。下面介绍几个成员函数:Add 增加 CStringRemoveAt 删除指定位置 CString 对象RemoveAll 删除数组中所有 CString 对象GetAt 得到指定位置的 CString 对象SetAt 修改指定位置的 CString 对象InsertAt 在某一位置插入 CString 对象常用宏RGBTRACEASSERTVERIFY常用函数CWindApp*AfxGetApp();HINSTANCE AfxGetInstanceHandle();HINSTANCE AfxGetResourceHandle();int AfxMessageBox(LPCT
14、STR lpszText,UINT nType=MB_OK,UINT nIDHelp=0);用于弹出一个消息框C/C+C/C+C/C+C/C+小编谈小编谈 C C C C 语言函数那些事语言函数那些事(53)(53)(53)(53)C 程序是由一组或是变量或是函数的外部对象组成的。函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下 C 语言中的函数。1.1.1.1.divdivdivdiv 函数函数div 函数的功能是将两个整数相除,返回商和余数,其用法为:div_t(int number,intdenom);程序实例如下:#include#include div_t x;
15、intmain(void)x=div(10,3);printf(10 div 3=%d remainder%dn,x.quot,x.rem);return 0;2.2.2.2.dupdupdupdup 函数函数dup 函数的功能是复制一个文件句柄,其用法为intdup(int handle);程序实例代码如下:#include#include#include#include void flush(FILE*stream);intmain(void)FILE*fp;char msg=Thisisa test;fp=fopen(DUMMY.FIL,w);fwrite(msg,strlen(msg)
16、,1,fp);clrscr();printf(Press any key to flushDUMMY.FIL:);getch();flush(fp);printf(nFile was flushed,Press anykey to quit:);getch();return 0;void flush(FILE*stream)intduphandle;fflush(stream);duphandle=dup(fileno(stream);DOS buffer*/close(duphandle);3.3.3.3.atan2atan2atan2atan2 函数函数atan2函数的功能是计算Y/X 的
17、反正切值,其用法为double atan2(double y,doublex);程序实例代码如下:#include#include intmain(void)double result;doublex=90.0,y=45.0;result=atan2(y,x);printf(The arc tangent ratio of%lfis%lfn,(y/x),result);return 0;4.4.4.4.getygetygetygety函数函数gety 函数的功能是返回当前图形位置的 y 坐标,其用法为:intfar gety(void);程序实例代码如下:#include#include#in
18、clude#include intmain(void)intgdriver=DETECT,gmode,errorcode;char msg80;initgraph(&gdriver,&gmode,);errorcode=graphresult();if(errorcode!=grOk)printf(Graphics error:%sn,grapherrormsg(errorcode);printf(Press any key to halt:);getch();exit(1);moveto(getmaxx()/2,getmaxy()/2);sprintf(msg,SelectObject(&p
19、en1);/选择对象进 DCdrawWithPen1.(CPen*)pDC-SelectObject(&pen2);/选择对象进 DCdrawWithPen2.pen1.DeleteObject();/再次创建前先销毁pen1.CreatePen(PS_SOLID,2,RGB(0,0,0);/再次创建对象(CPen*)pDC-SelectObject(&pen1);/选择对象进 DCdrawWithPen1.pDC-SelectObject(pOldPen);/恢复此外系统中还拥有一些库存 GUI 对象,你可以利用CDC:SelectStockObject(SelectStockObject(
20、int nIndex)选入这些对象,它们包括一些固定颜色的刷子,画笔和一些基本字体。BLACK_BRUSHBLACK_BRUSHBLACK_BRUSHBLACK_BRUSH Black brush.DKGRAY_BRUSHDKGRAY_BRUSHDKGRAY_BRUSHDKGRAY_BRUSH Dark gray brush.GRAY_BRUSHGRAY_BRUSHGRAY_BRUSHGRAY_BRUSH Gray brush.HOLLOW_BRUSHHOLLOW_BRUSHHOLLOW_BRUSHHOLLOW_BRUSH Hollow brush.LTGRAY_BRUSHLTGRAY_BRU
21、SHLTGRAY_BRUSHLTGRAY_BRUSH Light gray brush.NULL_BRUSHNULL_BRUSHNULL_BRUSHNULL_BRUSH Null brush.WHITE_BRUSHWHITE_BRUSHWHITE_BRUSHWHITE_BRUSH White brush.BLACK_PENBLACK_PENBLACK_PENBLACK_PEN Black pen.NULL_PENNULL_PENNULL_PENNULL_PEN Null pen.WHITE_PENWHITE_PENWHITE_PENWHITE_PEN White pen.ANSI_FIXED_
22、FONTANSI_FIXED_FONTANSI_FIXED_FONTANSI_FIXED_FONT ANSI fixed system font.ANSI_VAR_FONTANSI_VAR_FONTANSI_VAR_FONTANSI_VAR_FONT ANSI variable system font.DEVICE_DEFAULT_FONTDEVICE_DEFAULT_FONTDEVICE_DEFAULT_FONTDEVICE_DEFAULT_FONT Device-dependent font.OEM_FIXED_FONTOEM_FIXED_FONTOEM_FIXED_FONTOEM_FIX
23、ED_FONT OEM-dependent fixed font.SYSTEM_FONTSYSTEM_FONTSYSTEM_FONTSYSTEM_FONT Thesystem font.By default,Windowsuses thesystem font to drawmenus,dialog-box controls,and other text.In Windowsversions 3.0 and later,the systemfont is proportional width;earlier versions of Windows usea fixed-width system
24、 font.SYSTEM_FIXED_FONTSYSTEM_FIXED_FONTSYSTEM_FIXED_FONTSYSTEM_FIXED_FONT The fixed-width system font usedinWindows prior toversion 3.0.This object is available for compatibility with earlier versions of Windows.DEFAULT_PALETTEDEFAULT_PALETTEDEFAULT_PALETTEDEFAULT_PALETTEDefault color palette.This
25、palette consists of the 20 staticcolorsinthe system palette.这些对象留在 DC 中是安全的,所以你可以利用选入库存对象来作为恢复 DC 中 GUI 对象。大家可能都注意到了绘图时都需要一个 DC 对象,DC(Device Context 设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是 Windows 耀眼的一点设备无关性。如同你将对一幅画使用照相机或复印机将会产生不同的输出,而不需要对画进行任
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 最好 学习 日志 以及 编程 技巧
限制150内