![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
xiashengfu
这个作者很懒,什么都没留下…
展开
-
野指针
野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。 “野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种:一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气转载 2012-08-30 14:47:14 · 598 阅读 · 0 评论 -
关于WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解
原文出处:http://www.cnblogs.com/helloj2ee/archive/2009/05/29/1491822.html我是个喜欢瞎琢磨的人。尤其是这几天心情非常郁闷。于是开始琢磨了…….琢磨的问题就是WS_CLIPCHILDREN和WS_CLIPSIBLINGS两种窗口样式的理解。 1.求助MSDN我的第一步当然是求助MSDN。在MSDN里面转载 2013-03-07 10:06:40 · 639 阅读 · 0 评论 -
VS2008添加GIF资源
1.问题:最近尝试显示GIF动画,从网上找到CPictureEX类,可以显示GIF动画,Demo中使用也很简单。但是,在实际使用时却遇到问题,GIF动态资源显示时变为了静态GIF资源。2.问题分析:经过多次反复实践,最终发现是在VS2008中导入GIF资源时出现了问题。在导入GIF资源时,VS2008会自动将GIF转换为静态GIF,甚至会改变GIF文件(你会发现再用图片查看器打开原来的文件时显原创 2013-03-12 10:15:36 · 3756 阅读 · 1 评论 -
用户自定义消息,以及消息传递的参数设定
有的时候窗口需要收发消息来达到某种效果或目的。而且用户可以自定义消息,并可以携带参数。此文浅谈介绍如何自定义消息和参数的设置。 /////////////////////////////////////////////////////////新建对话框工程,命名为Dialog DialogDlg.h类头文件中定义客户消息宏 ,如下#define WM_MYOWNMESS转载 2013-03-12 14:58:01 · 666 阅读 · 0 评论 -
COM组件开发实践(一)
Preface 因为项目需要,开始从事ActiveX方面的工作,看了一些资料,可惜都是些COM原理方面的,没有切合实际动手的东西,在CodeProject上读完David Marcionek的文章【1】后,收获良多,但也遇到一些恼人的小问题,因此在其基础上就一些易错点做些小注解。本文版权归David Marcionek所有。简介 本文目的在于让你快速掌握ActiveX控件开发转载 2013-03-12 09:28:33 · 611 阅读 · 0 评论 -
在 VS2005 的“资源视图”中添加 GIF 文件
1、打开资源视图,右项目,选择“添加资源”。 VS2005 的鈥溩试词油尖澲刑砑 GIF 文件" title="在 VS2005 的鈥溩试词油尖澲刑砑 GIF 文件" style="margin:0px; padding:0px; border:0px; list-style:none">2、在打开的“添加资源”对话框中,选择“自定义”,在“新建自定义资源”框中输入”GIF”,这里转载 2013-03-12 09:32:44 · 2225 阅读 · 0 评论 -
在 MFC 和 ATL 工程中使用动画GIF
简介本文将介绍两个 C++ 类―― CPictureEx 和 CPictureExWnd,使用它们可以在 MFC 和 ATL 工程中使用动画GIF效果。CPictureEx 是一个为 MFC 程序使用的 C++ 类,对于一些需要使用JPEG 和 GIF 图像格式作为 banner 的应用程序可以借助这个类来实现。对于静态 banner 的显示使用 OleLoadPicture 函数和 IP转载 2013-03-11 15:13:25 · 901 阅读 · 0 评论 -
GetTextMetrics 和 GetTextExtent的区别
GetTextMetrics 和 GetTextExtent的区别 (c++计算字符串像数)2009-05-19 15:55使用函数GetTextExtent可以计算出一个特定的文本行的宽度和高度,使用函数GetTextMetrics可以得到字符的有关尺寸,这两个函数的使用如下:GetTextExtent 函数用途:该函数使用设备对象dc当前使用的字体计算一个文本行宽度和高度(逻辑转载 2013-03-13 11:33:20 · 674 阅读 · 0 评论 -
用一个对话框显示后台线程进度的实现
功能描述:在后台有一个线程处理数据,现在需要在主线程弹出对话框显示线程的进度,线程处理完后会关闭对话框,在对话框上可以通过单击“取消”按钮结束线程。功能实现:1.主线程中的步骤:(1)在主线程新建一个对话框。CDlgWait dlgWait;// 新建对话框(2)创建一个线程,将对话框作为参数传递进去(此处传递一个全局的结构体,结构体中保存dlgWait的地址)。m_exp原创 2013-03-14 11:35:13 · 2080 阅读 · 0 评论 -
VC中Picture Control透明背景实现
VC中Picture Control透明背景实现在VC中使用Picture Control来放置图片时想做成透明背景的,选择Bitmap类型时是图片原样显示出来的,想做成透明的Icon然后在Picture Control中选择Icon类型,可是控件缩成了一个图标。最后只能选择Bitmap类型,因为用这种模式可以把很多图片使用多个Picture Control组合起来。在网上找了一些资料转载 2013-03-15 15:12:03 · 6991 阅读 · 3 评论 -
如何在C++程序中设置XP样式?
在VS中新建的C++工程默认是经典样式,那么如何设置C++样式呢?方法一:在头文件stdafx.h中添加如下代码,就可实现XP样式。#if defined _M_IX86#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='原创 2013-04-09 15:49:32 · 1403 阅读 · 0 评论 -
C++中delete和delete[]的区别
一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2)转载 2013-04-09 16:48:51 · 580 阅读 · 0 评论 -
读写锁(read-write lock)机制-----多线程同步问题的解决
转载地址:http://blog.chinaunix.net/uid-27177626-id-3791049.html读写锁(read-write lock)一 综述 在一些程序中存在读者写者问题,也就是说,对某些资源的访问会 存在两种可能的情况,一种是访问必须是排它行的,就是独占的意思,这称作写操作;另一种情况就是访问方式可以是共享的,就是说可以有多个线程同时去访问某个资源,转载 2017-04-02 10:35:41 · 543 阅读 · 0 评论 -
VC++ 文件读写总结
一、文件打开函数概述1. _open:_open 函数将打开由 filename 指定的文件并使其做好读写准备2._sopen:_sopen 函数将打开由 filename 指定的文件并使该文件做好共享的读写准备3.fopen:fopen 函数打开 filename指定的文件4.freopen:freopen函数将关闭当前与相关联的文件stream,并重新指原创 2017-04-02 11:55:04 · 5667 阅读 · 0 评论 -
wxWidgets编译注意问题
1.用VS命令行编译wxWidgets时,需要先修改路径include\wx\msw下的setup.h文件。将wxUSE_UNICODE和wxUSE_UNICODE_MSLU宏修改为对应的编译方式,Unicode下编译修改值为1,多字节下编译修改为0,然后再输入编译命令。如果不修改,虽然在编译命令中UNICODE=1时也能通过编译,但在与MFC混合使用的是否会出现编译错误。原创 2013-01-26 14:32:31 · 658 阅读 · 0 评论 -
改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景
原文出处:http://www.vckbase.com/index.php/wv/1550一、 实现过程1.表头修改新建一个MFC类CHeaderCtrlCl,其基类为CHeaderCtrl,响应OnPaint消息实现自绘,实现代码请看源代码(由于代码较占篇幅,所以就不贴上来了,抱歉),在头文件中定义函数LRESULT OnLayout( WPARAM wParam, LP转载 2013-01-10 15:53:42 · 1746 阅读 · 0 评论 -
使用VC++ 2010创建Ribbon界面
使用VC++ 2010创建Ribbon界面微软声称这种新的用户界面能够使用户更容易地使用软件的各项常用功能,例如Word 2007中的保存,设置格式,插入图片等常用功能,都可以从Ribbon界面快速地访问到,从而提高用户的生产效率。 创建MFC应用程序项目。随着Office 2007的发布。随着Office 2007的发布,它改变了以往传统的下拉式菜单用户界面,取而代之的是全新转载 2012-12-14 09:16:20 · 4723 阅读 · 1 评论 -
用WM_COPYDATA消息来实现两个进程之间传递数据
用WM_COPYDATA消息来实现两个进程之间传递数据进程之间通讯的几种方法:在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有 使用内存映射文件 通过共享内存DLL共享内存 使用SendMessage向另一进程发送WM_COPYDATA消息比起前两种的复杂实现来,WM_COPYDATA消息无疑是一种经济实惠的转载 2012-08-29 18:14:11 · 5780 阅读 · 0 评论 -
MFC中CString转int/double/TCHAR*类型
MFC中CString转int/double/TCHAR*类型 CString类型转换CString 型转化成 int 型把 CString 类型的数据转化成整数类型最简单的方法就是使用标准的字符串到整数转换例程。虽然通常你怀疑使用_atoi()函数是一个好的选择,它也很少会是一个正确的选择。如果你准备使用 Unicode 字符,你应该用_ttoi(),转载 2012-08-31 15:25:55 · 6759 阅读 · 0 评论 -
失去和得到焦点OnActivate
失去焦点和得到焦点响应的是:ON_WM_ACTIVATE()对应的处理是:afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);nState有三种状态:WA_INACTIVE The window is being deactivated.WA_ACTIVE The window is bein原创 2012-09-03 15:09:16 · 14392 阅读 · 0 评论 -
VC:设置光标(鼠标)形状
VC:设置光标(鼠标)形状 一、从文件加载光标图标HCURSOR hcur=::LoadCursorFromFile("AniCur.ani"); //加载光标 ::SetClassLong(GetSafeHwnd(),GCL_HCURSOR,(LONG)hcur);二、加载系统光标SetCursor(LoadCu转载 2012-09-03 16:12:44 · 8481 阅读 · 0 评论 -
C++学习的四个层次
C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:第一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C+转载 2012-09-03 10:22:32 · 1603 阅读 · 0 评论 -
WideCharToMultiByte和MultiByteToWideChar函数的用法
WideCharToMultiByte和MultiByteToWideChar函数的用法为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。MultiByt转载 2012-09-03 16:48:43 · 387 阅读 · 0 评论 -
C/C++基础知识:typedef用法小结
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:转载 2012-09-08 15:08:34 · 549 阅读 · 0 评论 -
指针常量与常量指针以及typedef定义的指针
一、指针常量与常量指针。char string[4] = "abc";//常量指针const char* c1 = string;√ c1++;//常量指针可以改变其指向× (*c1)++;//常量指针指向的值为常量不可以修改,VS提示:表达式必须是可以修改的左值//指针常量char* const c2 = string;× c2++;//指针常量表示'c2'本身是原创 2012-09-08 16:29:16 · 514 阅读 · 0 评论 -
typedef和#define的用法与区别
typedef和#define的用法与区别 一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef in转载 2012-09-08 14:28:55 · 219 阅读 · 0 评论 -
VC中退出应用程序-几种很有用的方法
VC中退出应用程序-几种很有用的方法1、对话框用 CDialog::OnOk(); Doc/View用 OnClose();2、PostQuitMessage(0);//最常用 PostMessage(WM_QUIT,0,0);//最常用 ::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CL转载 2012-09-24 18:06:10 · 675 阅读 · 0 评论 -
在C++中实现.NET风格的委托
引言 在.NET中,委托被用来实现事件处理。它允许一个类(方法)先注册一个事件,然后当此事件被引发时此注册的方法就会被调用。在非.Net环境的C++中,这并不是一件容易的事,尤其是类的非静态成员函数,要做为回调函数就更困难了。本文的目标就是给出一种解决方案, 使类的静态成员函数,非静态成员函数,还有类非成员函数都能像回调函数一样使用。这个实现非常重视类型安全,为了保持类型安全我们省去了某转载 2012-10-25 14:50:32 · 639 阅读 · 0 评论 -
实现C++中的事件委托机制
摘要: 介绍了事件委托机制的需求,各种解决方案的演变,最终提出模板化的事件委托机制,并给出较详细的进化过程和原理说明。关键词: C++,委托,委托器,事件器,模板第一章 基础版实现在平时的工作中,我们经常会遇到以下情况void Do(int event_id){ …}void OnEvent(int event_id){ Do(event_i转载 2012-10-25 14:28:08 · 4551 阅读 · 1 评论 -
解决透明static控件重叠问题
解决透明static控件重叠问题 C++代码 HBRUSH CStadus::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any转载 2012-11-28 09:44:54 · 730 阅读 · 0 评论 -
VC WM_CLOSE,WM_QUIT,WM_DESTROY三个消息什么区别?
一、WM_DESTROY 是关闭程序的WM_CLOSE 是关闭窗口的WM_QUIT 是关闭消息环的以下是程式的死亡:1. 使用者选按【File/Close】,於是发出 WM_CLOSE。2. CMyFrameWnd 并没有设置WM_CLOSE 处理常式,于是交给预设之处理常式。3. 预设函式对于WM_CLOSE 的处理方式是呼叫 ::转载 2012-12-05 15:44:21 · 3042 阅读 · 1 评论 -
C++ 线程 共享资源保护
一、C++互斥量 < mutex >头文件介绍 Mutex 系列类(四种) - std::mutex,最基本的 Mutex 类。 - std::recursive_mutex,递归 Mutex 类。 - std::time_mutex,定时 Mutex 类。 - std::recursive_timed_mutex,定时递归 Mutex 类。Lock 类(两种) - 列表内容原创 2017-04-16 18:02:56 · 1526 阅读 · 0 评论