MFC学习笔记之六————更改appwizard生成的窗口外观

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

   要更改应用程序的窗口的外观,我们可以在两个时候更改,一是在应用程序窗口创建之前,二是在应用程序窗口创建之后进行更改。本文将两种方式记录下来。

     在窗口创建之前修改:

我们之前已经知道,在应用程序窗口创建之前会调用一个叫PreCreateWindow()的函数,要想在窗口创建之前修改程序窗口的外观跟大小,就应该在CMainFrame类(SDI程序)中的PreCreateWindow()函数中进行。

virtual BOOL PreCreateWindow( CREATESTRUCT& cs ); //PrecreateWindow()函数原型,参数稍后作解释。

      PreCreateWindow()函数是一个虚函数,在MFC的底层代码中,当调用PreCreateWindow()函数时,如果传递了子类对象的指针,根据多态性的原理,那么就会调用子类对象的PreCreateWindow()函数。函数原型中的参数类型是一个CREAGTETRUCT结构,我们这里可以看一下这个结构体中含有哪些字段。

typedef struct tagCREATESTRUCTW {   LPVOID    lpCreateParams;
   HANDLE    hInstance;   HMENU     hMenu;   HWND      hwndParent;
   int       cy;   int       cx;   int       y;   int       x;
   LONG      style;   LPCSTR    lpszName;   LPCSTR    lpszClass;
   DWORD     dwExStyle;} CREATESTRUCTW, *PCREATESTRUCTW, *LPCREATESTRUCTW;//This structure defines the initialization parameters passed to the window procedure of an application.
之前我们就应该知道了,CREATESTRUCT结构体中的字段跟CreateWindowEx()函数中的参数是完全一致的(只是顺序相反而已)。PreCreateWindow()函数中的参数是一个引用类型,这样,我们只要更改参数 cs中的成员
MFC 修改外观和大小,图标、光标、背景 <br /><br />转载,觉得非常有用。<br /> <br />如何修改MFC AppWizard向导生成的框架程序的外观和大小,修改图标、光标、背景的三种方法。如何增加和删除工具栏按钮,如何给应用程序增加工具栏,如何显示和隐藏工具栏。定制状态栏,在状态栏中添加时钟显示,CTime类及其用法。在状态栏中添加进度条(主窗口产生后立即产生进度条的巧妙思想,不能在OnCreate函数中直接处理,要用到自定义消息的方法)。鼠标坐标显示,在CView中获取状态栏对象的几种方式。如何为应用程序添加启动画面。(孙鑫 阅读详情

相关推荐

VC6集成NTGraph控件实现数据可视化:从原理到实战优化

数据可视化是上位机开发中的核心需求,尤其在工业控制、数据采集等场景中,实时曲线绘制对于监控系统状态至关重要。其原理在于将采集的物理量数据通过坐标映射转换为屏幕图形,实现直观的数据呈现。在技术选型上,轻量级、易集成的图表控件能显著提升开发效率,降低底层绘图API的学习成本。NTGraph作为一款经典的ActiveX控件,在VC6等传统开发环境中展现出独特价值,它通过封装GDI绘图细节,提供简洁的接口如PlotXY和SetRange,使开发者能快速实现多曲线、动态刷新的图表功能。对于维护遗留系统或受限于特定硬件

weixin_30621959的博客 405

MFC设置应用程序图标

首先准备好ICON图标。放到项目的res目录下。 在VS中的 解决方案资源管理器 中找到 资源文件 中的.rc文件,打开,在Icon栏中右键添加资源,选择目标图片即可。 然后把新插入ICON的ID写到Resource.h中,.exe文件的图标是该文件中资源值最小的图标,所以资源ID写最小即可。不过需要注意。添加资源的时候,就自动在Resource.h文件中给你#define了该资源的值,而且是一个比较大的值,直接删除,不然该资源符号就重定义了。 在MainFrm.cpp的初始化函数(OnCreate或

weixin_42312563的博客 2046

MFC学习笔记之八————颜色对话框与字体对话框

当程序中需要用到画图的时候,就要选择画笔的颜色,在MFC中提供了一个CColorDialog的类,通过此类可以很方便的创建这样一个颜色对话框。其构造函数如下: CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd

Natepan的专栏 2810

VS2010-MFC下控件Win7风格设置

MFC的界面太丑了,但是学会之后写一写简单的可交互的PC端程序还是可以的,但是用VS2010自己生成MFC工程上的控件程序还是MFC经典风格,实在是看不下去,如下 要使其按钮带有Win7风格,带有Aero的美化效果 (1)需要在MFC工程的头文件Stdafx.h文件中,加入以下代码 /*用vs2010做mfc界面,按钮的风格默认都是经典的98风格,想改成win7风格原来这...

HW140701的博客 8080

VS2005以后的MFC如何修改菜单的颜色

VS2005以后,MFCMenu从MainFrame上移到了MenuBar上,因此在创建MainFrame(即调用OnCreate()中),执行到if (!m_wndMenuBar.Create(this)) 这句后,从MainFrame上执行GetMenu就不能获得正确的CMenu指针了,以后的GetMenu就只能返回0了。要取得CMenu指针,需要执行:m_wndMen...

dixiangqie0365的博客 716

MFC 生成 exe文件的图标更改方法(转)

创建或打开工程Icon(以下都以工程名为Icon为例)。           单击Workspace窗口的ResourceView标签,选中资源ID为IDR_MAINFRAME图标资源,然后按Delete键把它删除掉。注意:一定要把它删除才行。           从Developer   Studio的Insert菜单中选择Resource,然后选择Icon,新建(New)一个新的图标或

放飞梦想,成就未来 4446

基于mfc的软键盘开发_BCG MFC界面开发帮助文档:适用于VC 6.0的应用向导

BCGControlBar ("Business Components Gallery ControlBar")是MFC扩展库,使您可以创建具有完全自定义选项(功能区、可自定义工具栏、菜单等)以及一组专业设计的丰富Microsoft Office和Microsoft Visual Studio的应用程序 GUI控件,例如图表、日历、网格、编辑器、甘特图和许多其他控件。BCGControlBar库拥...

weixin_39884832的博客 250

MFC扩展库BCGControlBar Pro v36.2新版亮点:可视化设计器升级

本文将介绍MFC界面开发组件BCGControlBar Professional for MFC v36.2的一些亮点,欢迎下载相关产品体验~

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 1189

VC++ 6.0 MFC绘图实战:从消息循环到GDI实现交互式直线绘制

在Windows桌面开发中,理解图形用户界面(GUI)的底层机制是构建稳定应用程序的基石。其核心原理在于事件驱动模型,程序通过响应系统消息(如鼠标点击、移动)来执行相应逻辑。为实现图形绘制,需要掌握设备上下文(DC)这一关键概念,它作为绘图操作的画布与工具集合。GDI(图形设备接口)作为Windows经典的绘图API,提供了直线、矩形等基本图元的绘制功能,其技术价值在于实现了与设备无关的图形输出。在诸如绘图软件、CAD工具等应用场景中,实时交互式绘图是常见需求,这通常涉及鼠标消息处理与“橡皮筋”预览效果的实

weixin_33788244的博客 1007

解析C++普通局部变量与指针类型的对象变量的应用区别

首先我们想来了解一下MFC中的CPtrArray类,他可以说是CObject类型指针对象的集合。通过int Add( CObject* newElement );注意参数是一个指针类型)可以向集合中添加元素。首先我们定义一个CPtrArray类型的对象。CPtrArray pAr

Natepan的专栏 1247

MFC学习笔记之四————菜单编程与windows消息分类

首先,在MFC中,具有PopUp属性的菜单是不能用来做命令响应的。 在MFC中:                   当点击一个菜单项的时候,最先接受到菜单项消息的是CMainFrame框架类,CMainFrame框架类将会把菜单项消息交给它的子窗口View类,由View

Natepan的专栏 1188

MFC学习笔记之五—————对话框编程及控件初步操作

通过一个简单的向导程序demo的设计,初步了解了MFC中一些基本对话框编程函数的编程以及一些基本控件的使用。 首先来了解一些重要的函数: 获取对话框上的项目指针:GetDlgItem(),注意此函数的返回值,一般都需要进行强制类型转换。 获取窗口信息:GetWindowTe

Natepan的专栏 1102

MFC学习笔记之三————区分窗口类对象以及窗口&&四种获得DC方式绘图

首先区分一下窗口类、窗口类对象以及窗口要区分这些关键是知道C++窗口类对象的生命周期与窗口的生命周期不是一致的!(这里容易误解的是C++窗口类对象就是窗口!)当一个窗口销毁时,与C++窗口类对象没有关系,他们之间的纽带在于这个C++窗口类内部成员变量(如m_hWnd),该变量保存

Natepan的专栏 1099

MFC学习笔记之二----------MFC框架程序及消息映射

前面已经知道,在一个windows程序中,winmain函数作为程序的入口函数,一个程序的是:设计窗口(给窗口设置相应的属性)——>注册窗口——>创建窗口——>显示并且更新窗口——>消息循环;但是当创建一个MFC程序时候,并没有看到winmain函数之类的东西,并且之前的程序框架

Natepan的专栏 1032
上一篇: MFC学习笔记之五—————对话框编程及控件初步操作
下一篇: MFC学习笔记之七————工具栏编程与状态栏编程
Natepan
博客等级 码龄16年 28粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值