自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (4)
  • 收藏
  • 关注

原创 继续总结CWinThread实现多线程的问题

1.CWinThread的继承类实现的多线程或者AfxBeginThread()创建的用户界面线程,在结束的时候通过WM_QUIT消息退出消息循环,这样就要求在线程退出时消息循环仍然不能出错,而对于没有显式设定主窗口的子线程默认会将主线程的主窗口(CMainFrame)设定为自己的主窗口,因此要求子线程在退出时主窗口仍然有效(因为在消息循环中有断言ASSERT(::IsWindow(m_pMain

2013-12-31 11:30:20 4086 2

原创 MFC开发中的多线程封装

MFC开发中的多线程封装目录一、        基本知识:... 11.     线程的启动与结束... 11)     线程的启动... 12)     线程的结束... 23)     深入剖析线程的创建与结束函数... 24)     启动与结束的封装:... 22.     线程的执行过程... 41)     线程对象的

2013-12-27 19:45:26 1859

转载 MFC不能多线程操作控件的原因

对于大多数mfc对象,请不要在线程间传递它们,不管是栈上的还是堆上的!原因如下:      1、 mfc的大多数类不是线程安全的,调用传入对象的成员函数可能不会报错,但是未必能达到程序预定的功能!      2、 mfc与界面有关的类,其大多数成员方法都是通过sendmessage实现的,如果消息处理函数本身不是线程安全的,你从工作线程中调用这些方法迟早会同你界面线程的用户消息响应

2013-12-27 14:52:17 3225

转载 关于CDialog类的OnOK、OnCancel、OnClose和OnDestroy

首先,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数。从应用程序结构的角度,拿对话框来说,红色的X对应的是CWnd,而处于对话框中的“确定”、“取消”按钮则对应了CDialog。其次,OnClose():消息响应函数,响应WM_CLOSE消息,当"关闭"按钮被单击的时候(而不是我们眼

2013-12-24 14:04:11 2133

转载 关于#define new DEBUG_NEW

意思是你在debug的模式下所有的new都会被替换成DEBUG_NEW 以下是MSDN中的内容 在 MFC 中,可以使用 DEBUG_NEW 宏代替 new 运算符来帮助定位内存泄漏。在程序的“Debug”版本中,DEBUG_NEW 将为所分配的每个对象跟踪文件名和行号。当编译程序的“Release”版本时,DEBUG_NEW 将解析为不包含文件名和行号信息的简单 new 操作。因此,在程

2013-12-24 13:58:57 2776

转载 CRuntimeClass的结构与功能,DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE

CRuntimeClass在MFC中是至关重要的一个结构。CRuntimeClass没有基类。  每个由CObject派生的类都与一个CRuntimeClass结构相联系,用户可以使用该结构获取一个对象及其基类的运行时信息。当需要额外的函数参数检查时,或当用户必须根据一个对象的类编写特殊目的代码时,在运行时确定该对象的类就非常有用。C++并不直接支持运行时类的信息。CRun

2013-12-23 18:59:40 1030

原创 通过继承CWinThread实现MFC多线程

1.CWinApp是CWinThread的一个继承实例,我们继承CWinThread时可以参考CWinApp的工作方法;2.CWinThread继承类对象在调用AfxBeginThread或CWinThread::CreateThread()后线程立即启动,这两种方法都可以创建界面UI线程或工作者线程。3.WM_QUIT消息可以被任何线程处理。或使用PostQuitMessage发送WM_

2013-12-20 21:00:32 2839

原创 MFC控件积累——CMFCButton控件

1.对于按钮控件,要响应按钮被click的消息并不需要为对话框添加CButton或CMFCButton类数据成员并动态创建或者DDX_Control创建,可以直接对按钮ID进行消息映射并响应。2.如果选择使用DDX_Control()创建CMFCButton类成员变量,会造成严重的内存泄露,虽然在之后的MFC版本中被修复,但使用VS2010SP1时应该还没有修复,原因与解释如下:首

2013-12-20 14:35:46 2146

转载 UltraEdit 对UTF-8文件的自动处理

关于Unicode 编码,这里有篇文章 可以参考。Unicode是几种多字节编码格式的统称,其中使用广泛的有UTF-8与UTF-16,而通常人们说Unicode时,实际是在指UTF-16编码,UltraEdit 就是这样,为了避免混淆,下面都按照标准引用名字。 使用UltraEdit 打开一个UTF-8 编码的文件,然后按ctrl+h 进入16进制模式查看文件内码,你会发现文件已经被转

2013-12-19 17:34:14 14072

转载 windows系统中文件大小和占用空间不同的原因解析

Windows系统中文件大小和占用空间不同的原因解析1.“文件大小”与“所占空间”的差别     为了便于大家理解,我们先来看两个例子:例1:找到D盘上的Ersave2.dat文件,用鼠标右键单击该文件,选择“属性”,即可打开对话框,我们可以看到,Ersave2.dat的实际大小为655,628 Byte(字节),但它所占用的空间却为688,128 Byte,两者整整相差了32KB

2013-12-19 17:33:33 1950

原创 用xsl格式化MSXML2操作的XML文件

MSXML2::IXMLDOMDocument2Ptr CXMLDOMFile::XMLNormalize( MSXML2::IXMLDOMDocument2Ptr pXMLDocOld){// Style for normalizationchar pszStyle[]="\\\\\\\";// Create a style dom doc

2013-12-19 16:01:30 1408

转载 BSTR字符串类型(跨编程语言的字符串)

计算机 C++ 字符串概述它被描述成一个与自动化相兼容的类型,由于操作系统提供相应的API函数(如SysAllocString)来管理它以及一些默认的调度代码。因此BSTR实际上就是一个COM字符串,但它却在自动化技术以外的多种场合下得到广泛使用。为什么需要BSTRCOM是一种跨编程语言的平台,需要提供语言无关的数据类型。多数编程语言有自己的字符串表示。●C

2013-12-19 11:14:09 1316

转载 MFC控件积累——CComboBoxEx控件

创建扩展组合框 (Extended Combo Box) 控件的方式取决于是在对话框中使用该控件还是在非对话框窗口中创建此控件。直接在对话框中使用 CComboBoxEx在对话框编辑器中,将“Extended Combo Box”控件添加到对话框模板资源。指定其控件 ID。(实践证明不可以使用Combo Box控件资源)使用扩展组合框 (Extended Combo Box)

2013-12-18 17:45:14 2342

转载 LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义

UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。   MBCS,它是多字节字符集,它是不定长表示世界文字的编码。

2013-12-18 16:11:33 725

转载 MFC控件积累——CMFCTabCtrl

CMFCTabCtrl类主要用于分页显示,与CTabCtrl类似,自我认为功能比TabCtrl强大,但中间却存在一些bug.一、一般使用方法(vc2010同vs2008用法)       1.对话框放置PictureCtrl,设Type=Rectangle,Visible=False,Color=Gray,ID=IDC_STATIC_TAB(实践证明使用Tab Control资源创建不

2013-12-18 16:09:48 7373

原创 MFC程序双语言实现

1.对于“对话框”、“菜单”、“工具栏”三种的双语言实现采用MFC资源控制方式实现,例如:1.  新建工程新建了一个对话框工程,工程名称为MultiLanguages,默认语言选择是“中文”。2.  添加多国语言的资源在创建工程后,工程会添加默认的资源,如主对话框,都是“中文”资源。现在我们需要添加相应的英文的资源文件。为主窗口IDD_MULTILANG

2013-12-18 12:15:29 1223

转载 boost库的智能指针

1、 什么是智能指针智能指针是一种像指针的C++对象,但它能够在对象不使用的时候自己销毁掉。我们知道在C++中的对象不再使用是很难定义的,因此C++中的资源管理是很复杂的。各种智能指针能够操作不同的情况。当然,智能指针能够在任务结束的时候删除对象,除了在程序之外。许多库都提供了智能指针的操作,但都有自己的优点和缺点。Boost库是一个高质量的开源的C++模板库,很多人都考虑

2013-12-16 20:00:59 771

原创 MFC控件积累——CDialog

1.对于OnInitDialog是对WM_INITDIALOG消息的自动响应进行调用的,重载时在其中应该如下写:声明:virtual BOOL OnInitDialog();//This method is called in response to the WM_INITDIALOG message. 定义:BOOL ConnectConfigServerTab::OnI

2013-12-14 18:41:31 1960

原创 MFC控件积累——CIPAddressCtrl

1.CIPAddressCtrl控件的DDX函数:(1)2.IP地址与CString的互相转化//将CString   型IP地址在IPAddressCtrl中显示  CString   strIP="192.168.0.10";  DWORD   dwIP;  dwIP   =   inet_addr(strIP);  unsigned   char 

2013-12-13 20:25:36 2200 6

原创 boost库之property_tree解析xml文件

1.首先看下property_tree对于中文的支持性:对xml文件:中文中文Englishtry{ptree pt;CStringA xmlPath = "E:\\Temp\\TestProject\\中文文件夹\\中文xml文件.xml";const char* xmlpath = xmlPath;const std::string strp

2013-12-13 15:23:10 1168

转载 C++中的“异常”知识积累

一、什么是异常处理        一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想        C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错

2013-12-12 20:40:30 698

原创 CStirng、CStringA、CStringW的使用

1.CString在多字节环境下(未定义UNICODE)为CStringA,在Unicode环境下(定义有UNICODE)为CStringW。2.对于涉及到char*与CStringA或CString转换时最好使用CStringA而不要使用内部存储结构不一定的CString,对wchar_t*与CStringW或CString同理。3.CStringA在UNICODE环境下可以正确转换为C

2013-12-12 19:11:04 17064 2

转载 CMFC**系列类使用

1.如果你使用了CFrameWndEx类,但是App类并未继承自CWinAppEx,会报告如下的内存泄露:Detected memory leaks!Dumping objects ->{914} client block at 0x01481660, subtype c0, 200 bytes long.a CMFCVisualManager object at $0148166

2013-12-10 16:03:53 2611

转载 CContextMenuManager上下文菜单管理器以及为菜单添加图标

在Visual Studio 2008SP1中,要弹出上下文关联菜单的话,只需要在应用程序初始化的时候调用CWinAppEx::InitContextMenuManager,然后使用CWinAppEx::GetContextMenuManager获得一个指向应用程序的上下文管理器。如果工程是单文档/多文档的话,可能会自动关联一个右键菜单,可以在应用程序的实现文件看到类似如下代码://

2013-12-09 19:46:23 2812

转载 VS2010中如何添加“依赖”、“库目录”、“包含目录”

在生成时,可能需要首先生成某些项目,以便生成由其他项目使用的可执行代码。使用 “解决方案属性页”对话框 ->“通用属性”->“项目依赖项”  设置当前生成顺序。若要访问此对话框,请在“解决方案资源管理器”中选择一个解决方案,选择“视图”菜单上的“属性页”,然后选择“通用属性”下的“项目依赖项”。    关于项目依赖项     当一个项目使用另一个项目生成的可执行代码时,生成代码的项

2013-12-09 10:16:22 2893

原创 C语言下Unicode字符串与多字节字符串转换方法

1.Unicode字符串转换为多字节字符串:size_t wlen = 0;wchar_t *wstr = (wchar_t*)pSrc;//source unicode stringsize_t byteLen =0;//unicode string length in byte size_t coverted = 0;char retBuf[MODEL_CODEC_

2013-12-05 16:52:40 3391 1

转载 C与C++中的enum类型使用

1.enum常量与enum变量对于enum类型,定义enum时在{}中定义的属于enum常量,这些量不可以被更改,同时可以在程序中任意地方声明一个enum变量,但enum变量必须用enum常量进行赋值。enum myenum{first,//enum常量second//enum常量};.......enum enumVar = first;//enum变

2013-12-02 23:27:57 15252 3

转载 C++中函数对象(仿函数)的使用

今天在学习Qt中QTableWidget中对项目排序过程中遇到了函数对象的使用:void Spreadsheet::sort(const SpreadsheetCompare &compare){ QList rows; QTableWidgetSelectionRange range = selectedRange(); int i; for (i = 0;

2013-12-01 20:07:55 761

原创 QTableView与QTableWidget高阶使用积累

1.合并单元格实现void QTableView::setSpan(int row, int column, int rowSpanCount, int columnSpanCount)Sets the span of the table element at (row, column) to the number of rows and columns specified by (row

2013-12-01 16:36:50 9737 3

C++ Qt设计模式(中文版)

好多同学希望有中文版的C++ QT设计模式,楼主也是找了很久,好不容易搞到中文版的呢,分享出来,与各位Qt programmer共阅。

2013-10-28

GOOSE数据包ASN.1/BER数据编解码程序

自己写的,可用于Windows或VxWorks下的GOOSE数据包编解码,对理解GOOSE数据包的结构和ASN.1/BER编解码很有帮助。而且里面还包含了很多参考资料与开发文档,帮助你理解程序。

2013-10-28

C++ Qt设计模式.pdf

《C++Qt设计模式(第2版)》是美国萨福克大学已使用十余年的经典教程,利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想。全书共分四个部分:第一部分介绍C++、UML、Qt、模型-视图、SQL、XML、设计模式等基础知识,目的是为零基础的C++初学者铺垫一条学习面向对象编程的快捷之路;第二部分讲解内存访问、继承等重要的C++特性,是前一部分的延伸和拓展;第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后面的复习题,既可作为课堂上的讨论题,也可进一步启发读者对于关键知识点的思考。《C++Qt设计模式》可作为软件开发人员学习Qt开发技术的参考书,也可作为从事Qt软件开发的研究人员和科技工作者的工具书。

2013-09-17

VC工程文件转换QT工程文件(python脚本)

从VS2008工程文件(.vcproj)中提取可用的QT工程文件信息,用于静态链接工程(lib),需要python解释环境运行。直接放在需要提取的工程文件文件夹下运行,在生成的RawPro文件夹中查看提取的QT工程文件信息。稍作修改就可以用来提取其他类型的vcproj信息。

2013-08-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除