C++/MFC
GAMELOFT9
读万卷书,行万里路,知行合一。
展开
-
invalidate和updatedata
InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。Invalidate()之后:...OnPaint()->OnPrepareDC()->OnDraw()所以只是刷新在OnPaint()和OnDr转载 2014-04-09 19:35:58 · 660 阅读 · 0 评论 -
C++ extern详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数转载 2014-04-09 12:27:41 · 630 阅读 · 0 评论 -
MFC 静态文本无法显示
一、问题描述 在对话框里拖入了一个静态文本控件,想点击时显示原创 2014-04-09 15:47:22 · 2675 阅读 · 0 评论 -
CString的一些常用方法
CString Left( int nCount ) const; //从左边1开始获取前 nCount 个字符CString Mid( int nFirst ) const; //从左边第 nCount+1 个字符开始,获取后面所有的字符CString Mid( int nFirst, int nCou转载 2014-04-09 13:16:56 · 813 阅读 · 0 评论 -
error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
一、问题描述 打开原创 2014-05-09 13:57:12 · 1224 阅读 · 1 评论 -
MFC控件关联变量的类型
control型变量是这个控件所属类的一个实例(对象)可以通过这个变量来对该控件进行一些设置。而value只是用来传递数据,不能对控件进行其它的操作。control型变量可以获得控件的实例,通过这个变量,你可以操纵控件value型变量仅仅可以获得该控件的public型变量如果你添加了一个m_CtrlEdit的control型变量你可以调用控件支持的所有函数,如:m_Ct转载 2014-04-09 15:03:32 · 1786 阅读 · 0 评论 -
无法解析的外部符号
一、问题描述转载 2014-04-09 14:17:00 · 844 阅读 · 0 评论 -
不能将参数从“const char”转换为wchar_T
一、问题描述原创 2014-04-09 13:08:54 · 2608 阅读 · 0 评论 -
MFC中的资源视图
String Table是MFC里相当有用的资源,里面定义了当你把鼠标放在工具栏上显示的关于某个工具栏的信息,这个没啥好说的,这里主要介绍一下最前面的两项:IDR_MAINTRAME 和 IDR_TESTTYPE 其中TEST在你的程序里是指你的程序的名字:在Caption里有这样的定义 Test\nTest\nTest\n测试文档\n.ddd\nTest.Document\nTest原创 2014-04-08 20:41:09 · 2781 阅读 · 0 评论 -
VS 2010基本的调试命令
F5F9F10F11Shift+F11C原创 2014-04-08 17:54:38 · 726 阅读 · 0 评论 -
在VS 2010中如何使用Class Wizard添加消息处理函数
教科书和网上讲MFC大多是基于VC++6.0,这里讲一下VS2010的原创 2014-04-08 20:12:12 · 9384 阅读 · 1 评论 -
MFC开发链接库的选择
使用VS2010,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义。第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件。第三种是将DLL中的相关代码写进EXE文件中,文件较大转载 2014-04-09 11:36:50 · 632 阅读 · 0 评论 -
vc++目录配置
本文转载自“Erin 技术交流 空间” 原文地址http://hi.baidu.com/erintojerry/blog/item/f078d70b333c1ccb62d9868e.html 这是VS2010的改变,不能够在“工具-选项”中看到“VC++目录”了。 但是呢,我们可以在另外一个地方找到它,请看下边的对比照片。VS2008中:转载 2014-06-01 10:36:15 · 861 阅读 · 0 评论 -
分层窗口(layeredwindows)
Janky_H contact me at Janky_H@hotmail.com Layered WindowsWindows 2000 introduces a new extended window style bit: WS_EX_LAYERED. When used properly, it can significantly imp转载 2014-06-05 13:24:17 · 3665 阅读 · 0 评论 -
使用StretchBlt函数导致位图失真的解决方案
vc中位图伸缩函数StretchBlt在对图片进行缩放时会造成严重的图片失真。在了解解决方法前先巩固下StretchBlt的用法:StretchBlt函数功能:函数从源矩形中复制一个位图到目标矩形,必要时按目前目标设备设置的模式进行图像的拉伸或压缩。函数原型:BOOL StretchBlt(HDC hdc, int nXOriginDest, int nYOriginDes转载 2014-04-14 10:47:58 · 1692 阅读 · 0 评论 -
如何为应用程序添加背景
1.原创 2014-04-11 11:22:12 · 1112 阅读 · 0 评论 -
BitBlt 和StretchBlt的区别
CDC::BitBltBOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );返回值:函数成功,返回非零值,否则为0。参数: x 指定目标矩形左上角的逻辑x坐标。 y 指定目标矩形左上角的逻辑y坐标。 nWidth 指定目标矩原创 2014-04-11 16:30:06 · 1287 阅读 · 0 评论 -
releaseDC和deleteDC的区别
DeleteDC 与 CreateDC 对应使用ReleaseDC 与 GetDC 对应使用所以:DeleteDC 与ReleaseDC的区别 实际就是 CreateDC和GetDC的区别windows系统DC只能release 自己建的要delete原创 2014-04-11 14:55:49 · 2309 阅读 · 0 评论 -
OnPaint 与OnDraw的区别
问题:我在视图画的图象或者文字,当窗口改变后为什么不见了?OnDraw()和OnPaint()两个都是解决上面的问题,有什么不同?答:OnDraw()和OnPaint()好象兄弟俩,因为它们的工作类似。至于不见了的问题简单,因为当你的窗口改变后,会产生无效区域,这个无效的区域需要重画。一般Windows会发送两个消息WM_PAINT(通知客户区 有变化)和WM_NCPAINT(通知非客原创 2014-04-10 20:42:56 · 1306 阅读 · 0 评论 -
防止窗口闪烁的方法
1、将Invalidate()替换为InvalidateRect()。 Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域内的内容,所以所需时间会少一些。2、禁止系统搽除你的窗口。 系统在需要重画窗口的时候会帮你用指定的背景色来搽除窗口。可是,也许需要重画的区域也许非常小。或者,在你重画这些东西之间转载 2014-04-10 16:28:23 · 700 阅读 · 0 评论 -
MFC_滑块控件使用
滑块控件:与进度条控件使用类似:SetRange设置范围SetPos设置进度GetPos获得当前进度使用示例: picture控件:框架类型关联变量:CStatic m_Area;文本框控件关联变量:UINT m_nRvalue;UINT m_nGvalue;UINT m_nBvalue;进度条控件关联变量:CSliderCtrl转载 2014-04-10 21:02:23 · 1533 阅读 · 0 评论 -
EditBox输入时自动换行
设置该EditBox属性: 1.Auto HScroll False2.OEM Convert False3.Want Return True4.Multiline True原创 2014-05-09 15:51:10 · 1933 阅读 · 2 评论 -
MCIWnd的使用
Windows中提供了一个MCIWnd窗口类,可以更加方便的在一个VC窗口中操作多媒体。 使用MCIWnd,源文件中需要包含头文件 vfw.h,在Project->Settings->Link->Object/libray module中加入库 vfw32.lib。 1、MCIWnd的创建 MCIWnd子窗口的创建可使用MCIWndCreate函数: HWN转载 2014-04-09 14:01:26 · 2632 阅读 · 0 评论 -
MFC框架中WM_COMMAND消息响应顺序
在MFC开发的程序中,菜单、工具条按钮等都会产生WM_COMMAND消息。而在MFC的Document/View框架中,有很多类可以响应WM_COMMAND消息,分别是框架类:CFrameWnd、CMDIChildWnd、CMDIFrameWnd;应用程序类CWinApp;文档类CDocument;以及视图类CView。当应用程序主菜单发送了一个WM_COMMAND消息时,WM_COMMA转载 2014-04-03 17:37:07 · 757 阅读 · 0 评论 -
透过宏定义了解MFC消息映射
消息系统是MFC的重要组成部分。MFC的消息响应机制并不复杂,而且MFC的开发环境 Visual Studio来供了非常好的自动化工具,自动生成代码。MFC也定义了丰富的宏来简化消息响应的代码。这使得很多初学者都能快速开发出基于消息响应机制的应用程序。然后也正是这些带来方便的宏,使很多人摸不着头脑。当不小心的代码操作使自动化工具不好用的时候,看着那一组更像是一堆的宏,很多人只好一头雾水。要转载 2014-04-03 17:34:29 · 752 阅读 · 0 评论 -
函数里参数被注释掉了
void CXXXView::OnDraw(CDC* /*pDC*/)注释了参数名,这样的话CDC* 参数使用了缺省参数;这里用注释表示出来,一方面方便理解,另一方面也是为了防止编译时发出某某变量未使用的警告。如果函数体内要用到pDC参数的话,只要把注释去掉就可以了。原创 2014-04-03 19:40:08 · 1648 阅读 · 0 评论 -
typedef和#define
本文整理自网络。一、概述 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,比如替换。但更多的是不同,特别是在一些复杂的用法上,就完全不同了。下面主要讲typedef的用法,在需要的地方会与#define进行比较。二、主要内容1.typedef的用途(1)、定义一种类型的别名,而不只是简单的宏替换。原创 2014-03-10 10:11:59 · 575 阅读 · 0 评论 -
dll概述
一、概论 先来阐述一下DLL(Dynamic LinkableLibrary)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DL原创 2014-03-10 10:11:45 · 938 阅读 · 0 评论 -
__declspec(dllexport)和__declspe…
本文整理自网络。 做DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,只能用__declspec(dllexport)导出类。对于__declspec(dllimport)则是管导入的。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉原创 2014-03-10 10:11:43 · 1152 阅读 · 0 评论 -
c++ string
本文整理自网络。1.声明一个C++字符串(首先要包含头文件#include)声明一个字符串变量很简单: string Str;这样我们就声明了一个字符串变量。但既然string是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下:a) st原创 2014-03-10 10:11:28 · 1196 阅读 · 0 评论 -
文件操作
2013-12-2一、概述 对于文件的读写操作,C++提供了更为方便强大的模式功能。我们当然可以使用传统的C-FILE*模式打开文件,也可以使用Windows提供的CreateFile函数获得文件句柄,但是考虑到跨平台和简便性,还是要数C++的iostream类对象。iostream提供了对于标准输入输出、文件读写和内存string读写的全套机制,当然,这一切都建立在类树结构的继承-派生机原创 2014-03-10 10:11:17 · 734 阅读 · 0 评论 -
编译预处理
所谓编译预处理,就是在C源程序的编译之前,由编译预处理程序对这些编译预处理命令进行处理的过程。最常见的就是常量的替换。编译预处理按功能可以分为宏定义,文件包含和条件编译三类。编译预处理命令以#开头,下面进行详细说明:一. 宏定义与符号常量1. 无参宏定义#define 标识符 字符串(1)宏名一般用大写字母表示,以示与变量区别。(2)宏定义不是C语句,所以不能在行原创 2014-03-10 10:10:42 · 1164 阅读 · 1 评论 -
static和const区别
本文整理自网络。 static是c++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。一、控制存储方式:static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。 1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈原创 2014-03-10 10:11:56 · 661 阅读 · 0 评论 -
转 C++ iterator迭代器简介
原文地址:C++ iterator迭代器简介">转 C++ iterator迭代器简介作者:__one_day__ 除了使用下标来访问vector对象的元素外,标准库还提供了另一种检测元素的方法:使用迭代器(iterator)。迭代器是一种允许程序员检查容器内元素,并实现元素遍历的数据类型。 标准库为每一种标准容器(包括vector)定义了一种迭代器类型。迭代器类型提供了比下标操作更一转载 2014-03-10 10:11:37 · 840 阅读 · 0 评论 -
c++ vector容器
本文整理自网络。 vector容器是c++的一个模板类,它为内置数组提供了一种替代表示,为了使用vector 我们必须包含相关的头文件:#include使用vector有两种不同的形式,即所谓的数组习惯和STL习惯。一、数组习惯用法1. 和数组一样定义一个已知长度的 vector :vector vec( 10); //类似数组定义int a[ 10 ];我们可以通过原创 2014-03-10 10:11:30 · 743 阅读 · 0 评论 -
使用VS 2010创建dll(c++)
一、动态链接库简介 动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数转载 2014-04-29 20:39:28 · 666 阅读 · 0 评论 -
WM_CTLCOLOR和OnCtlColor消息函数
WM_CTLCOLOR消息用来完成对EDIT, STATIC, BUTTON等控件设置背景和字体颜色, 其用法如下:1.首先在自己需要设置界面的对话框上点击右键-->建立类向导-->加入WM_CTLCOLOR消息-->自动生成OnCtlColor()函数, 此函数可以对本对话框的控件的界面外观做修饰, 用法如下:将类向导产生的函数做如下修改:HBRUSH CDialogColo转载 2014-04-14 20:14:31 · 1034 阅读 · 0 评论 -
VS 2010智能提示没有了
一、问题描述 编写代码时,发现函数自动补全,弹出的功能没有,十分麻烦。二、解决办法 1.点击“编辑”-》IntelliSense,里面有列出成员,参数信息,完成单词等选项,启用。 2.如果还不行,就重置一下环境。工具-》导入和导出设置-》重置所有设置。 3.如果还不行,就重新安装吧。或者下载一个插件,比如Assist x等。原创 2014-04-03 15:13:30 · 1332 阅读 · 0 评论 -
windows消息机制
windows是基于事件和消息的操作系统,要学习windows编程,必须要了解事件和消息机制。一、什么是消息通俗地讲就是操作系统发送给应用程序的一个通知,它告诉应用程序一个事件的发生。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给相应的应用程序。二、消息的组成消息本身是作为一条记录传送给应用程序的,这个记录类型叫做TMsg。TMS转载 2014-04-03 17:25:49 · 1060 阅读 · 0 评论 -
GetModuleHandle和AfxGetInstanceHandle和CWinApp->m_hInstance的区别
GetModuleHandle和AfxGetInstanceHandle和CWinApp->m_hInstance的区别在工作中遇到一个问题,就是在一个DLL中想改变这个DLL的窗口的ICON,于是写了如下的代码: HICON hicon=LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON1)); if (hic转载 2014-04-15 21:18:53 · 1116 阅读 · 0 评论