摘要: 处理字符串的类,可实现宽窄字节的转换,获取指定位置的元素队列缓存双缓存队列书写基于文件和基于终端的LOG打印类包括内存信息打印包括assert操作包括Debug模式下的LOG打印包括Release模式下的LOG打印解决程序的跨线程的参数共享互斥问题通过AutoEventLock()实现多线程间共享成员的保护保证多线程多出口的加锁、解锁不出现死锁基于MSMQ实现消息处理类,通过面像对象的继结等其他技术降低消息处理的复杂性基于C++对象自动申请和释放类可以根据输入的英文拼音查看当前的打开的文件夹中对应的文件的插件 阅读全文
posted @ 2013-01-09 15:14 cqfuture 阅读(194) 评论(0) 推荐(0) 编辑
摘要: #include <tchar.h>#include <stdio.h>#include <Windows.h>/** \brief 作者 */#define APPLOG_AUTHOR _T("[author] ")/** \brief 附加信息 */#define APPLOG_APPEND _T("Communication ")/** \brief 缓存长度 */#define APPLOG_BUFFER_SIZE (256)/** \brief 应用程序LOG */#if 1#define APP_LOG( 阅读全文
posted @ 2012-12-27 10:39 cqfuture 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 前段时间写了一个用于wince设备和pc间数据传输的模块,为了实现wince和pc间能方便的操作所以在pc和wince设备间采用enum定义了一系列的操作码,操作码定义如下:typedef enum{ FUNCCODE_NONE = 0, ///< 无 FUNCCODE_GETID, ///< 获取设备ID FUNCCODE_REBOOT, ///< 重启设备}FuncCode;但是问题来了由于wince设备和pc间的程序并不是同时发布的,由于需求的变更,pc的版本被更新了在pc的操作中又添加了一个功能码,定义如下:typedef enum{ FUNCCODE... 阅读全文
posted @ 2012-12-26 23:57 cqfuture 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 标识class的成员值不可变(需在constructor函数中初始化)class Test{public: Test(); ~Test();private: /** \brief 测试成员变量 */ const int m_varTest;};Test::Test() : m_varTest(100){}Test::~Test(){}代替define在class中定义常量(需将成员定义为静态成员,方便限定常量的作用域,使模块具有更强的独立性)class Test{public: Test(); ~Test(); /** \b... 阅读全文
posted @ 2012-12-26 23:30 cqfuture 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 我们可以通过在子类中定义static类型的析构函数,进行强制转换来避免多态情况下未将基类析构函数定义为虚函数而造成的内存泄漏的错误#include <iostream>using namespace std;class Base{public: Base() { cout << "Construct Base()" << endl; } ~Base() { cout << "Destruct ~Base()" << endl; } virtual void Func(void) { cout & 阅读全文
posted @ 2012-12-18 01:04 cqfuture 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 在vs2005、vs2008中的intel visual fortran或者C++程序调试过程中,经常会遇到stack overflow的问题。这类问题的出现,有时候并不是程序错误所导致,而是由于编程过程中开的数组过大或者其他愿意所致。我们可以通过设置编译器的栈空间大小来避免此类问题操作如下:项目 ----> 性性 ----> 配置属性 ----> linker ----> Stack Reserver Size 和 Stack Commit Size将这两个Stack Size设置得较大即可,可设置为:0x400000 即 4M 阅读全文
posted @ 2012-12-08 16:58 cqfuture 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 变义变量 m_editTest; 1. 获取控件显示内容1 CString strTmp(L"");2 m_editTest.GetWindowText(strTmp);2. 设置控件显示内容1 CString strTmp(L"");2 strTmp.Format(L"edit test");3 m_editTest.SetWindowText(strTmp);3. 设置控件属性为只读m_editTest.SetReadOnly(TRUE);4. 设置控制获取对话框焦点 1 // 更改OnInitDialog的返回值为FALSE 2 阅读全文
posted @ 2012-12-07 01:05 cqfuture 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 1. WIN32 接口库C定义规范示例 1 #ifdef BADATASYNCDSK_EXPORTS 2 #define BADS_API(type) extern "C" __declspec(dllexport) type 3 #elif defined( BADATASYNCDSK_LIB ) 4 #define BADS_API(type) type 5 #else 6 #define BADS_API(type) extern "C" __declspec(dllimport) type 7 #endif 8 9 /**10 * \brief 阅读全文
posted @ 2012-11-09 14:44 cqfuture 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 1. 定义自定义消息/** * \brief 消息测试 */ #define E6100_MSG_TEST ( WM_USER + 1001 ) 2. 声明自定义消息响应函数/** * \brief 消息响应函数 */ afx_msg LRESULT OnTest( WPARAM wParam, LPARAM lParam ); 3. 实现自定义消息响应函数LRESULT CPQDifLibTestE6100Dlg::OnTest( WPARAM wParam, LPARAM lParam ) { ::MessageBox( NULL, L"测试成... 阅读全文
posted @ 2012-11-08 10:51 cqfuture 阅读(288) 评论(0) 推荐(1) 编辑
摘要: 当在对工程的属性,如由静态工程转为DLL工程后,有时会出现工程中无法设置断点的问题,解决方式有如下:检查debug下工程配置是否设置正确。C++>General->Debug Information Format->Program Database (/Zi)C++>Optimization->Optimization->Disabled (/Od)Linker->Debugging->Generate Debug Info->Yes (/DEBUG)Linker->Debugging->Generate Program Dat 阅读全文
posted @ 2012-10-31 13:54 cqfuture 阅读(263) 评论(0) 推荐(0) 编辑