C++/MFC
小石头
学如逆水行舟
展开
-
关于C++中const & 返回类型的一些看法
看下面这段代码class CPEntry{public: char *m_pName; ~CPEntry() { if (NULL != m_pName) { delete m_pName; } }};class A{public: CPEn原创 2009-11-26 14:58:00 · 466 阅读 · 0 评论 -
vs2010 去掉指定的编译器警告
引入boost库的某些功能,编译时产生很多警告,看的特烦。在工程选项中->配置属性-C/C++->命令行,其他选项中加入 /wd4251 其中,4251为特定的编译警告。记得w一定要小写。这下输出信息干净多了。原创 2011-12-08 16:57:40 · 5670 阅读 · 1 评论 -
CFileDialog过滤的用法
很久没有碰过界面部分的代码了,今天用到文件打开的对话框。LPCTSTR strFilter = L"txt文件(*.txt)|*.txt|CSV文件(*.csv)|*.csv|所有文件(*.*)|*.*||";CFileDialog dlgFile(bOpenFileDialog, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, str原创 2011-12-08 13:17:53 · 3845 阅读 · 0 评论 -
std::string的另类用法
网络数据流传输经常会碰到buffer 处理,总是不停new delete会很烦琐。虽然有boost智能指针可以维护,但感觉代码太长,而且还是得new指针出来。一个替代方案是使用string的另类用法。将buffer直接存于string中。char *pBuffer = new char[1024];std::string strBuff(pBuffer, 1024);类似上面这种,哈哈,情况原创 2011-12-01 11:11:56 · 445 阅读 · 0 评论 -
boost::filesystem与CFile文件打开方式
filesystem和CFile打开文件时,都会有个打开方式,如果是二进制类型的数据,一定记得使用二进制模式,否则写的数据在0x0A之前会自动插入0x0D原创 2011-11-30 11:24:29 · 978 阅读 · 1 评论 -
命名空间重名解决方法
在一个.h文件里使用了boost类库,另一个文件包含此头文件后,出现hash重名情况。解决方法:给自己的hash命名空间重命名。心得:所有自己的类名或命名空间应该有特殊标记,不容易有重名情况发生。原创 2011-10-20 15:47:16 · 2172 阅读 · 0 评论 -
完整的消息设计包含的内容
一个完整的消息一般应包括以下几方面:可以容纳各种数据类型及其组合。包括基本的数据类型、二进制流、复杂对象的数组可以在一个消息体中包含多种远程调用请求及参数可以组合表述大数据流跨平台可以容纳不同的消息版本原创 2011-10-18 16:53:11 · 613 阅读 · 0 评论 -
Mutex的简单封装
class CMutexAssist { CMutexAssist(boost::mutex *mutex) { m_pMutex = pMutex; m_pMutex->lock(); } ~CMutexAssist() {原创 2011-10-18 16:44:09 · 469 阅读 · 0 评论 -
JSONCpp编译
最新版JSON CPP编译时默认采用/MTd编译选项,vs2010新建的工程默认是/MDd选项。因此如果加入JSON CPP到工程中,应改变JSON CPP的工程设置为/MDd选项。原创 2011-10-17 14:39:20 · 145 阅读 · 1 评论 -
XML消息表示法
最近工作要求搭建一个C/S的应用,涉及到消息的传输。XML中传输二进制数据的方法有两种,一种是直接将二进制字节转换为十六进制的字符表示,另一种是将二进制编码成base64编码,另一端反过来转换即可。JSON也可以使用这种方法表示。原创 2011-10-14 14:49:29 · 528 阅读 · 0 评论 -
SQLite3支持自定义数据类型
今天在看Firefox新版本的一个数据文件时,发现firefox使用了自定义的数据类型。遇到的问题是,当调用int sqlite3_column_type(sqlite3_stmt*, int iCol);函数时返回的类型是5,即NULL,而通过第三方工具可以看到真实的类型是原创 2011-10-14 10:33:12 · 1642 阅读 · 0 评论 -
win7 64位平台编译的程序在XP 32位平台无法运行的解决方法
vs2010的开发环境,制作了一个DLL库。但DLL在XP 32位平台一直无法使用。解决方法如下:右键项目,属性->配置属性->常规->MFC的使用,选择“在静态库中使用MFC”。重新生成。解决。原创 2012-07-04 09:43:17 · 6463 阅读 · 1 评论