MFC/VC++
文章平均质量分 86
小龙王2010
加我微信 chinaitlee (昵称:小玩子君) 可免费协助博文答疑 和下载资料, 权当交个盆友
展开
-
VC++ & MFC实现的优秀的开源项目
List of Best Open Souce projects written in VC++/MFC7-Zip (http://sourceforge.net/projects/sevenzip/): 7-Zip is a file archiver with the high compression ratio. The program supports 7z, ZIP, C原创 2012-05-19 23:21:00 · 1523 阅读 · 0 评论 -
try块里的gets()函数,error:在此作用域未声明解决方案
try块里的gets()函数,error:在此作用域未声明C/C++ code#includeusing namespace std;int main(){ char a[10]; double x; try { int flag=0; gets(a); for(int i=0;a[i]!='\0';i++) if(!(原创 2012-11-06 10:46:18 · 2715 阅读 · 0 评论 -
控件与组件的区别
组件(Component)比控件(Control)涵盖的范围要广,控件是组件的一种。什么是组件?可以把它理解成一个可以反反复复使用的模块。就是说只要一个模块能够重用,它就可以称当上一个组件,而不用在乎这个模块有没有“外型”。控件不仅是可以“重用”的模块,而且还有“外型”。平常看到的除了UI对象之外的程序子窗体,都算得上控件。UI对象有3种:菜单、工具栏、快捷键,除开它们其它可以看得到的子窗原创 2013-01-12 18:14:41 · 1917 阅读 · 1 评论 -
VS2010使用MFC类向导时提示“灾难性故障”的解决
这两天想给自己的一个VS2010工程项目通过MFC类向导添加一些控件变量,却发现提示一个错误对话框吓我说“灾难性错误”然后VS2010就崩溃了,要不就是什么也不说直接退出了。 一开始看网上的一些帖子说要装补丁什么的,可是自己的另外两个项目也可以的,应该软件没问题,并且程序也能够正常运行的。又有帖子说清除VS生成的那些.ncb,ipch等中间文件,于是各种try,尝试转载 2013-03-28 20:21:03 · 1515 阅读 · 0 评论 -
MFC中的String Table
String Table是MFC里相当有用的资源,里面定义了当你把鼠标放在工具栏上显示的关于某个工具栏的信息,这个没啥好说的,这里主要介绍一下最前面的两项:IDR_MAINTRAME 和 IDR_TESTTYPE 其中TEST在你的程序里是指你的程序的名字:在Caption里有这样的定义 Test\nTest\nTest\n测试文档\n.ddd\nTest.Document\nTest转载 2013-03-31 15:53:03 · 8443 阅读 · 0 评论 -
LPCTSTR 基础概念解析
类型理解LPCTSTR类型:L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。P表示这是一个指针C表示是一个常量T表示在Win32环境中,有一个_T宏STR表示这个变量是一个字符串原创 2013-03-25 23:50:03 · 1246 阅读 · 0 评论 -
WTL,ATL与MFC之比较
MFC,ATL,WTL的历史沿袭需求推动了技术的发展,从MFC到ATL,从ATL再到WTL的发展历程我想就是一个最好的见证。早期的VC++开发者们发现了MFC(Microsoft Foundation Classes) 这样一个好东东。他们发现,MFC提供了一个强大的类库,很好的满足了面向对象编程的需要。随着泛型编程技术的发展和时间的推移,慢慢地,他们慢慢觉得MFC的类库过于庞大和转载 2013-05-19 11:16:37 · 992 阅读 · 0 评论 -
ListControl的使用
一、基本使用1.新加ListControl 控件,属性中的style属性页下的View选择Report。并设置其对应的控制变量如:m_list1。2.初始化,即设置列。 用m_list1。 m_list1.InsertColumn(0,"曲名"); //插入列 m_list1.InsertColumn(1,"类型"); m_list转载 2013-06-04 01:51:18 · 1019 阅读 · 2 评论 -
DeflateRect 使用说明
DeflateRect void DeflateRect(int x,int y); void DeflateRect(SIZE size); void DeflateRect(LPCRECT lpRect); void DeflateRect(int l,int t,int r,int b); 说明: 通原创 2013-08-05 17:24:06 · 2725 阅读 · 0 评论 -
BitBlt介绍
设备上下文绘图有很多种方法。例如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还可以使用CDC类的位图函数来输出位图到设备上下文中。BitBlt 用于从原设备中复制位图到目标设备,语法格式如下:BOOLBitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwRop);x:目转载 2013-08-05 17:45:54 · 759 阅读 · 0 评论 -
CreateCompatibleDC 说明
该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。原型:HDC CreateCompatibleDC(HDC hdc); 参数:hdc:[in]现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。返回值: 如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL。若想获得更多错误信息,转载 2013-08-05 20:41:37 · 1251 阅读 · 0 评论 -
VC++/MFC小结
1,从那种基本类中继承的函数 变异时都会自动被调用2,void *memset(void *s,int c,size_t n) 总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。3,DoDataExchange中 编辑框 DDX_Text(pDX, IDC_EDTXSXM, m_xsxm);//把ID_EDITSXM这个控件和字符串转载 2013-08-06 10:20:37 · 946 阅读 · 0 评论 -
CreateCompatibleDC 解释
函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。函数原型:HDC CreateCompatibleDC(HDC hdc);参数:hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。返回值:如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL。 CreateCompatib转载 2013-08-05 20:01:29 · 6355 阅读 · 0 评论 -
visual c++中的画刷类CBrush使用实例
画刷类CBrush利用画笔可以画图形的边框,而用画刷就可以在图形内着色。大多数的GDI绘图函数既使用画笔又使用画刷,它们用画笔绘制各种图形的周边,而用画刷填充图形,因而可以用一种颜色和风格去设置画笔,而用另一种颜色和风格去设定画刷,通过一次函数调用就可以绘制出形状复杂的图形。画刷是由CBrush类管理的,创建画刷有两种方法:一种是调用构造函数,另一种是调用相关的成员函数。1.CBrus原创 2013-08-05 22:43:24 · 7145 阅读 · 0 评论 -
vc中如何使用设备描述表
Windows 程序在屏幕、打印机或其它设备上画图时,它并不是将像素直接输出到设备上,而是将图绘制到由设备描述表表示的逻辑意义上的"显示平面"上去。设备描述表(DC)是Windows中的一种数据结构,它包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。在Windows画图之前,Windows程序从GDI获取设备描述表句柄(HDC),并在每次调用完GDI输出函数转载 2013-08-06 09:55:06 · 901 阅读 · 0 评论 -
GetWindowRect
函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。 函数原型:BOOL GetWindowRect(HWND hWnd,LPRECT lpRect); 是属于CWnd类的函数. 参数: hWnd:窗口句柄。 lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。 变量:转载 2013-08-06 10:43:49 · 1892 阅读 · 0 评论 -
LRESULT CALLBACK
LRESULT CALLBACK它们其实是宏,表示函数的返回类型,你可以在VC里面对它们点右键然后Go To Definition看到它的宏定义。 其实,这就表示了WinProg函数是一个回调函数。在MFC中,得到Message消息以后系统会进行回调,当然,我们需要编写一个回调函数来响应。为了区别于其它函数,在回调函数前加上LRESULT CALLBACK在微软vc提供的头转载 2013-08-05 20:35:15 · 2448 阅读 · 0 评论 -
图形设备接口(GDI)与设备描述表(DC)
图形设备接口(GDI)许多MS-DOS程序都直接往视频存储区或打印机端口输送数据, 这种做法的不利之处在于需要对每种显示卡或打印机类型提供相应的驱动程序。Windows则提供了一抽象的接口,称之为图形设备接口(GDI)。Windows己经提供了各种显示卡及打印机的驱动程序,这样我们的程序就可以不必关心与系统相连的显示卡及打印机的类型。我们的程序可以通过调用GDI函数和硬件打转载 2013-08-06 09:27:54 · 1082 阅读 · 0 评论 -
MFC点击Dialog窗体可拖动的实现
MFC创建一个可通过鼠标点击客户区拖动窗口位置的方法通过添加消息响应函数afx_msg UINT OnNcHitTest(CPoint point);添加宏ON_WM_NCHITTEST()然后, 定义OnNcHitTest的行为即可, OnNcHitTest的代码如下:转载 2013-08-06 11:20:43 · 1614 阅读 · 0 评论 -
客户区和非客户区指的什么?窗口客户区和视图客户区的区别!
客户区和非客户区指的什么?窗口客户区和视图客户区的区别! 1,什么是客户区/非客户区? 2, 窗口(框架/frame)的客户区和视图(view)的客户区的区别?这些都是初学者很容易迷惑的地方,我也是很迷惑,不过经过一番折腾终于弄明白这些问题了.对于这些问题,我想只用两个图片来说明最直观!如下:1,在一个MDI(多文档)应用程序中每个概念如下图所标示:转载 2013-08-06 17:24:24 · 1413 阅读 · 0 评论 -
VC++无标题窗口以及控件拖动的方法(修正)
无标题窗口拖动:方法一:直接在OnNcHitTest中虚拟发送HTCAPTION消息[cpp] view plaincopyprint?UINT CMainFrame::OnNcHitTest(CPoint point) { RECT rectWindows, rectClient; this->GetWindowRect(&rectWindows)转载 2013-08-06 15:40:41 · 979 阅读 · 0 评论 -
win 32 APP 项目简单创建窗体
/*Win 32 项目创建窗体的过程*创建窗体主要分为这么几个过程*1. 声明一个窗体类,并完成窗体基本元素(包括窗体背景颜色,光标等)的设置*2. 注册这个窗体类*3. 创建这个窗体*4. 创建消息响应函数*5. 显示窗体* 主要用的函数有两个, 第一个是 WinMain的入口函数* int WINAPI WinMain(* HINSTANCE hInstan原创 2013-08-07 16:59:58 · 1256 阅读 · 0 评论 -
改变 DrawText()字体
CPaintDC *pDC;CFont font;VERIFY(font.CreatePointFont(180,"Arial", pDC));//创建字体 Arial格式 180为字高CFont* def_font =pDC->SelectObject(&font); //选择该字体进入PDCm_size =pDC->GetTextExtent(tmp_lpBuf,转载 2013-08-20 17:44:15 · 3532 阅读 · 0 评论 -
mfc中字体设置详解
为了能选用不同的字体和大小来输出文本串,须使用作为GDI对象的 CFont类。Windows和常用的字处理软件(如Word)、绘图软件(如CorelDraw)等应用软件会提供多种与设备无关的字体,主要是 TrueType轮廓字体。 CFont类是CGDIObject的派生类:CObject→ CGDIObject→ CFont。只有一个缺省构造函数CFont( );在CFont类中转载 2013-08-20 18:28:07 · 3214 阅读 · 0 评论 -
static控件动态透明显示的完美解决方案
在有背景图片的对话框中,static控件的透明显示是一个非常普通的问题。常用的解决办法可以通过重载OnCtlColor函数设置背景透明,再返回一个空画刷来解决。 if(nCtlColor == CTLCOLOR_STATIC ) { pDC->SetBkMode(TRANSPARENT);//设置背景透明 pDC->SetTextColor(RGB(255,255,0)转载 2013-08-21 22:57:36 · 2932 阅读 · 0 评论 -
VC调试 TRACE宏、ASSERT宏、VERIFY 宏 介绍
一、TRACE宏 当选择了Debug目标,并且afxTraceEnabled变量被置为TRUE时,TRACE宏也就随之被激活了。但在程序的Release版本中,它们是被完全禁止的。下面是一个典型的TRACE语句: int nCount =9; Cstring strDesc("total"); TRACE("Count =%d,Descrip原创 2013-08-21 22:49:23 · 1281 阅读 · 0 评论 -
CPaintDC dc(this)中的this指针的含义解析
答1:this是指当前窗体对象,dc用带有this指针的构造函数进行构造,是指当前窗口的dc。答2:用了this指针初始化后,你操作的dc就是当前窗体,也即当前窗体就是你的画布!答3:每个类都有一个默认指针this指向自己。答4:就是获取当前窗口的dc而已,可以用这个DC在当前窗口绘图。当然你也可以获取其它窗口的dc,只要传入其它窗口的指针就可以了。同理CClientDC dc(t转载 2013-08-21 22:59:41 · 3510 阅读 · 0 评论 -
关于非模式对话框窗口及其对象的概念
关于非模式对话框窗口及其对象的概念,请参见《vc技术内幕》p127-p132中的几段话:请参见《vc技术内幕》p127-p132中的几段话:1、对话框的创建和取消完全取决于用户操作(通过DestroyWindow),而对话框对象则将直到应用程序被终止时才会被删除(在视图类的析构函数中删除之)。2、除了主框架窗口之外,对于几乎所有的窗口类型,DestroyWindow函数都不会将C++对转载 2013-08-21 23:25:05 · 941 阅读 · 0 评论 -
模式对话框和非模式对话框销毁的不同
OnDestroy是消息响应函数:消息:WM_DESTROY 对应的响应函数:OnDestroyOnOk和OnCancel是对话框CDialog基类的成员函数。调试发现:在模式对话框下,OnOk和OnCancel都会调用EndDialog函数,然后调用OnDestroy函数,但是在非模式对话框下,OnOk和OnCancel调用EndDialog函数后,不会继续调用OnDe转载 2013-08-21 23:26:45 · 827 阅读 · 0 评论 -
控件自适应对话框大小
总结1:由于目前开发的程序只是在实验室内部使用,其使用的显示器都是实验室自己订购的同一个型号(分辨率为1024*768),因此可以考虑开发程序时将开发环境的分辨率设置与使用环境一样(即1024*768),这样就不存在由于开发环境与使用环境的不一样而导致的对话框自适应分辨率问题了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~http://topic.csdn.n转载 2013-08-21 23:30:41 · 2447 阅读 · 0 评论 -
模式对话框和非模式对话框的区别
模式对话框和非模式对话框的区别:(出自第二版p370)1、显示模式对话框需要调用CDialog::DoModal,而显示无模式对话框则要调用CDialog::Create。DoModal要等到对话框被清除才返回。而和DoModal不同,一旦建立对话框,Create就返回。因此,Create返回时对话框还处于显示状态。2、清除无模式对话框要调用DestroyWindow,而不是EndDial转载 2013-08-21 22:53:27 · 1961 阅读 · 0 评论 -
CPaintDC 、CWindowDC、 CClientDC、 CDC的区别与联系
CPaintDC 、CWindowDC、 CClientDC、 CDC关系图:一句话概括:CPaintDC 无效区dc, 相当于BeginPaint, EndPaint CClientDC 客户区dc, 相当于GetDC, ReleaseDC CWindowDC 整窗口dc, 相当于Ge转载 2013-08-21 23:01:12 · 868 阅读 · 0 评论 -
MFC 类库结构 总结
MFC主要类库结构总结MFC类主要分为应用程序结构类、窗口支持类、图书设备类、模版集合类、简单数据类型类以及全局AFX函数等6个类。1. 应用程序结构类应用程序结构类代表的是应用程序的基本元素,主要包括了CcmdTarget类、CwinThread类、CwinApp类、Cdocument类以及CdocTemplate类等。应用程序开始运行时,应用程序结构类原创 2013-08-08 22:49:08 · 4051 阅读 · 0 评论 -
DestroyWindow函数解析
DestroyWindowMSDN上的解释:This function destroys the specified window. The function sends a WM_DESTROY message to the window to deactivate it and removes the keyboard focus from it. The function also转载 2013-08-21 22:22:17 · 1055 阅读 · 0 评论 -
OnEraseBkGnd() 使用
在OnEraseBkGnd中,如果你不调用原来缺省 的OnEraseBkGnd只是重画背景则不会有闪烁.而在OnPaint里面, 由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd 函数,这时就和窗口缺省的背景刷相关了.缺省的 OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况 下是白刷),而随后你又自己重画背景造成屏幕闪动.转载 2013-08-24 01:56:27 · 991 阅读 · 0 评论 -
OnPaint()与OnDraw()
OnInitUpdate是VIEW的初始化 OnUpdate是文档多视时,响应其它视图的改变 OnDraw和OnPaint都是绘图。OnPaint调用OnDraw,并且调用OnPrepareDC --------------------------------------------------------------- 一般来说用户的输入/输出基本都是通过视进行,但一些例外的转载 2013-08-24 01:58:20 · 869 阅读 · 0 评论 -
MFC消息映射机制和绘图DC的获取
基于消息的windows MFC程序设计是如何进行消息映射的呢? 在进行下一节之前,我们来复习一下。 对于一个MFC APPWizard运用程序,CMainFrame和View是窗口类,并且是父子关系,Doc一般用于数据的加载和存储,View用于图像的显示,App中是包括一些(窗口)初始化之类的东西。 好,我们开始这一节的内容。一、转载 2013-08-24 03:22:44 · 869 阅读 · 0 评论 -
避免闪烁的方法(OnEraseBkgnd)
在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PAINT的响应转载 2013-08-24 03:24:35 · 903 阅读 · 0 评论 -
OnPaint()函数的作用原理
WM_PAINT是窗口每次重绘都会产生的一个消息。OnPaint是对这个消息的反应函数mfc的 CWnd::OnPaint没做什么,只是丢给系统处理。一: 先执行OnEraseBkgnd,擦除背景(如果想自绘控件,这个函数直接return TRUE就可以了,这样就不会擦除背景,不会闪)OnEraseBkGnd与OnPaint的区别与联系在OnEraseB转载 2013-08-24 03:26:56 · 991 阅读 · 0 评论 -
vc中常用到的几个内存分配函数
1. 首先我们来看HeapAlloc:MSDN上的解释为:HeapALloc是从堆上分配一块内存,且分配的内存是不可移动的(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的空间利用起来,从而导致分配失败),该分配方法是从一指定地址开始分配,而不像GloabalAlloc是从全局堆上分配,这个有可能是全局,也有可能是局部。函数原型为:LPVOIDHeapAlloc(转载 2013-08-24 03:27:37 · 1240 阅读 · 0 评论