摘要: 在C++的程序的编写过程中,基本上都碰到过LNK2005的错误吧,下面就针对这个问题详细分析: 首先,预处理阶段:这一过程,主要针对#include和#define进行处理,具体过程如下:对于cpp文件中经常会出现#include来包含某个头文件,在进行预处理之后,所有的#include命令都将替换成该头文件中的详细内容,如果该头文件中还包含另外的头文件,采用同样的方法进行递归处理。同样#define亦是如此,对用它进行宏定义的字符进行替换,这里就是简单的替换。所以整个预处理过程就是进行简单的替换。 其次,预编译过程这一过程主要针对预处理之后的cpp文件编译称为obj文件,即目标文件(注意,在 阅读全文
posted @ 2011-07-28 14:04 luck_net 阅读(278) 评论(0) 推荐(2) 编辑
摘要: LBITMAPINFO m_pbmInfo;LPBITMAPINFOHEADER m_pbmInfoHeader;void LoadBitmapFile(const char* fileName){//打开位图文件 CFile file(fileName,CFile::modeRead);//将位图文件头读入内存BITMAPFILEHEADER bmFileHeader;file.Read((void*)&bmFileHeader,sizeof(bmFileHeader));//检查是否为位图if(bmpFileHeader.bfType!=0x4d42){afxMessageBox( 阅读全文
posted @ 2011-06-21 11:17 luck_net 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 网上的一个OpenGL实例 下下来之后运行,链接错误:fatal error LNK1103: debugging information corrupt; recompile module网上的解释是:版本低了,改用高版本。。。最后采用的办法是:取消选项Project->Setting->Link->Generate Debug Info即可 阅读全文
posted @ 2011-06-21 10:13 luck_net 阅读(154) 评论(0) 推荐(0) 编辑
摘要: GridView编辑状态获取新值问题: 当GridView编辑状态获取新值时,往往获取的是修改前的值。我的分析: 很多时候我把数据绑定函数调用直接放在Page_Load()函数里,当GridView编辑状态获取新值时,往往获取的是修改前的值,这是因为页面加载先执行page_load()函数,数据绑定函数就会再次执行,这样GridView里的值就会又变成修改前的值,获取值时就是更改前的值。解决办法: 把数据绑定函数放在Page_Load()函数的if(!this.page.ispostback)里,这样获取的值就是更改后的值。获取GridView单元格值办法:在RowUpdating事件里获取第 阅读全文
posted @ 2011-04-26 19:25 luck_net 阅读(506) 评论(1) 推荐(0) 编辑
摘要: 模板函数的参数推导机制:eg:template<typename I, typename T>void func(I iter, T t){T tmp;...;}void main(){int i;func(&i,i);//模板函数可以通过参数的推导机制推导出实际的函数为void func //(int*,int);}可能有的人看到模板函数之后会高兴的手舞足蹈,但是该技巧虽然可用于value_type,但是却非全面可用。玩意value_type必须用于函数的传回值,就束手无策了,毕竟模板参数推导机制推导的仅仅是参数而已,无法推导函数的返回值型别。这就造成一个严重的问题,试想 阅读全文
posted @ 2011-04-17 19:32 luck_net 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 容器指的是各种存放元素的玩意:list,vector,deque,queue,prority_queue,stack,set,multiset,map,multimap迭代器:类似指针的东西,就是指向各个元素的智能指针。节点:容器中元素的类型,例如链表中的元素,我们可以把节点设置为一个结构体,包含元素和next。。。。#include <iostream>#include <algorithm>#include <string>using namespace std;//链表节点template<typename T>class ListItem 阅读全文
posted @ 2011-04-15 10:23 luck_net 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 问题:由于项目的需求,我修改了其中的一个控件。。。结果把程序弄的乱七八糟的添加控件类到vc.net中直接在类视图中,添加类->选择activex MFC类。。。注意哦。。然后在dlg上插入activex控件。。。关联变量。。。问题就出在关联变量的时候。类型总是一个我以前写的类型。。。选择变了啊,你怎么不跟着变呢????只能自己改咯。。。fuck 阅读全文
posted @ 2011-04-12 16:39 luck_net 阅读(229) 评论(0) 推荐(0) 编辑
摘要: activex控件方法(method):即对象自己调用,比如有一个CGLClock控件,该控件中定义了方法SetClockAngle(double m_newAngle);//其中代码用于更改表盘指针的指向于是乎,我在一个工程中如果用到了CGlClock控件,我就可以调用该方法来改变表盘的指针位置。比如我在cdialog上添加了该控件,通过ddx与变量m_biaopan关联,于是m_biaopan.SetClockAngle(150);这样就会调用我刚在控件中写的方法。指针发生了变化。。。o了activex事件。。主要是给外部调用者得一个借口。。。使得外部可以通过这个函数来感知控件的事件。。很 阅读全文
posted @ 2011-04-11 21:48 luck_net 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 遇到的问题:在mainframe中动态创建了一个tab控件,tab控件上拖放了一个控件(待会处理的就是这个控件的事件),此时,我用classwizard添加事件处理程序,开始,想直接把事件处理程序添加到view类中,classwizard可以帮助添加代码,但是添加进去后,在运行的时候,完全不能进入这个函数。。。。(在此狂烈鄙视微软的平台)。。。我左看右看,我的类被我加入了消息映射网啊,为什么呢,为什么呢???为什么view类不接受呢。哇靠。。。首先说下,我的tab控件中添加的属性页是CMyDlg,继承于CDialog。然后CDialog上放的是一个我自己编写的控件(CGLClock,一个表盘控 阅读全文
posted @ 2011-04-11 21:19 luck_net 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 今天调试程序的时候遇到一个超级郁闷的问题:vc++6.0用cmarkup类去保存xml文件的时候,是直接保存到当前路径名下面了所以我直接写了xml.save("test.xml")就保存好了。但是在vc++.net中我用同样的语句碰到了问题,有时候可以保存,有时候我输入数据后再去保存 就没有文件了。测试了很多次 发现我把路径名给改了。所以以后要谨记在保存文件的时候一定要记得用绝对路径名。 阅读全文
posted @ 2011-04-01 10:43 luck_net 阅读(148) 评论(0) 推荐(0) 编辑