文档库 最新最全的文档下载
当前位置:文档库 › MFC显示多张图的方法

MFC显示多张图的方法

MFC显示多张图的方法
MFC显示多张图的方法

如何使用MFC显示多张图片

1、打开VS2008软件,创建一个MFC对话框应用程序(Dialog-based Application),在名称栏输入创建项目的名称,点击“确定”。如下图所示:

在出现的“MFC应用程序向导”对话框内,选择“基于对话框”,并取消“使用Unicode库(N)”其他选项不做修改,单击“下一步”,如下图所示:

一直点击“下一步”到“生成的类”对话框,选择基类为“CDialog”单击完成即可创建一个MFC对话框。如下图所示:

2、点击删除

3、添加控件并导入图片

生成如下图所示的初始的GUI界面,在工具箱中单击“Picture Control”,将鼠标移动到GUI界面内,这样就在此界面添加了一个Picture控件。并修改其

类型为,ID改为IDC_PICTURE。

4、接着,在“资源视图”下,右击选择“添加资源”,在“添加资源”对话框的“资源类型”下选择“Bitmap”,再单击“导入(M)”,打开BMP图片。如下图所示:

5、导入图片后,如图,同时修改第四张图的ID为

IDB_busyman(点击第四张图在其属性栏中修改)如图,6、点击图中青色图标

在其属性栏中的“Image”中后面填上IDB_busyman

7、点击运行,检验MFC显示一张图片是否正确,运行后如图

8、说明正确,点击确定。然后点击工具栏中的往上图中添加此按钮如图

9、修改其ID为IDC_COMBO_SELECTPIC,点击控制事件按钮,并在

添加OnCbnSelchangeComboSelectpic()

10、右击图中添加变量名为m_choice

11、右击类视图下的添加变量类型都为CBitmap,变量名分别为

m_Bmp1,m_Bmp2,m_Bmp3,m_Bmp4的四个变量。

12、右击上图中的照片右击添加变量,变量名为m_PicChoiced

13、在解决方案管理器中选择,在

下面添加:

CString strTemp;

((CComboBox*)GetDlgItem(IDC_COMBO_SELECTPIC))->ResetContent();

for(int i = 1; i<5; i++)

{

strTemp.Format("Picture %d",i);

((CComboBox*)GetDlgItem(IDC_COMBO_SELECTPIC))->AddString(strTemp);

}

m_choice.SetCurSel(0);

m_Bmp1.LoadBitmap(IDB_busyman);

m_Bmp2.LoadBitmap(IDB_BITMAP1);

m_Bmp3.LoadBitmap(IDB_BITMAP2);

m_Bmp4.LoadBitmap(IDB_BITMAP3);

14、在OnCbnSelchangeComboSelectpic()下添加:int CurSel = m_choice.GetCurSel();

switch (CurSel)

{

case 0:

m_PicChoiced.SetBitmap(m_Bmp1);

break;

case 1:

m_PicChoiced.SetBitmap(m_Bmp2);

break;

case 2:

m_PicChoiced.SetBitmap(m_Bmp3);

break;

case 3:

m_PicChoiced.SetBitmap(m_Bmp4);

break;

default:

break;

} // TODO: 在此添加控件通知处理程序代码

15、点击运行即可见到如下图:

mfc载入图片

我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) 非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2 然后在对话框上添加一个picture控件,右键点击打开属性, 将type下拉框选择BITMAP,紧跟着下面就出现一个

Image下拉框, 拉开就会看到所有已经载入好的图片, 选择你要的图片.运行程序即可看到. 方法2.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject(); . . . return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

MFC用户界面设计

MFC用户界面设计 (2007-07-03 14:08:02) 转载 MFC用户界面设计一 (创建一个MFC工程的框架) 打开VC++6.0选择New,出现如下界面: 然后选中MFC AppWizard[exe] ,即我们将创建一个MFC的可执行文件,然后在Project Name下面的框中写入这个工程的名字,注意: 工程的名字不要是中文的,且不要太过于长(到底多长是长我也不知道),最好使用英语的单词来定义你所要实现的工程项目的名字。 Location你可以自定义你的创建的这个工程的存放地方。个人建议不要存放在C盘。以防病毒感染之后C盘打不开,你的工作就全没有了。并且最好建一个专用的C++工程的存放文件夹。不推荐使用中文文件夹和存储路路径较长的文件

夹。如:D:\xx\xxx\xxx\xxx\xxx\xxx\xxxx\xxxxxxx\xxx(这样至少自己找的时候都要烦死了)。 Platform只有选择Win32了。在完成了这些之后就可以点击OK了。已开始创建的6小步中的第一步。如下图所示。 可以看见。上面的标题栏显示的是 MFC AppWizard Step 1,这一步是规划一个MFC程序框架的最重要的一部,我们可以选择 1:Single Document(单文档)即创建的程序能在某个时间内装入和编辑一个文档,使用了所有四个基类(C WinApp CFrameWnd CDocument Cview,至于四个基类都是什么作用参考第二章中所述)。典型的对话框应用程序包括配置硬件设备的应用程序、屏幕保护程序和游戏程序等。 2:Multiple Documents (多文档)一次可以装载和编辑多个文档,并且不但使用了所有四个基类,还使用了CFrameWnd的两个派生类,即CMDIFrameWnd和CMDIChildWnd。

mfc中插入背景图片

1、添加背景图片到“Bitmap”资源里。方法为“插入——资源”,如果还没有Bitmap,则新建一个Bitmap,否则选择资源 类型为“Bitmap”后“引入”想要插入的背景图片,我加入的背景图片如图1,加入过程如图2。 图1

图2 说明:引入的图片可以插入256色、16位色或更高色的图片,若是其他格式图片可用PS打开再另存为BMP、24位windows格式就可 以了。提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以了,没有影响的。 2、定位到void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码: else { //CDialog::OnPaint();//要禁止这个调用 CPaintDC dc(this); CRect rect;

GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP); //IDB_BITMAP是你自己的图对应的ID ,由于我刚刚加入的位图资源 //被我命名成了IDB_Bg,因而我这句就是bmpBackground.LoadBitmap(IDB_Bg); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); } 3、编译运行结果如图3。

mfc界面图书管理系统

目录 1.设计目的 (1) 2.问题描述 (2) 3.需求分析 (2) 3.1 数据需求 (2) 3.2 基本功能需求 (2) 3.3 非功能性需求 (3) 4.概要设计 (3) 5.详细设计 (5) 5.4.1增加书籍 (20) 5.4.2 删除书籍 (21) 5.4.3 查询书籍 (21) 6.调试分析 (22) 7.使用说明 (23) 8.设计总结 (26) 9.参考文献 (27)

《数据结构》课程设计 图书管理 1.设计目的 “数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。对于从事计算机科学及其应用的科技工作者来说,数据结构与算法是必须透彻地掌握的重要基础。 学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。课程设计是加强学生实践能力的一个强有力手段。课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编写中小型软件的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。 课程设计要求学生在完成程序设计的同时能够撰写比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

2.问题描述 采用Visual C++编程语言开发工具和MFC,设计并实现图书管理系统。该系统实现了图书管理中的添加,查询,删除,全部查询,退出等功能,以及汇总图书清单,包括对书籍各项信息的汇总。 3.需求分析 3.1 数据需求 图书信息:书名,所属类型,作者,定价,出版日期以及ISBN。 3.2 基本功能需求 1.汇总图书清单,包括对书籍各项信息的汇总;(各项信息包括书名,所属类型,作者,定价,出版日期以及ISBN。) 2.对书籍信息的增、删、查、全部查询等功能。其中删除功能主要依靠第一无二的ISBN,查询功能可以依靠任何一种图书信息(即书名,所属类型,作者,定价,出版日期以及ISBN任意一种)。

MFC背景图片修改

MFC添加背景图片方法 此文系转载,忘了博客地址了 VC++中如何给对话框加背景图片(2010-03-22 16:57:59) 方法一: 1、声明成员变量CBrush m_brush; 2、在InitDialog中添加代码: CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP1是图片资源ID m_brush.CreatePatternBrush(&bmp); 3、重载对话框的OnCtlColor,改最后的返回值: 1 return (HBRUSH)m_brush; 方法二: 把下面这段代码加进OnPaint()里就行了 CPaintDC dc(this); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小

dc.SelectObject(pOldBrush); 方法三:使用StretchBlt()函数,具有图像自适应窗体功能 CPaintDC dc(this); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小 dc.SelectObject(pOldBrush);

OpenGL 中真实感图形的显示实现

实验名称OpenGL 中真实感图形的显示实现 一、实验目的 学习基于OpenGL真实感图形显示的原理与实现方法。 二、实验内容 利用向导生成应用程序框架,参考示例编写实现三维图形的应用程序,增加光照与材质效果实现真实感图形的显示。 三、实验步骤 1.利用向导生成应用程序框架。 2.添加相应的函数,绘制立方体(参照上课给的实例)。 3.添加相应的函数,实现三维球体的绘制。 4.增加光源,并设置光源参数与材质参数,观察显示效果。 实验代码及程序运行结果截图如下: // 2008cube.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "gl/glut.h" #include "math.h" void myinit() { glClearColor( 1.0, 1.0, 1.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1.5, 1.5, -1.5, 1.5,-1.5,1.5); } void draw_cube() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0.0,0.0); glBegin(GL_POL YGON); glVertex3f(0.0,0.0,0.0); glVertex3f(0.0,1.0,0.0); glVertex3f(1.0,1.0,0.0); glVertex3f(1.0,0.0,0.0); glEnd(); glColor3f(0.0,1.0,0.0);

MFC经典绘图方法总结

MFC经典绘图方法总结 Windows 绘图的实质就是利用windows提供的图形设备接口GDI(Graphics Device Interface)将图形会制在显示器上。 为了支持GDI绘图,MFC提供了两种重要的类: 设备上下文DC(Device Context)类,用于设置绘图属性和绘制图形; 绘图对象类,封装了各种GDI绘图对象,包括画笔、刷子、字体、位图、调色板和区域。 CDC类介绍: 在MFC中,CDC是设备上下文类的基类,派生类包括:CClientDC, CPaintDC, CWindowDC, CMetaFileDC类 CClientDC 客户区设备上下文,绘制客户区时 CPaintDC 一般发生在窗口需要重绘时 CWindwDC 可以绘制整个窗口,通常在窗口WM_NCPAINT消息的响应函数CWnd::OnNCPaint()中使用 CMetaFileDC 专门用于图元文件的绘制,图元文件记录一组GDI命令,重建图形输出。 CDC包含m_hDC和m_hAttribDC二个设备上下文。CDC指导所有对m_hDC的输出GDI调用(SetTextColor)以及对m_hAttribDC的大部分属性GDI调用(GetTextColor)。 CDC对象的重要函数如下: 1、为指定设备创建上下文virtual BOOL CreateDC(...) 比如创建一个为屏幕的设备上下文 CDC dc; dc.CreateDC("DISPLAY", NULL, NULL,NULL); 2、创建内存设备上下文,与指定设备上下文兼容virtual BOOL CreateCompatibleDC( CDC * pDC) 3、删除CDC对象对应的Windows设备上下文, 通常不调用该函数而是使用析构程序virtual BOOL DeleteDC(); 4、将HDC句柄转化为设备上下文的句柄: CDC *pDC=CDC::FromHandle( hDC ) 5、选择GDI对象入选到设备上下文中,一共有五种形式: CPen * SelectObject( CPen * pPen) ; CBrush * SelectObject( CBrush * pBrush) ; virtual CFont * SelectObject( CFont * pFont) ; CBitmap * SelectObject( CBitmap * pBitmap) ; int SelectObject( CRgn * pRgn) ;

MFC 在对话框显示图片的多种方法

MFC 在对话框显示图片的多种方法 我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) 非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2 然后在对话框上添加一个picture控件,右键点击打开属性, 将type下拉框选择BITMAP,紧跟着下面就出现一个

Image下拉框, 拉开就会看到所有已经载入好的图片, 选择你要的图片.运行程序即可看到. 方法2.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject(); . . . return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

MFC程序结构分析

MFC程序结构分析2008-11-08 16:39 分类:VC\MFC 字号:大中小 1 Windows程序工作原理 WINDOWS 程序设计是一种完全不同于传统的DOS 方式的程序设计方法,它是一种事件驱动方式的程序设计模式。在程序提供给用户的界面中有许多可操作的可视对象。用户从所有可能的操作中任意选择,被选择的操作会产生某些特定的事件,这些事件发生后的结果是向程序中的某些对象发出消息,然后这些对象调用相应的消息处理函数来完成特定的操作。WINDOWS 应用程序最大的特点就是程序没有固定的流程,而只是针对某个事件的处理有特定的子流程,WINDOWS 应用程序就是由许多这样的子流程构成的。 从上面的讨论中可以看出,WINDOWS 应用程序在本质上是面向对象的。程序提供给用户界面的可视对象在程序的内部一般也是一个对象,用户对可视对象的操作通过事件驱动模式触发相应对象的可用方法。程序的运行过程就是用户的外部操作不断产生事件,这些事件又被相应的对象处理的过程。下面是WINDOWS 程序工作原理的示意图。 2 建立应用程序 在介绍AppWizard 的时候,我们已经建立了一个名字为TEST 的工程,事实上这个框

架程序已经可以编译运行了。在BUILD 菜单中选择REBUILD ALL 菜单项,系统开始编译由 APPWIZARD 自动生成的程序框架中所有文件中的源代码,并且链接生成可执行的应用程 序。在BUILD 菜单中选择EXECUTE 菜单项,应用程序就开始开始运行了,虽然我们没有编 写一行代码,但是可以看出由系统自动生成的应用程序的界面已经有了一个标准WINDOWS 应用程序所需的几个组成部分,我们要做的事情是往这个应用程序添加必要的代码以完成 我们所需要的功能。 接下来将要对WINDOWS 自动生成的这个应用程序框架作详细的介绍,让你对MFC 方式的 WINDOWS 应用程序的工作原理有全面的认识,只有这样你才会知道应该如何往程序框架当 中添加需要的代码。 3 程序结构剖析 为了让您对MFC 方式的程序的框架有一个总体的认识,这里设计了一个表示程序中的 主要类之间的关系的图表:

MFC设置窗体背景图片(画刷)

MFC设置窗体背景图片(画刷) 先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中: CBrush m_brBk;//在public中定义 TestDlg.cpp中: 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp); bmp.DeleteObject(); return TRUE; // return TRUE unless you set the focus to a control } 再打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(), 添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; } 按照上面的方法一路COPY下来运行,OK!并且由于图片是做为背景显示的,所以再添的按钮都能很好的显示出来,非常方便。 总结一下其中出现的变量和函数。 CBrush:类CBrush封装了Windows图形设备接口(GDI)中的画刷,画刷也就是采取什么方案填充图形的背景的工具。 OnInitDialog ( ):用于对对话框类的变量的初始化(注意:是在产生对话框之前就初始化),是WM_INITDIALOG消息产生的消息处理函数,覆盖该函数可改变对话框初始设置。 用法: virtual BOOL OnInitDialog();返回值指定对话框是否对它的一个控件设置输入焦点。如果OnInitDialog返回非零值,Windows 将输入焦点设在对话框的第一个控件上,只有在对话框明确将输入焦点设在某控件上,应用返回0。 CBitmap:类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供操纵位图的成员函数。 LoadBitmap ( ):CBitmap类的一个成员函数,从应用的可执行文件中加载一个命名的位图资源来初始化位图对象。 用法:

MFC程序结构分析

主题: MFC深入浅出 1.MFC深入浅出 MFC概述 2. 3. 1.MFC是一个编程框架 2. 3.MFC (Microsoft Foundation Class Library) 中的各种类结 合起来构成了一个应用程序框架,它的目的就是让程序员在此基础 上来建立Windows下的应用程序,这是一种相对SDK来说更为简单 的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了 用户接口的标准实现方法,程序员所要做的就是通过预定义的接口 把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C++ 提供了相应的工具来完成这个工作:AppWizard可以用来生成初步 的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用 户接口;ClassWizard用来协助添加代码到框架文件;最后,编译, 则通过类库实现了应用程序特定的逻辑。 4. 5. 6. 7. 1.封装 2. 3.构成MFC框架的是MFC类库。MFC类库是C++类库。这 些类或者封装了Win32应用程序编程接口,或者封装了应用 程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO 数据访问的功能,等等,分述如下。 4. 5.(1)对Win32应用程序编程接口的封装 6. 7.用一个C++ Object来包装一个Windows Object。例 如:class CWnd是一个C++ window object,它把Windows window(HWND)和Windows window有关的API函数封装在C++ window object的成员函数内,后者的成员变量m_hWnd就 是前者的窗口句柄。 8. 9.(2)对应用程序概念的封装

MFC启动画面设计

MFC启动画面设计 玩过微软的Office的人都知道,每当打开Office软件,在它初始化的那段时间里,都会出现一个画面,这个画面就是启动画面。 所谓启动画面也就是Splash Screen,你也可以说它是“炫耀画面”。它常常用以显示公司的标志和版权等信息。 目标 用一张位图来作为启动画面,在进入程序时显示。 策略 在应用程序类的I n i t I n s t a n c e ()函数中,在最早时刻创建启动窗口。启动窗口用一个位图类显示在普通窗口中。 步骤 1.创建一个启动窗口类 1)用ClassWizard创建一个从一般CWnd类(当然也可以是CFrameWnd类)派 生的普通窗口类。如图所示:

2)添加Create()成员函数到该类,在该函数中装入启动窗口中显示的位图,以及 在屏幕中央创建该窗口。 void CWzdSplash::Create(UINT nBitmapID) { m_bitmap.LoadBitmap(nBitmapID); BITMAP bitmap; m_bitmap.GetBitmap(&bitmap); int x=(::GetSystemMetrics(SM_CXSCREEN)-bitmap.bmWidth)/2; int y=(::GetSystemMetrics(SM_CYSCREEN)-bitmap.bmHeight)/2; CRect rect(x,y,x+bitmap.bmWidth,y+bitmap.bmHeight); CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDE R,rect,NULL,0); } 3)用ClassWizard添加一个WM_PAINT消息处理函数到该窗口类中,在这里用 BitBlt()把位图绘制到屏幕上。

MFC添加背景图片

问题 有的程序员希望在自己的应用程序中以有趣味的位图来代替对话框中令人讨厌的灰色背景,希望位图在对话框中看起来象墙纸而且并不影响对话框中的控制或静态文本的显示。 许多程序员找不到一个改变窗口背景的简单方法,是否有方法利用Windows API 函数来改变对话框的背景为某个位图呢? 方法 改变对话框的背景为某个位图并不困难,关键是需要清楚对话框和窗口是如何设置背景颜色的,以及程序员应该如何修改对话框和窗口改变显示的行为。 当Windows 准备改变对话框背景的颜色时,通常发送两个消息给对话框。第一个消息是WM_ERASEBKGND,此消息指示对话框绘制对话框的背景颜色,以“抹去”屏幕上对话框显示区域的任何显示。 第二个消息是WM_CTLCOLOR,发送此消息给对话框或窗口来表示Windows 需要知道对话框中控制的颜色。 在本节中,将重置对消息WM_ERASEBKGND 的处理,以便将位图绘制在窗口的背景上。另外,将重置对消息WM_CTLCOLOR 的处理,以避免对话框中的控制“剪补”位图。最后的结果是对话框的背景位图绘制在对话框背景上,控制在背景位图的“上面”。 步骤 按照下列步骤实现一个例子程序。运行此例子程序,选择菜单Dialog 和菜单项Bitmap Background,将弹出一个对话框,显示背景位图和几个控制。 实现例子程序的具体步骤如下: 1.在Visual C++中,利用AppWizard 创建新的项目文件,并命名此项目文件为 Ld145。 2.进入资源编辑器并创建新的对话框模板。在对话框中,添加几个静态文本域和编辑域,以及几个单选按钮和列表框。对话框的实际组成并不重要,只要能够覆盖部分位图就可以了。 3.选择ClassWizard,为刚创建的对话框模板创建对话框类,新类命名为 CBitma PB kgdDlg。 4.在资源编辑器中创建新的位图。 5.进入ClassWizard,从下拉列表中选择CBitmapBkgdDlg,从对象列表中选择对象CBitmapBkgdDlg,从消息列表中选择消息WM_INITDIALOG,点击按钮Add Function,在CBitmapBkgdDlg 的方法OnInitDialog 中添加下列代码: BOOL CBitmapBkgdDlg::OnInitDialog() { CBitmap * pBmpOld; RECT rectClient; VERIFY(m_brush=(HBRUSH)GetStockObject(HOLLOW_BRUSH)); VERIFY(m_Bitmap.LoadBitmap(IDB_BITMAP1)); m_Bitmap.GetObject(sizeof(BITMAP),&m_bmInfo);

MFC中picture控件显示图片

PictureBox控件的主要作用是为用户显示图片。实际显示图片由Picture属性决定。Picture属性包括被显示的图片的文件名(及可选的路径名)。注意窗体对象也具有Picture属性,通过设置该属性可直接在窗体背景上显示图片。 要在运行时显示或替换图片,可利用函数LoadPicture来设置Picture属性。提供图片文件名和可选路径名,由LoadPicture函数处理加载和显示图片的细节。 picMain.Picture = LoadPicture("VANGOGH.BMP") PictureBox控件具有AutoSize属性,当该属性设置为True时,PictureBox能自动调整大小与显示的图片匹配。如果要用AutoSize属性设置为True的PictureBox,设计窗体时就需要特别小心。图片将不考虑窗体上的其它控件而调整大小,这可能导致意想不到的后果,如覆盖其它控件。设计时应通过加载每一幅图片来检查是否有这种现象发生。 vc picture控件的分类进行拉总结, (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) vc picture控件非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2,然后在对话框上添加一个picture控件,右键点击打开属性,将type下拉框选择BITMAP,紧跟着Image下面就出现一个下拉框,拉开就会看到所有已经载入好的图片,选择你要的图片.运行程序即可看到. 方法2vc picture控件.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp); bmp.DeleteObject(); return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

MFC对话框背景---图片背景---背景色

对话框的背景 1、添加位图背景 首先在资源视图中添加bmp图片:选择项目名右击---添加—添加资源---Bitmap---导入---选择res文件中的位图(如果res文件中无位图请提前添加),此时可以知道位图ID为IDB_BITMAP1 (1)picture控件添加背景 在对话框中添加picture控件,并修改其属性,选中picture控件在属性表中修改Type为Bitmap,Image为IDB_BITMAP1。此时图片就显示在对话框中 (2)在CPP文件中初始化显示位图 添加位图后,在源文件XXXDlg.cpp的void C XXX Dlg::OnPaint()函数中添加初始化代码如下: void CbeijingDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpPri=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SR CCOPY); } }

MFC原理结构说明

JEI
N.
MFC 原理結構說明
捷胤工業有限公司 總合研究所 (JISC)
CO .
LT D
捷胤工業有限公司 NEW JEIN Corp. Corp.

JEI
? 質流控制器(Mass?Flow?Controller)簡稱 MFC。簡 易的詮釋 MFC 是一種流量與控制閥組的精密組機 電組合,其測量方式與一般流量計最大的差別, 是在於它是利用熱感溫差 非接觸方式測量氣體 是在於它是利用熱感溫差、非接觸方式測量氣體 之質量流速。
N.
MFC 簡介
? MFC 應用於I C 工業、真空工業、食品工業、化 學工業以及醫療儀器等行業,需要求高精確度、 高穩定度及高品質等氣體流量控制,如:蝕刻、 物理 化學氣相沉積 高穩定度來達成 其應用 物理、化學氣相沉積、高穩定度來達成,其應用 之層面乃遍佈高科技產業。
CO .
LT D
捷胤工業有限公司 NEW JEIN Corp. Corp.

JEI
Intel
Connector
N.
MFC 主要結構
Mass flow sensor
CO .
Bypass
Zero switch
LT D
Control valve Outlet Block
PCB
捷胤工業有限公司 NEW JEIN Corp. Corp.

JEI
? 製程氣體中許多是有腐蝕性或容易液
化的氣體,其與氣體接觸的部份均是 化的氣體 其與氣體接觸的部份均是 以抗腐蝕性強的 SUS‐316L 做為材質, 整顆鑄造而成。
N.
MFC 本體 (Block)
CO .
LT D
捷胤工業有限公司 NEW JEIN Corp. Corp.

MFC中设置对话框颜色、添加背景图片、添加音乐的方法

一、设置背景颜色的三种方法: 1、我们知道程序在运行的时候会调用OnPain函数,那么我们可以在这里设置背景颜色。void CFlipCardsDlg::OnPaint() { if (IsIconic()) { //保持不变 } else { CRect rc; GetClientRect( &rc );// 获取客户区 CPaintDC dc(this); dc.FillSolidRect(&rc, RGB(0,160,0)); // 填充客户区颜色 CDialog::OnPaint(); } } 2、第二种方法只要一条语句,但是这里要注意这里绘制的颜色是针对程序中所有的对话框(如果是单文档的话,好像不行) SetDialogBkColor(RGB(0,0,255),RGB(255,0,0)); // 前一个RGB是背景色,后一RGB是文本颜色 该函数放在工程的APP文件的初始化函数中。 3、第三种方法,利用ClassWizard重载OnCtlColor(),即WM_CTLCOLOR消息 在要着色的对话框中申明一个变量,CBRUSH m_hbrush;然后在项目的Dlg类初始化函数中给m_hbrush赋值。

m_brush.CreateSolidBrush(RGB(0, 255, 0)); 然后在OnCtlColor(...)返回该画刷就可以了,如下。 HBRUSH CFlipCardsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here switch (nCtlColor) { case CTLCOLOR_DLG: HBRUSH aBrush; aBrush = CreateSolidBrush(RGB(0, 150, 0)); hbr = aBrush; break; } // TODO: Return a different brush if the default is not desired return hbr; } 这样为对话框着色就可以实现了。 二、给MFC添加背景图图片代码: 定位到 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码: //CDialog::OnPaint();//要禁止这个调用 CPaintDC dc(this); CRect rect; GetClientRect(&rect);

MFC中更改背景图片

1.如果你建的是对话框应用程序,可以有以下方法改变对话框的背景色重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下: ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量: class CExampleDlgDlg : public CDialog { ... protected: CBrush m_brush; ... }; ---- ②在OnInitDialog()函数中添加如下代码: BOOL CExampleDlgDlg::OnInitDialog() { ... // TODO: Add extra initialization here m_brush.CreateSolidBrush(RGB(0, 255, 0)); // 生成一绿色刷子 ... } ---- 步骤③利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息):HBRUSH CExampleDlgDlg::OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); //在这加一条是否为对话框的判断语句 if(nCtlColor ==CTLCOLOR_DLG) return m_brush; //返加绿色刷子 return hbr; } 2.如果建立的是单文档程序 CDC* pDC = GetDC(); CRect rect; GetClientRect(&rect); //加载背景位图 CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //图片ID BITMAP bmp; bitmap.GetBitmap(&bmp);

MFC 对话框 背景图片 以及消除 字体重影 字体重叠

很多人都想改变对话框的背景图,其实很简单,只需要一个函数就可以了,不过还是有问题的,下面讲述。 只需要响应WM_ERASEBKGND消息,然后重载OnEraseBkgnd(CDC*pDC)这个函数就可以,首先我们要添加消息响应,由于该消息不能用MFC ClassWizard添加,因为ClassWizard 没有该消息添加的选项,我们需要手动添加,只需要在消息响应MAP添加一下ON_WM_ERASEBKGND(),如下所示: BEGIN_MESSAGE_MAP(CSerialTestDlg, CDialog) //{{AFX_MSG_MAP(CSerialTestDlg) ON_WM_ERASEBKGND()//添加重绘背景消息响应 //}}AFX_MSG_MAP END_MESSAGE_MAP() 我们然后进行消息响应,添加消息响应函数,然后在对话框类的声明文件添加该函数的声明virtual BOOL OnEraseBkgnd(CDC*pDC);在实现文件中进行该函数的书写,如: BOOL CSerialTestDlg::OnEraseBkgnd(CDC*pDC) { CBitmap m_bitmap; m_bitmap.LoadBitmap(IDB_DLGBK);//加载背景图片,选择你对应的图片ID CDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC); dcCompatible.SelectObject(&m_bitmap); CRect rect; GetWindowRect(&rect); ScreenToClient(&rect);//选择客户区域 BITMAP bmp; m_bitmap.GetBitmap(&bmp); pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmW idth,bmp.bmHeight,SRCCOPY);//绘制BMP背景图 m_bitmap.DeleteObject(); return TRUE; } 但是这样做一般就可以,细心的人会发现字体有重叠,比如说静态文本框和EDIT控件,如果选择只读模式,作为输出,这时EDIT的背景是BMP背景图片,但是字体重叠,如下图,我这样就行消除。

C++ MFC界面读写USB HID设备数据程序

第一步:列举所有的HID设备: m_ctllHIDdevices.ResetContent(); //这是MFC里面一个list控件,用来显示所有的HID设备的,如果你没有界面,可以不需要此行 UpdateData(FALSE); //更新界面 CString temp; int Count = 0; //Total number of devices found DWORD strSize=0,requiredSize=0; BOOL result1,result2; ULONG DeviceInterfaceDetailDataSize; //定义一些变量,以后会用到 SP_DEVINFO_DA TA DeviceInfoData; SP_DEVICE_INTERFACE_DATA DeviceInterfaceData; PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData; //PSP_DEVICE_INTERFACE_DETAIL_DATA test; //第一步:获取deviceID GUID deviceId; HidD_GetHidGuid(&deviceId); //第二步:获取设备信息 HDEVINFO handle; handle = SetupDiGetClassDevs(&deviceId, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT); //Get only HID devices //第三步:对所有的设备进行枚举 //SetupDiEnumDeviceInterfaces(); result1=false; //定义一些变量 result2=false; CString temp11=""; do { DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DA TA); result1 = SetupDiEnumDeviceInterfaces( handle, NULL, // IN PSP_DEVINFO_DA TA DeviceInfoData, OPTIONAL &deviceId, Count, &DeviceInterfaceData ); //获得设备详细数据(初步) SetupDiGetDeviceInterfaceDetail(handle,

相关文档