7.MFC界面与美化

合集下载

基于MFC的桌面应用程序开发与优化

基于MFC的桌面应用程序开发与优化

基于MFC的桌面应用程序开发与优化一、引言随着计算机技术的不断发展,桌面应用程序在日常生活和工作中扮演着越来越重要的角色。

MFC(Microsoft Foundation Class)作为Windows平台下的经典桌面应用程序开发框架,具有丰富的功能和强大的扩展性,被广泛应用于各种领域。

本文将重点探讨基于MFC的桌面应用程序开发与优化,旨在帮助开发人员更好地利用MFC框架构建高效、稳定的桌面应用程序。

二、MFC框架概述MFC是微软公司提供的一套C++类库,旨在简化Windows应用程序的开发过程。

通过MFC,开发人员可以快速构建具有丰富用户界面和功能的桌面应用程序。

MFC提供了诸多类和函数,涵盖了窗口管理、消息处理、控件设计等方方面面,为开发人员提供了强大的工具箱。

三、MFC应用程序的创建在开始开发基于MFC的桌面应用程序之前,首先需要创建一个MFC应用程序项目。

在Visual Studio中,选择“新建项目”->“Visual C++”->“MFC应用程序”,按照向导指引完成项目创建过程。

在创建项目时,可以选择不同类型的应用程序模板,如单文档应用程序、多文档应用程序等,根据实际需求选择合适的模板。

四、MFC应用程序开发实践1. 界面设计MFC提供了丰富的控件库,开发人员可以通过拖拽控件到对话框上的方式快速设计用户界面。

在设计界面时,需要考虑用户体验和美观性,合理布局各个控件,并确保界面风格统一。

2. 事件处理事件处理是MFC应用程序开发中至关重要的一环。

通过响应用户操作或系统消息,触发相应事件并执行相应操作。

在MFC中,可以通过消息映射表和消息处理函数来实现事件处理,确保应用程序能够正确响应用户操作。

3. 数据处理对于需要处理数据的桌面应用程序,数据处理是不可或缺的部分。

MFC提供了数据库支持和文件操作等功能,可以方便地进行数据读写操作。

开发人员需要合理设计数据结构和数据流程,确保数据的准确性和完整性。

MFC自绘控件与界面美化

MFC自绘控件与界面美化

MFC自绘控件与界面美化界面美化摘要本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。

读者最好具有以下VC基础:1. 大致了解MFC框架的基本运作原理;2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;3. 熟悉OOP理论和技术;本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。

正文1. 美化界面之开题篇相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:图1 瑞星杀毒软件的精美界面程序的功能如何如何强大是一回事,它的用户界面则是另一回事。

千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。

“受之以鱼,不若授之以渔”,本教程并不会向你推荐《瑞星杀毒软件》精美界面的具体实现,而只是向你推荐一些常用的美化方法。

2. 美化界面之基础篇美化界面需要先熟悉Windows下的绘图操作,并明白Windows 的幕后绘图操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免……2.1 Windows下的绘图操作熟悉DOS的读者可能就知道:DOS下面的图形操作很方便,进入图形模式,整个屏幕就是你的了,你希望在哪画个点,那个地方就会出现一个点,红的、或者黄的,随你的便。

你也可以花点时间画个按钮,画个你自己的菜单,等等……Windows本身就是图形界面,所以Windows下面的绘图操作功能更丰富、简单。

要了解Windows下的绘图操作,要实现Windows 界面的美化,就必须了解MFC封装的设备环境类和图形对象类。

2.1.1 设备环境类Windows下的绘图操作说到底就是DC操作。

DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。

这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。

mfc课程设计报告模板

mfc课程设计报告模板

mfc课程设计报告模板一、教学目标本课程的教学目标是使学生掌握MFC(Microsoft Foundation Class)的基本概念和编程技巧,培养学生使用MFC进行Windows应用程序开发的能力。

具体目标如下:1.知识目标:(1)理解MFC的基本概念,如窗口、消息、事件等。

(2)掌握MFC的编程步骤,如创建项目、添加类、编写代码等。

(3)熟悉MFC常用的类和函数,如CCmdTarget、CWnd、AfxMessageBox等。

2.技能目标:(1)能够使用MFC编写简单的Windows应用程序。

(2)能够使用MFC进行窗口布局和界面设计。

(3)能够使用MFC处理消息和事件,实现用户交互。

3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情。

(2)培养学生解决问题的能力和创新精神。

(3)培养学生团队协作和良好沟通的意识和能力。

二、教学内容本课程的教学内容主要包括MFC的基本概念、编程步骤和常用类及函数。

具体安排如下:1.MFC的基本概念:介绍MFC的起源、发展及其在Windows应用程序开发中的应用。

2.MFC的编程步骤:讲解如何创建MFC项目、添加类、编写代码等。

3.MFC的常用类及函数:介绍MFC的核心类,如CCmdTarget、CWnd等,以及常用的函数,如AfxMessageBox等。

4.窗口布局和界面设计:讲解如何使用MFC进行窗口布局、界面设计以及界面美化。

5.消息和事件处理:讲解MFC如何处理消息和事件,实现用户交互。

6.实战项目:通过实际项目案例,让学生掌握MFC的应用,提高实际编程能力。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师讲解MFC的基本概念、编程步骤和常用类及函数。

2.讨论法:教师引导学生进行问题讨论,巩固所学知识。

3.案例分析法:分析实际项目案例,让学生学会运用MFC解决实际问题。

mfc界面设计教程

mfc界面设计教程

mfc界面设计教程MFC(Microsoft Foundation Classes)是一套用于开发Windows平台上图形用户界面(GUI)的C++类库。

MFC界面设计是开发Windows应用程序中不可或缺的一部分。

本文将向您介绍一些MFC界面设计的基本原则和技巧,帮助您创建出具有吸引力和用户友好的应用程序界面。

首先,设计一个清晰的用户界面是至关重要的。

您需要确保您的应用程序界面布局简洁明了,易于导航。

使用适当的菜单和工具栏来组织您的功能,使用户能够方便地找到和使用这些功能。

避免界面过于拥挤或混乱,这会给用户带来困惑和不满。

其次,选择合适的颜色和字体可以提升您应用程序界面的外观。

一般来说,最好选择与您应用程序主题相关的颜色,并确保文字清晰可读。

避免使用太多花哨的字体或颜色,这可能会让用户感到眼花缭乱。

另外,为您的界面添加一些可视化元素也是一个不错的选择。

例如,您可以使用图标来表示不同的功能或操作,这有助于用户更快地识别和理解这些内容。

您还可以考虑使用一些动画效果或过渡效果来吸引用户的注意力,但要确保这些效果不会分散用户的注意力或降低应用程序的性能。

此外,考虑到用户的反馈是很重要的。

您可以通过使用弹出窗口、对话框或状态栏来向用户显示相关的提示信息,告知他们当前的操作状态或发生的错误。

提供适当的错误处理机制也非常重要,以便用户能够轻松地解决问题或进行必要的更正。

最后,测试是一个不可忽视的环节。

在设计和开发过程中,您应该经常测试您的界面,以确保它在不同屏幕分辨率和操作系统上都能够正常显示和工作。

同时,您还应该进行用户体验测试,以了解用户对您设计的界面的感受和反馈,并根据需要进行相应的修改和改进。

总结起来,MFC界面设计需要注意清晰布局、合适的颜色和字体、可视化元素、合理的反馈机制以及充分的测试。

通过遵循这些原则和技巧,您可以创建出用户友好和吸引人的应用程序界面。

希望本文对您的MFC界面设计有所帮助!。

MFC窗口的颜色和字体的设置

MFC窗口的颜色和字体的设置

3、如果要改变OK按钮的文字颜色,靠上面的方式是不行的。我们需要创建一个新的从CButton类继承的CTestBtn类,并用类向导添加一个类的DrawItem的虚函数,加入以下代码(可以从CButton的例子中复制):
// TODO: Add your code to draw the specified item
if (pWnd->GetDlgCtrlID()==IDC_TEXT) /*如果为ID号所指的静态文本框*/
{
pDC->SelectObject(&m_font); /*则将绘图设备加入所需的字体。*/
}
注意,因为OnPaint消息响应函数是在控件被绘制之前触发的,它所返回的HBRUSH画刷句柄,便携带了我们所设置的这些属性。
注意如果要设置单行EDIT的文字背景色,需要使用SetBkColor设置,而SetBkMode即使为透明,文字的背景仍为系统的默认色。
3、利用上面的原理,在对话框控件响应OnPaint消息时,将一个静态文本显示所设置字体的文字。添加一个静态文本框,改名为IDC_TEXT。添加一个字体成员变量 private: CFont font;在对话框的构造函数中对字体进行初始化: m_font.CreatePointFont(200,"华文行楷");在2的return hbr;之前加入如下代码:
MFC窗口的颜色和字体的设置
1、改变对话框的底色
在对话框的类中添加一个 private : CBrush m_brush;的成员变量。在类的构造函数中添加如下代码:
m_brush.CreateSolidBrush(RGB(0,0,255)); //初始化为蓝色

让你的软件界面更漂亮[VC][二]

让你的软件界面更漂亮[VC][二]

让你的软件界面更漂亮[VC][二]一、统一风格漂亮界面设计的理论与实现a.窗口和对话框Windows操作系中窗口和对话框在我们看来是一样的,就是一个四边形,有标题栏、系统按钮,边框等,可移动和可变大小。

实际上窗口和对话框是有的区别的。

在创建对话框窗口时的工作中要发生两个主要过程:对话框的过程和其窗口过程。

Win32 SDK对话框使用了系统提供的对话框窗口的窗口过程和对话框过程,对话框过程将被窗口过程调用。

在MFC下,所有的窗口类都使用了同一个窗口过程,对话框类也一样。

MFC对话框过程只处理WM_INITDIALOG消息,其余都让窗口过程处理,我们只能在函数OnInitDialog()中有唯一机会处理我们的对话框的初始化工作。

因而我们设计界面时要在窗口过程处理中相关消息实现我们的界面。

b. 几个有关对话框窗口消息的处理1.WM_NCPAINT:重画非客户区消息重载此消函数,可以标题栏上为所欲为。

2. WM_NCLBUTTONDOWN:在非客户区上按下鼠标左键消息要想在标题栏相应鼠标左键,可重载此消函数3.WM_NCMOUSEMOVE:在非客户区上移动鼠标会产生此消息4.WM_SIZE:在窗口改变大小后产生此消息。

为了使软件更专业,调整对放框大小时,里面的各控件也应合理调整位置和大小,重载此消函数可实现目的。

还有很几个,其它的不介绍了。

c. 统一的界面风格实现如何运用上述知识请参考我的前一文让你的软件界面更漂亮[VC][一]中有介绍并有源程序。

漂亮界面的统一风格是如何实现的将是本文要讨论主要内容。

我们知道Windows操作系统窗口风格基本上是一致的,微软的应用软件程序也和操作系统风格基本是统一的。

所以使我们的CDialog 也跟其一样,要改变它的界面风格很困难。

除非你对MFC了如指掌,甚至要了解操作系统内核。

本人在摸索过程中经过无数次碰壁后,终于找到了希望。

看了上面两图你是不是对VC有信心了?Visual C++ 可实现你想要的统一风格界面。

MFC界面美化

MFC界面美化

SDI和MDI程序中对非客户区(标题栏、左右下边界)的美化基本思路是重载CMainFrame类的DefWindowProc()函数,并判断消息为:WM_NCPAINT,WM_NCACTIV ATE,WM_NOTIFY的时候,调用自己的绘制窗口标题栏的函数。

用GetSystemMetrics(SM_CSFRAME)和GetSystemMetrics(SM_CYFRAME)可以取得标题栏的左上角的坐标。

最大化,最小化的按钮自己画,如果不是在标准的位置,一定要记录下他们的位置,并且在WM_NCLBUTTONDOWN消息处理函数中判断是否是点击了按钮,以做出相应的处理。

系统图标也可以自己重新画。

主要任务有贴图(包括标题栏、左边界、右边界、下边界、系统图标、最大化、最小化、关闭按钮)、处理消息(屏蔽系统自带按钮、双击状态栏改变大小、鼠标停放在三个自绘按钮上时改变按钮图标、单击自绘按钮时作出相应反应)。

一、响应的消息及重载的函数响应的消息及重载的函数都在CMainFrame类中。

响应DefWindowProc函数,在其中判断消息是不是WM_NCPAINT、WM_MOVE、WM_NCACTIV ATE、WM_NOTIFY,若是则重画标题栏、左框架、右框架、下框架、最大化、最小化、关闭按钮(放在一个函数里)。

响应消息WM_NCHITTEST,使鼠标位于自绘按钮时返回相应hittest值,同时屏蔽自带按钮的鼠标事件。

简言之,当鼠标位于自绘按钮时,让系统误以为鼠标位于相应按钮,而当鼠标位于系统自带按钮时,让系统误以为鼠标只是位于标题栏。

自绘图标与之类似,不再赘述。

响应消息WM_NCMOUSEMOVE,判断光标是不是位于自绘最大化、最小化、关闭按钮区域,如是则重画相应的按钮。

响应消息WM_NCLBUTTONDOWN,判断单击左键时鼠标是否位于自绘制的最大化、最小化、关闭按钮或图标区域,如是则执行相应的按钮操作。

响应消息WM_NCLBUTTONDBCLK,使双击标题栏时窗口能最大化或还原。

MFC框架窗口界面设计(共58张PPT)

MFC框架窗口界面设计(共58张PPT)

pStatus->SetPaneText(1,str);
二个窗格的文本
// wParam的低字节表示菜单、控件、加速键的命令ID
(3) 图形编辑器工作窗口的控制条上,单击“New Device Image”,单击[定制]。
// 更新第
FWS_ADDTOTITLE
1框架窗口
(6)在第四步对话框中,单击[高级], 如图,分别用于文档模板字串资源 内容和窗口风格的修改。
▪ 文档窗口一般都有相应的可见边框,它的客户区(除了窗口标题栏、边框外的区 域)是由相应的视图来构成的,因此可以说视图是文档窗口内的子窗口。文档窗 口时刻跟踪当前处于活动状态的视图的变化,并将用户或系统产生的消息传递给 当前活动视图。
1框架窗口
MFC AppWizard为每个窗口设置了相应的大小和位置。
ClassWizard信息文件
(9) 为CM.adinsFpr(aDmeev类el添o加peWrSMt_uSdEiToCUPRroSjOeRc的t)消息映射函数,项增目加代文码件:
(2) 在CMai.npFrlagme类添加WM_CONTEXTMENU消息映射,函数编代码译。信息文件
BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam)
➢ 除了上述风格外,框架窗口还有以下三个自己的风格。它们都可以在PreCreateWindow重载 函数的CREATESTRUCT结构中指定。
➢ FWS_ADDTOTITLE 该风格指定相关的信息如文档名添加到框架窗口标题的后面。
➢ FWS_PREFIXTITLE 该风格使得框架窗口标题中的文档名显示在应用程序名之前。
// 显示窗口
m_pMainWnd->UpdateWindow();
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.2窗口图标与背景修改

7.2.2 修改背景 步骤



1、创建兼容设备描述表 2、创建、装入位图 3、位图选入兼容设备描述表 4、将兼容设备描述表复制到当前设备描述表

详见例7-2

修改背景(实例 7-2) 步骤


1、新建MFC单文档App(ChangeBackground) 2、资源面板添加一个位图资源 3、在CChangeBackgroundView::OnDraw()贴图

2、 MainFrame::OnCreate()

修改窗口外观
视图类中修改 (例7-3 CFra bibliotekangeFrm)


1、 ChangeFrm::PreCreateWindows()


修改WNDCLASS AfxRegisterWndClass() SetClassLong()

2、 ChangeFrm ::OnCreate()
7.3工具栏编程与美化

7.3.1 创建工具栏

增加一个工具栏资源 框架类头文件中声明 CMFCToolBar对象 CMainFrame::OnCreate()中创建工具栏并加载
(可参考向导生成的标准工具栏)

7.3.2 工具栏中添加、删除按钮

编辑位图 修改按钮属性(ID,Width,Height,Prompt) 调整顺序、增加分割线、删除按钮
在该函数返回前 1、先调用PreCreateWindow(),对Create()/CreateEx()中的风格参 数进行预处理设置 2、调用OnCreate() 进行实际的窗口创建


CREATESTRUCT WNDCLASS
修改窗口外观

MainFrame类中修改

1、 MainFrame::PreCreateWindows() 2、 MainFrame::OnCreate()
7.VC++2010 MFC应用程 序 界面与美化
界面美化

窗口风格 窗口图标与背景 工具栏 状态栏 鼠标、光标 其他
7.1窗口风格美化

借助ActiveSkin(外部ActiveX控件,收费) 修改窗口外观

MFC窗口:MainFrame窗口、视图窗口 窗口创建过程: CWnd::Create()/CWnd::Create()

7.2窗口图标与背景修改

7.2.1 窗口图标

(例7-4 ChangeIcon) 步骤

1、新建MFC单文档应用 2、导入5个图标 3、框架类中添加成员变量m_hIcon[5] 4、OnCreate()中加载图标并设置Timer 5、添加定时器响应函数OnTimer()

补:给WM_TIMER添加响应函数OnTimer()(P360有问题)
7.6创建启动界面

Vc6可用,vs2010不可用

安装Splash screen 组件 插入位图(修改ID)
7.7创建特效窗口启动应用程序

利用对话框显示启动画面


1、新建单文档工程 2、导入位图,默认ID 3、新建对话框,删掉2个按钮,增加Picture控件, 设置为上一步中的位图ID 4、修改对话框效果 5、 CMainFrame::OnCreate()中最开始显示对话 框,并延时后销毁

视图类中修改

1、 ChangeFrm::PreCreateWindows() 2、 ChangeFrm ::OnCreate()
修改窗口外观
MainFrame类中修改 (例7-3 ChangeFrm)


1、 MainFrame::PreCreateWindows()


直接修改CREATESTRUCT结构 WNDCLASS SetWindowLong() SetClassLong()
7.4状态栏编程与美化

7.4.1 创建状态栏

1、CMainFrame头文件中申明CStatusBar对象 2、 CMainFrame::OnCreate()中创建状态栏

7.4.2 状态栏中插入进度条




1、CMainFrame头文件中申明CProgressCtrl对 象m_Pro 2、在资源面板中加入字符串资源,ID为IDS_PRO, 并在 CMainFrame中添加状态指示器IDS_PRO 3、CMainFrame加入WM_PAINT相应函数 OnPaint(),在其中创建状态栏 4、OnTimer()中 m_Pro.StepIt();
7.5鼠标、光标编程

7.5.1 鼠标光标编程

1、手工编辑Cursor 2、定义Cursor变量 3、加载Cursor 4、控制Cursor行为:OnCursor()

7.5.2 鼠标的消息处理机制

7.5.3 示例
vc下动态改变鼠标光标
SetCursor(AfxGetApp()>LoadStandardCursor(IDC_CROSS)); 或是: HCURSOR hc; hc=LoadCursor(NULL,IDC_CROSS); SetCursor(hc);

系统标准光标

IDC_APPSTARTING 带小沙漏的标准箭头 IDC_ARROW 标准箭头 IDC_CROSS 十字光标 IDC_HAND 手型 IDC_HELP 带问号的箭头 IDC_NO 禁止符号 IDC_SIZEALL 十字箭头 IDC_SIZENESW 指向东北和西南的双向箭头 IDC_SIZENS 指向南和北的双向箭头 IDC_SIZENWSE 指向西北和东南的双向箭头 IDC_SIZEWE 指向东西的双向箭头 IDC_UPARROW 上箭头 IDC_WAIT 沙漏
相关文档
最新文档