C/C++
惊世骇俗
none
展开
-
关于ADO GetCollect读取数据的纠结
_variant_t vUsername,vBirthday,vID,vOld; _RecordsetPtr m_pRecordset; m_pRecordset.CreateInstance( "ADODB.Recordset "); m_pRecordset-> Open( "SELECT * FROM users ",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText)转载 2010-06-29 17:29:00 · 10963 阅读 · 2 评论 -
DLL 导出类的问题
<br /><br />使用DLL的一个比较严重的问题就是编译器之间的兼容性问题。不同的编译器对c++函数在二进制级别的实现方式是不同的。所以对基于C++的DLL,如果编译器 不同就有很麻烦的。如果创建的是MFC扩展DLL,就不会存在问题,因为它只能被动态连接到MFC的客户应用程序。这里不是本文讨论的重点。<br />一、重新编译问题<br />我们先来看一个在实际中可能遇到的问题:<br />比如现在建立好了一个DLL导出了CMyClass类,客户也能正常使用这个DLL,假设CMyClass对象的大小为3转载 2010-12-31 15:47:00 · 1233 阅读 · 0 评论 -
SQL字符串处理--按分割符拆分字符串
<br /> <br />例1<br />实现如下功能<br />name data<br />a|b|c ...<br />a|b ...<br />a|c ...<br />d ...<br />统计后<br />a 1.3 <br />b 0.83<br />c 0.83<br />d 1<br />也就是 按名字统计 每条记录 按人头平均 统计 a (1/3+1/2+1/2)=1.3<br />多谢<br /转载 2010-12-25 15:23:00 · 2629 阅读 · 0 评论 -
MFC中CBrush创建透明画刷的方法
<br />使用SDK比较容易,只要<br />GetStockObject(NULL_BRUSH);<br />然后选进设备描述表就可以了。<br /><br />关于MFC中的CBrush类,MS没有提供直接获得透明画刷的方法,查了下资料,可以使用如下的方法:<br />CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));转载 2010-10-22 15:50:00 · 2063 阅读 · 0 评论 -
MFC版 文件拷贝
<br /><br />MFC版 文件拷贝<br />所用函数:<br />BOOL CopyFile( LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists );<br />LPCTSTR lpExistingFileName 已存在文件名,如:D://123.prt<br />LPCTSTR lpNewFileName 复制的新文件名,如:D:/转载 2010-10-19 16:36:00 · 1024 阅读 · 1 评论 -
mfc spin control 上下滚动
<br /><br />实现如题 只需捕捉spin control 的 UDN_DELTAPOD 消息,如下例:<br /> OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult)<br />{<br /> LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);<br /> // TODO: 在此添加控件通知处理程序代码<br /> if(pNMUpDown-> iDelta == 1) // 如转载 2010-09-14 17:44:00 · 1321 阅读 · 0 评论 -
关于_w64
<br />在64为编译器下,而且打开了/Wp64编译选项时,编译器会对使用了__w64的类型进行32位到64位移植性的判断,比如将64位指针赋给INT_PTR时,编译器就会发出警告。<br /> <br /> INT_PTR int(_W64 int即__w64 int) * _W64 int→INT_PTR,_W64就是__w64,是为了解决32位与64位编译器的兼容性而设置的关键字 用于指针运算 <br /> <br /> 看这段宏: <br /> #if原创 2010-07-15 10:58:00 · 4259 阅读 · 1 评论 -
MFC添加和使用自定义消息
<br /> <br />用户可以为了特定的目的而定义自己的消息, 这些消息也称为自定义消息。进行自定义消息的方法很简单,一般有两种:一种是利用ON_MESSAGE宏,另外一种就是创建自 己的消息映射宏,这一种方法可以定制消息的参数类型,而不像前者只能使用固定的消息参数类型。但是一般情况下不需要定制消息的参数类型,因此这里对此不予 介绍。本节主要介绍第一种比较常用的方法。<br />预定义常量值WM_USER(0x0400)是系统专门用来为实现处理用户自定义的消息而提供的接口,需要自定义消息时,只需要以如下转载 2010-07-15 10:48:00 · 827 阅读 · 0 评论 -
CWnd派生类实现拖动
<br />派生自CWnd类控件拖动:C/C++ codevoid CTestWnd::OnLButtonDown(UINT nFlags, CPoint point) { // 实现无标题栏窗口拖动 PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM (point.x, point.y)); CWnd::OnLButtonDown(nFlags, point);}<br /><br />以上是在窗口任意位转载 2010-07-15 17:31:00 · 858 阅读 · 0 评论 -
c/c++中math函数
<br />int abs(int i) 返回整型参数i的绝对值 <br />double cabs(struct complex znum) 返回复数znum的绝对值 <br />double fabs(double x) 返回双精度参数x的绝对值 <br />long labs(long n) 返回长整型参数n的绝对值 <br /> double exp(double x) 返回指数函数ex的值 <转载 2010-07-15 10:50:00 · 1415 阅读 · 0 评论 -
Dll分配的内存块,应用释放的问题
<br />写了个程序,在DLL中用malloc分配了一块内存,但是在exe程序中释放,结果程序crash,原因就是:<br />其原因可能是堆被损坏,这也说明 TestMySticker.exe 中或它所加载的任何 DLL 中有 bug。<br />想了半天以为是自己的写法有问题,后终于在google上找到了原因,汗。。。<br />以下文字引用自 http://hi.baidu.com/huhe/blog/item/0b422edd1f1563d98c1029a3.html<br />很感谢作者的分析<转载 2010-07-07 08:34:00 · 632 阅读 · 0 评论 -
warning LNK4006 这个烂问题终于搞掉了
<br /><br />就写了一个简单的Timer计时器类,单独编译完全没问题,警告什么的都没有,但是一link就出岔子,每次都提示 xxx.obj : warning LNK4006: "private: static class std::vector<class Nomad::Timer *,class std::allocator<class Nomad::Timer *> > Nomad::Timer::mTimers" (?mTimers@Timer@Nomad@@0V?$vector@PAVT转载 2011-04-02 15:33:00 · 2357 阅读 · 1 评论