为MFC应用程序添加全屏幕显示功能

MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择? 标准控件:这些是由操作系统或开发框架预定义的控件,如按钮、文本框等。它们通常是现成的,可以直接使用并提供基本的用户界面功能。自定义控件:这些是开发人员根据特定需求创建的控件,可以扩展标准控件的功能或提供全新的功能和外观。MFC ActiveX控件:选择这个选项如果您需要创建一个可嵌入到其他应用程序中的控件。MFC应用程序:选择这个选项如果您需要创建一个独立的Windows桌面应用程序。MFC DLL:选择这个选项如果您需要创建一个动态链接库以便其他应用程序调用,或者实现插件功能。 阅读详情
在CMainFrame类中添加下列成员变量和成员函数(使用ClassWizard),下面是这些变量和函数的功能说明:

成员变量:
BOOL m_bFullScreen; //全屏幕显示标志
CRect m_FullScreenWindowRect; //全屏幕显示窗口Rect
WINDOWPLACEMENT m_wpPrev; //用于保存正常视图时的窗口位置信息
CToolBar * m_wndFullScreenBar; //全屏幕显示时的浮动工具条

成员函数:
void OnMenuFullscreen(); //全屏幕显示的处理函数
void OnGetMinMaxInfo(); //捕获WM_GETMINMAXINFO消息以便允许你增加窗口大小
void OnUpdateViewFullScreen(); //更新“全屏幕显示”菜单的状态

源码

void CMainFrame::OnMenuFullscreen()
{//全屏幕显示的处理函数
RECT rectDesktop;
WINDOWPLACEMENT wpNew;

if (m_bFullScreen)
{//全屏幕显示模式
//隐藏工具条和状态条
m_wndStatusBar.ShowWindow(SW_HIDE);
m_wndToolBar.ShowWindow(SW_HIDE);

//保存正常视图时的窗口位置信息以便恢复原来状态
GetWindowPlacement (&m_wpPrev);
m_wpPrev.length = sizeof m_wpPrev;

//调整RECT为新的窗口尺寸
::GetWindowRect ( ::GetDesktopWindow(), &rectDesktop );
::AdjustWindowRectEx(&rectDesktop, GetStyle(), TRUE, GetExStyle());

//保存RECT以便OnGetMinMaxInfo()使用
m_FullScreenWindowRect = rectDesktop;

wpNew = m_wpPrev;
wpNew.showCmd = SW_SHOWNORMAL;
wpNew.rcNormalPosition = rectDesktop;

//生成新的工具条
m_wndFullScreenBar=new CToolBar;

if(!m_wndFullScreenBar->Create(this, CBRS_SIZE_DYNAMIC|CBRS_FLOATING)
|| !m_wndFullScreenBar->LoadToolBar(IDR_FULLSCREEN))
{
TRACE0("Failed to create toolbar/n");
return; // fail to create
}

//不允许工具条停泊
m_wndFullScreenBar->EnableDocking(FALSE);
m_wndFullScreenBar->SetWindowPos(0,100,100,0,0,SWP_NOSIZE
|SWP_NOZORDER|SWP_NOACTIVATE|SWP_SHOWWINDOW);
m_wndFullScreenBar->SetWindowText(_T("全屏幕显示"));
FloatControlBar(m_wndFullScreenBar, CPoint(100,100));
m_bFullScreen=TRUE;
}
else
{//正常显示模式
//删除全屏幕工具条
m_wndFullScreenBar->DestroyWindow();
delete m_wndFullScreenBar;

m_bFullScreen=FALSE;

//恢复工具条和状态条
m_wndStatusBar.ShowWindow(SW_SHOWNORMAL);
m_wndToolBar.ShowWindow(SW_SHOWNORMAL);
wpNew = m_wpPrev;
}

//设置窗口显示状态
SetWindowPlacement ( &wpNew );
}

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
if (m_bFullScreen)
{
lpMMI->ptMaxSize.y = m_FullScreenWindowRect.Height();
lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y;
lpMMI->ptMaxSize.x = m_FullScreenWindowRect.Width();
lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x;
}
}

void CMainFrame::OnUpdateMenuFullscreen(CCmdUI* pCmdUI)
{//更新菜单的状态
pCmdUI->Enable();
pCmdUI->SetCheck(m_bFullScreen);
}
为MFC应用程序添加析构函数   MFC编写的智能设备应用程序,有些自己创建的GDI资源需要释放,以免造成内存泄露。这样有些代码想放到主对话框的析构函数中。这时会发现找不到主对话框的析构函数,只能看到构造函数。  这就需要自己来为主对话框添加析构函数。  如:  头文件中添加:virtual ~CConFontChDlg();  一定要加上virtual关键字,否则在主窗口销毁时,将不会调用我们自己创建的析构函 阅读详情

相关推荐

MFC实用功能技术——下拉列表添加值

MFC系列: 0.MFC简易入门基础 1.MFC实用功能技术——窗口跳转 2.MFC实用功能技术——下拉列表添加值   又是一个MFC的功能,我觉得上图会比较方便   1.添加combox控件 右边就是这个控件的样子   2.添加item的两种方法   2.1data添加 你可以在属性里,找data,然后添加每次添加的时候要加;分隔不同选项 ‘’ 图中的66;22...

云端筑梦师 4460

MFC 进行全屏显示并动态加载菜单进行还原

首先说一下全屏的概念:大家应该都有过软件全屏的使用经历,无非就是让其客户区域显示在整个屏幕上,原先窗口上的工具栏和状态栏都隐藏了罢了。 下面我只说一下核心代码。(注:大家实验前,应该先建一个单文档工程,并添加一个菜单项:全屏:IDR_FULLSCREEN,点击这个菜单项就进行全屏显示,所以我们应该编写这个菜单项的事件代码,当然是再CMainFrame类中)。     1:先说一下我们暂时(后边

anjiashuai521的专栏 1715

创建MFC基本对话框及添加下拉框

MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries)以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC是WinAPI与C++的结合。API,即微软提供的Windows下应用程序的编...

shuiyinshui的博客 7871

一种简单实用的全屏方法

实现程序全屏幕显示的思路有很多种,最常见的一种就是:  1)利用Windows API提供的一个结构体WINDOWPLACEMENT来存储全屏显示前视图和主框架窗口在屏幕上的位置和显示信息、非客户区窗口的显隐信息,以便全屏幕显示时恢复窗口原状;  2)通过API函数GetDesktopWindow()得到桌面窗口,由GetWindowRect()得到显示器的尺寸;  3)通过AdjustWindo

xlzxlich的专栏 3097

MFC全屏窗口实现与开发详解

Windows窗口的样式决定了窗口的外观和行为,包括是否有边框、标题栏、是否可调整大小等。MFC通过CWnd类封装了这些样式设置,使得开发者可以通过函数调用来动态修改窗口属性。本章详细讲解了如何在MFC应用中实现全屏切换按钮或菜单项,包括界面设计、命令绑定、状态切换逻辑、用户反馈机制以及窗口刷新控制。通过结合Invalidate等函数,实现了功能完整、交互良好的全屏切换机制。在下一章中,我们将进一步探讨如何处理屏幕分辨率变化带来的窗口布局调整问题。

weixin_42605397的博客 764

Excel数据清洗实战:8个必学函数搞定90%的脏数据问题(附案例)

本文通过一个完整的销售数据清洗案例,详细讲解了如何组合使用TRIM、CLEAN、SUBSTITUTE等8个核心Excel函数,构建自动化清洗流水线,高效解决日常办公中90%的脏数据问题,从而将时间留给更有价值的分析工作。

weixin_29215391的博客 584

VC/MFC如何添加启动界面

1、利用组件库中的Splash Screen组件生成Splash1.cpp 和Splash1.h 这两个文件(也就是基于框架类的应用程序添加启动画面的步骤)  (1)用Photoshop等制作启动画面图像,保存为bmp格式。    (2)用Appwizard建一个基于单文档的工程Splash。    (3)在资源中插入位图资源       打开VC++的资源编辑器,用鼠标右键单击Resou

ShiZhixin的专栏 4430

基于74LS175的四人抢答电路设计(含详细设计分析及试错过程)

根据设计要求不难发现,只要有一人抢答,就会输出信号使指示灯常亮,此时其他人输入无效,适宜选择触发器,有人抢答时触发器输出由0变1,输出信号控制指示灯常亮,同时使CLR引脚输入0,触发器不工作,即其他选手不能再抢答。尝试加入一人抢答后其他人不可抢答功能,如下图,175四个~Q输出端接入同一个与非门,于是当有选手抢答时该与非门输出由0变1,将该信号输入U5A,U5A输出由1变0,接入~CLR即可使电路不再工作。但仿真时发现,该复位键仅可使抢答电路部分复位,计数部分只是暂停,并未复位。否则元器件将无法正常工作。

2202_75463653的博客 8200

MFC框架中视图窗口全屏显示

  在MFC的视图文档结构中,视图永远在框架窗口的范围之内。本文介绍一种把视图全屏显示的方法,能使视图的大小占据整个显示器窗口。方法要点1:扩大主框架窗口。因为视图的大小是随主框架窗口的大小自动调整的,所以首先要把主框比显示器窗口还大,以给视图留下足够占满显示器的空间。方法要点2:把主框架窗口移到合适的位置,使视图的左上角正好在屏幕的左上角。注意:对于不能自动按框架大小自动调整的视

2945

利用李雅普诺夫函数开发航天器姿态控制系统

本文基于李雅普诺夫函数控制方法,采用修正罗德里格斯参数(MRP)描述航天器姿态,设计了姿态控制律。通过构造能量型李雅普诺夫函数,推导出保证系统稳定的控制闭环方程,实现了航天器从初始状态到目标状态的稳定转换。针对MRP参数可能出现的奇异性问题,采用影子集进行规避。仿真实验包含两种模式:非追踪模式(目标状态为0)和追踪模式(目标为三角函数轨迹)。结果表明,该控制方法能够有效实现姿态稳定和轨迹跟踪,在短暂调整后即可精确跟随目标轨迹。控制律设计考虑了不同参考系间的转换,通过DCM矩阵处理目标角速度的坐标变换问题。

weixin_50227659的博客 1223

EDA环境下的LSF进阶调优:如何为Cadence/VCS等工具正确配置cgroups与daemon starter

本文深入探讨了在EDA环境中如何为Cadence/VCS等工具正确配置LSF的cgroups与daemon starter,解决资源分配与特殊应用兼容性问题。通过详细解析cgroups技术、daemon starter配置及混合资源管理策略,帮助提升LSF集群的效率和稳定性,特别适用于高性能计算和芯片设计场景。

weixin_33724046的博客 461

CSP-J真题能力诊断:从C++语法到算法思维的实战拆解

CSP-J作为信息学入门核心赛事,其初赛本质是算法思维与工程实践能力的综合评估。理解C++不仅是掌握语法,更需洞察内存布局、STL容器机制与I/O缓冲原理等底层逻辑;而CSP-J大纲所强调的‘问题建模’‘效率分析’‘数据结构应用’,正通过真题中的边界处理、状态压缩、常数优化等细节具象呈现。这类能力直接支撑字符串处理、图论建模、BFS/DFS实现等高频考点,也广泛迁移至VSCode本地调试、MinGW环境配置、洛谷评测适配等真实开发场景。2023真题因此成为诊断基础断层、反推能力短板、构建三年成长轴的关键锚点

cuankuangzhong6373的博客 515

实战|mitmproxy+Playwright 拦截篡改Cloudflare验证流程,实现无感爬取(2026实测可用)

2026年对抗Cloudflare,别再死磕滑块、轨迹、算法。高伪装浏览器 + 中间层劫持篡改验证流程Playwright + mitmproxy = 无感过CF这篇是纯实战、无废话、可直接上线的方案。你只要把目标网站、cf_clearance填进去,就能跑通。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1284

为MFC应用程序添全屏幕显示功能

在CMainFrame类中添加下列成员变量和成员函数(使用ClassWizard),下面是这些变量和函数的功能说明:   成员变量:   BOOL m_bFullScreen; //全屏幕显示标志   CRect m_FullScreenWindowRect; //全屏幕显示窗口Rect   WINDOWPLACEMENT m_wpPrev; //用于保存正常视图时的窗口位置信息   CT

yingfox的专栏 716

【K8S系列】Kubernetes Pod节点CrashLoopBackOff 状态及解决方案详解【已解决】

在 Kubernetes 中,Pod 的状态为 **`CrashLoopBackOff`** 表示某个容器在启动后崩溃,Kubernetes > 尝试重启该容器,但由于持续崩溃,重启的间隔时间逐渐增加。下面将详细介绍 `CrashLoopBackOff > `状态的原因、解决方案及相关命令的输出解释。

颜淡慕潇 8381

深度拆解 ‘High-Frequency Trading’ (HFT) 系统:解析如何在 100 纳秒内完成从网卡到 C++ 策略的响应

在100纳秒内完成从网卡到C++策略的响应,这是一项对技术栈每一个层面都进行极限优化的系统工程。它要求我们深入理解计算机体系结构、操作系统、网络协议和C++语言的底层机制。从物理距离的极致缩短,到高性能网卡和内核旁路技术,再到C++代码中每一个字节、每一个CPU周期的精打细算,HFT系统展现了人类对计算速度的永恒追求。这项技术不仅仅应用于金融交易,其背后的低延迟理念和实现方法,如DPDK、无锁编程、硬件加速等,正在逐渐渗透到其他对延迟敏感的领域,例如电信网络、边缘计算和工业自动化。

weixin_41455464的博客 1039

Visual Studio 2022的MFC框架——应用程序向导

Visual Studio 2022的MFC框架——应用程序向导

荔园微风的博客 1万+

CryoEM - 使用 ChimeraX 工具 操作 冷冻电镜的 MRC 密度图(Density Map) 教程

由冷冻电镜 CryoSparc 软件所生成的 Volume,需要观察其内部结构,建议使用 ChimeraX 进行操作。

AGI 4962

MFC学习教程第一个程序之(MFC中创建一个基于对话框的应用程序,用来实现加法运算的功能)——参考【鸡啄米】

一、创建基于对话框的应用程序框架 选择菜单项File->New->Project,弹出“New Project”对话框。 左侧面板中Installed Templated的Visual C++下选择MFC,中间窗口中选择MFC Application,然后在下面的Name编辑框中键入工程名称,本例取名“Addition”,在Location编辑框中设置工程的保存路径。点“OK”。 点...

weixin_42512266的博客 7830

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

《MFC如何添加子对话框》

问题描述  当MFC应用程序的主对话框有其他功能需要,但不能显示在主对话框时,通常会通过点击一个功能按钮弹出一个字对话框来实现。最常见的就是登录界面,点击登录按钮,然后弹出一个登录对话框让你输入登录信息,输完信息之后点击立即登录按钮,对话框消失,又回到主界面。   MFC添加子对话框 1、选中项目名称,点击鼠标右键,依次选择添加、资源 2、进入到添加资源界面,选择Dia...

GodLei1995 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MFC添加背景图片

很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又回顾了下相关知识。的确,任何知识一段时间过后都比较容易忘记,但回顾起来还是很有印象的。 这篇文章主要是回顾以前的MFC基础知识,给对话框添加背景图片和给按钮button添加背景图片;希望此篇基础性文章对大家有所帮助!同时为下次做MFC相关知识提供...

qq_36583051的博客 6555

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

向MFC应用程序添加控制台窗口

向MFC应用程序添加控制台窗口简介    如果你曾经写过MFC应用程序,也许你忽略了控制台窗口。熟悉了控制台窗口的人会认为它是如此的便捷,我就是一个,认为printf或者cout是最优秀的调试函数,可以在不打开任务管理器的情况下在控制台中仅仅按下CTRL+C来结束不响应的程序。不幸的是,MFC应用程序默认情况下并不支持控制台。但是在你的应用程序加入一小段代码后,然后改变连接选项你就可以解决

boqing的专栏 8208

MFC---MFC应用程序框架分析(MFC应用程序框架)

上一讲讲的是VS2010应用程序工程中文件的组成结构,可能大家对工程的运行原理还是很模糊,理不出头绪,毕竟跟C++编程入门系列中的例程差别太大。这一节就为大家分析下MFC应用程序框架的运行流程。

Frank---7的博客 1277

MFC应用程序中添加控制台窗口

在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息;另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行。 其实有一种方法可以更为方便的输出调试信息,就是输出到控制台(Console)中,即不影响程序运行,又便于查看调试信息。方法如下: 1.  使用时略显麻烦。需要建立全局的instance,使用时需要p-

三少GG 6710
上一篇: 看到这条消息很激动, 太棒了, First Post!
下一篇: 如何解决在PUTTY下Linux显示乱码的问题
Bruce_Chou
博客等级 码龄26年 3粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值