MFC
feimashenhua
这个作者很懒,什么都没留下…
展开
-
VC编写的程序不能在其他机器上运行的解决方案
有的时候,你在Visual C++上面经过好几个月的辛勤努力,终于将程序编写完成并且测试完毕,然而当你试图在客户的发布机上运行刚写好的程序时,有可能会碰到类似下面的错误,操作系统告诉你“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”:一般情况下,这个问题都是由于程序不能找到所需要的C运行库(CRT)而引起的。 在Win转载 2014-01-20 13:52:31 · 871 阅读 · 0 评论 -
View和Control的区别(如何在对话框上使用CView类)
View和Control的区别(如何在对话框上使用CView类) CView继承类,和其他窗口类的区别,很重要的就是对CDocument类和CFrameWnd类的操作,而其中,涉及CDocument类的操作,都进行了有效性判断(m_pDocument != NULL),CView类初始化的时候,m_pDocument = NULL,因此并不影响CView类作为控件的使用。涉及CFrame类的转载 2011-12-14 16:44:52 · 719 阅读 · 0 评论 -
让状态条响应鼠标事件
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(pMsg->message == WM_LBUTTONDOWN && pMsg->hwnd == m_wndStatusBar.GetSafeHwn转载 2011-12-20 18:09:10 · 489 阅读 · 0 评论 -
MFC中的CDC 绘图
绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行,例如:void CTestView::OnDraw(CDC* /*pDC*/) { CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return;转载 2011-12-08 12:01:49 · 1288 阅读 · 0 评论 -
经典的双缓冲CDC绘图类(解决闪烁问题)
//////////////////////////////////////////////////// CMemDC - memory DC//// Author: Keith Rule// Email: [email protected]// Copyright 1996-1997, Keith Rule//// You may freely use or mod转载 2011-12-08 11:04:33 · 2130 阅读 · 0 评论 -
GDI程序的调试
调试GDI一般来说比其他程序困难,但是掌握了一些技巧也就没什么障碍了。调试GDI的时候,将IDE和代调试的程序窗口在桌面上尽量分开排列,不要重叠在一起。这样你能通过单步执行,看到每一步的绘图效果。 为配合上述策略,在应用程序初始化的时候加上下面一句: #ifdef _DEBUG GdiSetBatchLimit(1); #endif 这能保证调试时每一条GDI函原创 2011-12-08 11:48:53 · 684 阅读 · 0 评论 -
WM_CTLCOLOR
在前面我们分析了控件通知消息WM_NOTIFY,和WM_NOTIFY紧密联系的还有一个MFC新特性:消息反射。本文中,我想就这个问题作一个全面的论述,如果有错误,还望各路大虾批评指正。 什么是消息反射? 在windows里面,子控件经常向父控件发送消息,例如很多子控件要绘制自己的背景,就可能向父窗口发送消息WM_CTLCOLOR。对于从子控件发来的消息,父控件有可转载 2011-12-04 19:26:06 · 3237 阅读 · 0 评论 -
用spy++ 查看消息
Windows程序都是基于消息机制的,每个程序中都会有各种各样的消息,如果想通过消息来控制程序的运行,我们只用关心程序中的命令消息(WM_COMMAND)就行了,其他关于程序界面等等的消息,可以不管。要查看程序运行的消息,使用Visual Studio中自带的工具spy++。打开spy++,选择 spy|Windows,然后就会显示出当前的所有窗口,一些主窗口中的字窗口也会显示转载 2011-11-01 19:24:47 · 1085 阅读 · 0 评论 -
MSChart使用导航
微软新发布的图表控件MSChart,依赖于Framework3.5 sp1的环境,从制作出的效果来看,非常漂亮。最近花时间研究了下,算是好用的,功能也很强大,建议大家可以试试。 2维柱状图2维范围图3维点图3维饼图转载 2011-09-28 10:41:26 · 583 阅读 · 0 评论 -
VC 为程序创建快捷方式
有时候,为了方便用户使用我们编写的程序,需要在桌面,快速启动或程序组中创建程序的快捷方式。下面就介绍在VC下如何为程序创建快捷方式。一.得到桌面,快速启动或程序组的路径这里介绍二个win32 API函数来完成这个任务。第一个函数 获得系统特殊路径HRESULT S转载 2011-08-15 09:52:20 · 758 阅读 · 0 评论 -
探察RUNTIME_CLASS之类的秘密
探察RUNTIME_CLASS之类的秘密 探察RUNTIME_CLASS之类的秘密 学mfc学到文档,视图和框架的时候,知道必须在这三个类的派生类的类声明 里加上DECLARE_DYNCREATE,然后在类声明外合适的地方加上IMPLEMENT_DYNCREA原创 2011-09-01 18:51:18 · 492 阅读 · 0 评论 -
滚动条处理
滚动条 windows应用程序使用两种滚动条: 垂直滚动条: 将显示区域/文件的内容向上或者向下移动 水平滚动条: 将显示区域/文件的内容向左或者向右移动 滚动条的工作方式: 使用者向下卷动是想看文件下面的内容,而程序实际需要将文件的内容向上移动 windows文件和表头标识符依据的是使用者观点定义的:转载 2011-06-12 20:05:00 · 1510 阅读 · 0 评论 -
MFC的消息处理函数
1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()转载 2011-12-25 19:37:32 · 377 阅读 · 0 评论 -
超类与子类(Superclass & Subclass)
Q: 我看了WINX开发包中的文档中,你提到了超类,它是什么概念?我平常只听过子类(Subclass)。A: 子类化(Subclass)是指替换窗口过程(WNDPROC)。 超类(Superclass)是替换窗口过程(WNDPROC),并且替换ClassName。 Subclass不太象继承,而像是一种外挂(Hook)行为。 Superclass则更像继承,因为生成了转载 2012-01-12 10:57:47 · 2423 阅读 · 0 评论 -
WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
设置坐标映射 (1)Windows坐标系统Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系。一般而言,GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的映射模式将逻辑坐标转换为设备坐标。设备坐标系是面向物理转载 2012-02-17 14:10:34 · 736 阅读 · 0 评论 -
Invalidate、OnPaint、OnEraseBkgnd函数
Invalidate void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的转载 2014-01-22 10:37:31 · 1755 阅读 · 0 评论 -
窗口风格
窗口风格(Window style)WS_BORDER 有边框窗口WS_CAPTION 必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用。指示窗口包含标题要部分。WS_CHILD 说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP)。WS_CHILDWINDOW 同WS_CHILD。WS_CLIPCHIL原创 2012-09-28 15:12:24 · 578 阅读 · 0 评论 -
CDC类详细说明
CDC类定义的是设备上下文对象的类。CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。通过CDC对象的成员函数进行所有的绘图。类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直线及绘制简单椭圆转载 2012-07-31 11:58:12 · 784 阅读 · 0 评论 -
RGB颜色表
RGB色彩模式(也翻译为“红绿蓝”,比较少用)是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。 RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。例如:纯红转载 2012-08-07 11:48:16 · 2580 阅读 · 0 评论 -
CString 操作指南
原著:Joseph M. Newcomer翻译:littleloach 原文出处:codeproject:CString Management 通过阅读本文你可以学习如何有效地使用 CString。 CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特转载 2012-07-19 18:28:44 · 997 阅读 · 0 评论 -
MFC窗口子类化
所谓子类化,也就是因为某种需求,对一个windows窗口(当然这里的窗口可以是控件、Dialog等)用自己的窗口函数,代替原有的窗口函数)再看看别人的解释:所谓窗口子类化,实际上就是改变窗口内存块中的有关参数。由于这种修改只涉及到一个窗口的内存块,因此它不会影响到属于同一窗口类的其它窗口的功能和表现(IDàHWNDàCWnd)。窗口子类化中最常见的是修改窗口内存块中的窗口函数地址(lpfn转载 2012-05-17 16:45:25 · 2250 阅读 · 0 评论 -
MFC-GDI绘制
最好的GDI入门教程是《Window程序设计》的第五章,如果你没有任何GDI基础,最好精读这一章,因为本文并不会介绍GDI的方方面面,事实上这也是不可能完成的任务。我只将以前学习GDI时遇到的几个难点拿出来讲讲。GDI对象的用法GDI对象就是画笔,画刷,字体这类资源,以我的经验,GDI对象的管理是一件麻烦的事,如果操作不当,很容易引起GDI泄漏。Delphi用TPen,TBrush,T转载 2012-06-01 12:00:18 · 1055 阅读 · 1 评论 -
MFC-对话框与数据交换
MFC-对话框与数据交换 对话框是非常重要的一种窗体,就我看过的应用,除了MDI程序,对话框比文档视图框架用得更多。原因大概有两个,首先对话框可以利用资源编辑器来编辑,这就有了一点快速开发的感觉,尽管比真正的快速开发弱得多;其次,对话框提供一种叫数据交换的方法,让控件与某种数据类型关联起来,比如Edit控件与CString变量关联,对CString变量的操作间接映射到Edit控件转载 2012-05-10 16:18:48 · 833 阅读 · 0 评论 -
MFC的文档/视图结构
========================================================《深入解析MFC》 MFC的文档/视图结构========================================================文档/视图相互依赖关系 · CWinApp包含一个 CDocManager 指针。 · CDocM转载 2012-04-23 17:38:52 · 847 阅读 · 0 评论 -
窗口的子类化与超类化
窗口的子类化与超类化1. 子类化 改变一个已经存在的窗口实例的性质:消息处理与其他实例属性。在SDK编程范畴内,子类化就是改变一个窗口实例的窗口函数(通过GetWindowLong()和SetWindowLong()),子类化所要做的就是为某窗口实例编写新的窗口函数。其操作是在实例级别上进行的。在MFC中子类化的情况有所不同:所有MFC窗口有相同的窗口函数,由该窗口函数根据窗口转载 2012-02-21 12:24:36 · 439 阅读 · 0 评论 -
CStatic控件-绘图
<br /><br />总结出如下两种方法:<br /> <br />一定要在对话框的OnPaint()函数中调用。<br /> <br />例如在一个ID为IDC_STATIC_TEST的CStatic控件中绘图<br />方法一:使用CStatic的成员函数SetBitmap();void DrawOnStatic()<br />{<br /> CStatic * pStatic = (CStatic *)GetDlgItem(IDC_STATIC_TEST);<br /> HBITMAP原创 2011-05-19 19:29:00 · 2735 阅读 · 1 评论 -
GDI编程重要经验谈
<br />一、 基础<br />GDI的绘图函数基本上都是有状态的,所有的函数都要求一个HDC类型的句柄。这个HDC的获得有几个途径BeginPaint,GetWindowDC, GetDC.他们的参数都只需要一个HWND就差不多了。记得调用了BeginPaint后要调用EndPaint进行清理,调用GetWindowDC和GetDC后要调ReleaseDC进行清理。在MFC代码中常常遇到的CDC CPaintDC CWindowDC CClientDC。在这里稍作解释。<br /> <br />CDC转载 2011-05-15 15:28:00 · 555 阅读 · 0 评论 -
MFC应用程序中处理消息的顺序
MFC应用程序中处理消息的顺序1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用, 然后调用WindowProc()函数3.WindowProc()原创 2010-03-15 21:10:00 · 609 阅读 · 0 评论 -
MFC中的CEdit与CRichEdit使用技巧
VC中在对话框上使用Rich Edit控件前一定要用AfxInitRichEdit()初始化RichEdit环境.1.设置edit只读属性 方法一: m_edit1.SetReadOnly(TRUE); 方法二: ::SendMessage(m_edit1.m_hWnd, EM_原创 2010-03-15 10:51:00 · 1024 阅读 · 0 评论 -
windows消息队列
消息分为进队消息消息和非进队消息。所谓进队消息就是windows将消息发送到每个线程所专有的队列中,然后由程序自主处理,这种消息基本上是由用户输入产生(wm_keydown,wm_keyup,wm_char,wm_mouse**,以及wm_paint,wm_timer,wm_quit)或者是调用postmessage,postthreadmessage产生的消息;所谓的非进队消息就是直原创 2010-03-16 16:34:00 · 4537 阅读 · 1 评论 -
关于模式与非模式对话框
对话框有两种创建方式:DoModal和Creat。 其中DoModal创建的是模态的对话框,而Creat创建的是非模态的对话框下面总结下他们的不同。对于模态的对话框,在该对话框被关闭前,用户将不能在同一应用程序的其他地方进行工作(例如open file对话框),而对于非模态的对话框,在它留在屏幕上的同时可以在其他的地方进行工作,(例如find file对话框)Create的Di原创 2010-03-15 15:01:00 · 568 阅读 · 0 评论 -
消息机制
什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。 消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠原创 2009-12-30 12:56:00 · 417 阅读 · 0 评论 -
Windows编程基础
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty原创 2009-12-29 10:42:00 · 648 阅读 · 0 评论 -
RichEdit 控件的属性
Align text 各行文本对齐方式:Left,Center,Right,默认时为LeftMultiline 选中时为多行编辑框,否则为单行编辑框Number 选中时控件只能输入数字Horizontal scroll 水平滚动,仅对多行编辑框有效Auto HScroll当原创 2010-03-12 15:03:00 · 2332 阅读 · 0 评论 -
CSpinButtonCtrl用法
CSpinButtonCtrl用法:1、要将微调控件与编辑控件组合成一对伙伴的关系,首先将微调控件与编辑控件的Tab Order值设置为连续值,且编辑控件在前面,微调控件在后。可以通过选择Layout菜单中选择Tab Order菜单项(或用快捷键Ctrl+D),然后用鼠标依次点,2、打开微调控件的属性,选择Styles标签,选择auto bu原创 2010-03-12 15:01:00 · 1520 阅读 · 0 评论 -
工具栏
一个好的软件,界面非常重要,其中的功能要让客户一目了然。而这些可以借助于工具栏,如在MicrosoftWord中的工具栏,相关的操作基本上都可以借助工具栏来完成。下面,我就将我知道的关于VC中关于工具栏的一些东西写写,与大家共享,不对的地方请大家帮忙纠正。 下面我以Visual Studio.net 2003下的单文档/视图的程序为例说明。 在VS中,实原创 2010-01-28 12:18:00 · 756 阅读 · 0 评论 -
MFC关于工具栏介绍
一个好的软件,界面非常重要,其中的功能要让客户一目了然。而这些可以借助于工具栏,如在MicrosoftWord中的工具栏,相关的操作基本上都可以借助工具栏来完成。下面,我就将我知道的关于VC中关于工具栏的一些东西写写,与大家共享,不对的地方请大家帮忙纠正。 下面我以Visual Studio.net 2003下的单文档/视图的程序为例说明。 在VS中,实现工具栏原创 2010-01-14 11:56:00 · 4250 阅读 · 1 评论 -
MFC客户区
估计很多人都会遇到这么一个问题,平时我们用单文档/视图结构时,很容易就在客户区画个图,画根线什么的,然而,要在对话框的某个控件中画这些东西,刚一上来,还真有点搞吧。 下面,我就把在对话框中对某个控件画图的程序先列出来,然后再看看微软的一些搞的地方。初始化:m_IsDrawing=false; CWnd*pCanvas=GetDlgItem(IDC_CANV原创 2010-01-14 11:49:00 · 919 阅读 · 0 评论 -
MessageBox的一点认识
一个关于MessageBox的问题,其实你们可以理解成是模式对话框的问题或者说是对话框消息处理机制的问题,问题描述如下: 1、MessageBox并不会创建新的线程(可以用任务治理器证实) 2、调用MessageBox会阻挡程序进一步执行,从代码上看是起到堵塞的作用(写过程序的人都知道) 3、MessageBox并不会影响消息循环(程序原创 2010-03-16 17:03:00 · 2851 阅读 · 0 评论 -
从Windows消息的角度看窗口应用程序的运行过程
一个典型的Win32窗口应用程序的框架是这样的: 程序入口点(WinMain函数)-->注册窗口类(调用RegisterClass函数或RegisterClassEx函数)-->创建主窗口(调用CreateWindow函数或CreateWindowEx函数)-->显示主窗口(调用ShowWindow函数)-->更新主窗口(调用UpdateWindow函数)-->进入消息循环转载 2010-05-30 10:15:00 · 439 阅读 · 0 评论