MFC开发之设置窗口最大化、最小化和默认大小

MFC界面(一)在对话框上添加最小化功能. 首先,在对话框的属性中样式选项中勾选最大化和最小化.接下来: 1:在XXXDlg.h中 增加成员变量 NOTIFYICONDATA nid; 增加消息函数声明,就放在其他很多的afx_msg系列函数一起就行: afx_msg void OnNotifyIcon(WPARAM, LPARAM); 2:在cpp中修改如下内容: #ifdef _DEBUG #define new 阅读详情

当没有标题栏后自己写最大化、最小化和默认大小

最大化按钮:

static BOOL bMaximum = FALSE;
Invalidate();
	
if (bMaximum)
{	
	ShowWindow(SW_RESTORE); 
	bMaximum = false;
    //添加
}
else
{
	ShowWindow(SW_MAXIMIZE); 
	bMaximum = true;
    //最大化后控件怎么处理代码,是否跟随变化
}

因为这样最大化会将任务栏覆盖住,所有需要在OnGetMinMaxInfo中添加最大高

lpMMI->ptMaxSize.y = GetSystemMetrics(SM_CYFULLSCREEN) + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYDLGFRAME);

这样最大化时就不会覆盖任务栏了

 以上不适合所有问题,因为一般最大化的时候界面中控件也会改变位置和大小这就需要对控件操作了,这个时候上面最大化的方式就不好用了

弄三个按钮,最小化、最大化、关闭按钮,响应消息

1、最小化按钮

CDialogEx::ShowWindow(SW_SHOWMINIMIZED);

下面的放在初始化函数中

//在任务栏点击可以最小化
LONG dwStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);
::SetWindowLong(m_hWnd, GWL_STYLE, dwStyle | WS_MINIMIZEBOX);

2、默认大小

这个在程序第一个运行的时候就将界面的大小用静态变量保存起来,后面最大化后恢复默认使用,注意默认大小的左上角坐标要根据最大化前的坐标来定,在最大化前将这个坐标保存起来,设置大小使用MoveWindow函数

3、最大化

需要注意多屏幕的问题,然后在主屏幕要注意任务栏的高度和任务栏是否隐藏的问题

//获取任务栏的高度

CRect rt;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0);//rt.bottom为除任务栏外的高度

//判断软件界面所在的是否为主屏幕

HMONITOR hMonitor1 = MonitorFromRect(ssd, MONITOR_DEFAULTTONULL);//根据区域获取当前屏幕坐标		

MONITORINFO mi;
RECT        rc5;

mi.cbSize = sizeof(mi);
::GetMonitorInfo(hMonitor1, &mi);
rc5 = mi.rcMonitor;//判断rc5的左上角坐标是否为0,都为0 就是主屏幕

如果为主屏幕就使用rt为最大化区域,注意当任务栏在左边时宽度需要rt.right-et.left

不是主屏幕直接使用rc5就可以了

最后判断任务栏是否隐藏(不过好像SystemParametersInfo已经帮我们判断好了,不需要我们单独判断)

APPBARDATA apBar; 
 memset(&apBar,0,sizeof(apBar)); 
 apBar.cbSize = sizeof(apBar); 
 apBar.hWnd =(HWND) FindWindow("Shell_TrayWnd", NULL);
 LPARAM lParam = SHAppBarMessage(ABM_GETSTATE, &apBar);
 if (lParam ==ABS_AUTOHIDE)
 {
  //隐藏
 } 
 else
 {
 //没隐藏
 }

MFC去掉窗口右上方最大化最小化关闭按钮 阅读详情

相关推荐

Q窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)

Qt窗口中的一些小技术总结   //Qt主窗口没有最小化,最大化按钮且最大化显示  int main(int argc, char *argv[])  {  QApplication a(argc, argv);  TestQtForWinCE w;  w.setWindowFlags(w.windowFlags()& ~Qt::WindowMaximizeButtonHin...

qimo601的专栏 5666

MFC程序运行最小化

MFC 一、简介 在调试的时候,运行程序,程序一直最小化,如何解决 二、解决方法 在初始化函数中注释掉下面的函数 ShowWindow(SW_MAXIMIZE); // CICDDlg 消息处理程序 BOOL CICDDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_

weixin_45631738的博客 1651

MFC 实现动态调整对话框控件与字体大小

在MFC开发中,为了提升用户体验,我们需要实现对话框窗口的动态调整功能,即用户通过拖动窗口的边框或角可以改变窗口大小,同时窗口中的控件位置、大小及字体也随之自适应变化。这篇文章将详细介绍如何实现这样的功能。

Darker的博客 2134

MFC 窗口操作(最大、最小等)

(1)最大化 SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);//最大化 (2)最小化 SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,0);//最小化 (3)还原 SendMessage(WM_SYSCOMMAND,SC_RESTORE,0);//还原 (4)关闭 SendMessage(WM_CLOSE,0,0);//关闭 (5)居中 CenterWindow();//居中 (6)位置大小 SetWindowPos(NULL,100,100,

GAORUI_GAO的博客 1883

Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)

Qt窗口中的一些小技术总结   //Qt主窗口没有最小化,最大化按钮且最大化显示  int main(int argc, char *argv[])  {  QApplication a(argc, argv);  TestQtForWinCE w;  w.setWindowFlags(w.windowFlags()& ~Qt::WindowMaximizeButtonHint& ~

软件工程 2430

掌握MFC中的窗口最大化和最小化编程技术

本文还有配套的精品资源,点击获取 简介:在开发Windows应用程序时,处理窗口的最大化和最小化是常见需求。MFC提供了丰富的类库和接口支持这一功能。本文将详细讨论如何通过CWnd类中的ShowWindow和SetWindowPos成员函数,以及响应WM_SIZE消息来实现窗口的最大化和最小化。同时,还会介绍如何利用Visual Studio的资源编辑器设置对话框的“最大”...

weixin_42560991的博客 2757

MFC(十)窗口的放大和缩小

窗口的放大和缩小

学习 3861

AXI总线的Burst Type以及地址计算 | WRAP到底是怎么一回事?

AXI总线的transaction是burst-based的,因此有必要好好研究一下不同burst type的工作原理。此处略过burst的定义以及burst size、burst length等信号的介绍。

qiuzhongyu123的博客 2万+

MFC窗口大小最大化最小化随拖动调整大小

选择需要支持的对话框属性,开启Title Bar功能,开启System Menu ,Maximize Box ,Minimize box功能,这样我们的主界面就可以支持最大化,最小化,同时Border属性设置为Resizing模式,可以拖动改变大小.//第一个保存的是对话框的Rect。通常我们的MFC窗口默认是没有可以选择的最大化和最小化,开发用户可以选择支持最大化,最小化属性功能.用来盖改变窗体大小,并记录窗口信息,退出时候保存,下次加载时候自动恢复上次保存的窗口大小.

u011637657的博客 2828

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月10日

前文:SABRE 3D系列机台简介本章节详细阐述了在维护期间锁定电气、机械、热力学及重力组件以及化学管线输入的锁定操作流程,旨在降低人员受伤风险。p42~p55。

weixin_46735260的博客 1609

iOS逆向实战:绕过SSL Pinning抓取ChatGPT设备令牌

在移动应用安全与网络协议分析领域,中间人攻击是一种核心的流量拦截与分析技术。其原理是在客户端与服务器之间插入一个代理节点,通过伪造数字证书来解密和窥探HTTPS加密流量。这项技术的工程价值在于,它使开发者能够调试API、分析通信协议以及实现自动化集成。然而,许多高安全要求的应用(如金融、社交类App)会采用SSL Pinning(证书绑定)技术来抵御此类攻击,这为逆向工程带来了挑战。本文聚焦于一个具体的应用场景:如何针对启用了SSL Pinning的ChatGPT iOS客户端,通过特定的工具链(如Trol

weixin_28235889的博客 969

MFC改变对话框大小,不可伸缩、不可移动、固定位置、最大化、最小化、无边框移动

---

m0_55104822的博客 5726

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3762

VS2010编写MFC程序,调整窗口大小和实现窗口最大化、最小化方法。

MFC调整窗口大小

风中之神的专栏 1万+

获取iOS设备唯一标识UUID(Swift版)

属性返回的UUID是与应用程序相关联的,也就是说,如果用户卸载并重新安装应用程序,该UUID可能会发生变化。如果您需要一个与设备相关的持久唯一标识符,您可以考虑使用Keychain或其他方法来存储和检索设备标识符。在iOS开发中,我们经常需要获取设备的唯一标识符来进行一些特定的操作,比如设备识别、数据追踪等。在本文中,我将向您展示如何使用Swift编程语言获取iOS设备的唯一标识UUID。通过上述代码,您可以在您的iOS应用程序中轻松获取设备的唯一标识符。属性来获取设备的唯一标识UUID。

BitNetO的博客 1916

Unity-Mirror网络框架-从入门到精通之Mirror简介

在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计。它使得开发者能够轻松实现网络连接、数据同步和游戏状态管理。本文将深入介绍Mirror的基本概念、如何与其他网络框架进行比较,以及如何从零开始创建一个使用Mirror的简单网络项目。Mirror是一个功能强大的Lite网络框架,旨在替代Unity的UNet网络解决方案。它提供了高效的多玩家架构、简单易用的API,以及良好的社区支持。

TxNet 3087

MFC禁止窗口最大化按钮和禁止改变窗口大小

1.  修改PreCreateWindow()函数如下:   BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)   {   if( !CFrameWnd::PreCreateWindow(cs) )        return FALSE;   cs.dwExStyle &= ~WS_EX_CLIENTEDGE;  

scottmama的专栏 7376

实战案例—encrypt靶场(AES固定key篇)

AES是一种对称密钥加密方法,意味着加密和解密时使用相同的密钥。AES加密存在三种形式:AES-128、AES-192和AES-256,它们分别对应于三种不同的密钥长度——128位(即16字节)、192位(即24字节)和256位(即32字节)。通常情况下,密钥的长度越长,提供的安全性就越高,但相应地,加解密过程所需的时间也会增加。默认情况下,采用的是AES-128,其提供的安全性对于大多数应用来说已经足够充分。

zhouzhou_98的博客 497

QT窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)

原文地址http://qimo601.iteye.com/blog/1409641 Qt窗口中的一些小技术总结   //Qt主窗口没有最小化,最大化按钮且最大化显示  int main(int argc, char *argv[])  {  QApplication a(argc, argv);  TestQtForWinCE w;  w.setWindowFlags(w.wind

haah1221的专栏 4万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

禁止MFC改变窗口大小

最简单的方法 不需要写任何代码禁止MFC改变窗口大小,只需要修改对话框外观的Border属性为Dialog Frame。

酒馆~酒友 4807

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

MFC 使窗口最大化,不能改变大小,只能移动和最小化

1.增加虚函数PreCreateWindow(CREATESTRUCT& cs) BOOL CSimvisionDlg::PreCreateWindow(CREATESTRUCT& cs) { // TODO: 在此添加专用代码和/或调用基类 cs.style &= ~FWS_ADDTOTITLE;//可改变窗口标题 cs.style &= ...

u013293483的博客 1796

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

如何判断窗口是最大化状态 还是 最小化状态 的API函数

MFC中的CWnd类提供了下面两个函数用于判断窗口的最大化、最小化状态,其子类继承了这些函数: IsZoomed:判断窗口是否处于最大化状态。 IsIconic:判断窗口是否处于最小化状态。 可以使用CWnd::ShowWindow函数设置窗口的显示状态,其函数原型如下: BOOL CWnd::ShowWindow( int nCmdShow ); 其中nCmdSho

CreatedSign的专栏 8460

mfc控件自适应窗口大小,随窗口大小变化而变化

作为一个mfc的初学者,难免会遇到这样的问题,窗口可以改变大小,而其中的控件大小也随之改变,那怎么样去做呢。 1.对应窗口的属性Maximize Box和Minimize Box设置为true,从而能够使窗口最大化和最小化,Border属性设置为Resizing从而可以改变窗口的大小。 2.在消息有个WM_SIZE,添加函数OnSize,这样可以在函数内调整控件的大小,特别说明很多代码中利用当

u013280734的博客 2万+

MFC-窗口-显示状态设置的三种方法

窗口初始化状态设置 以下只示例了窗口最大化,其他窗口状态只替换相应参数即可, 窗口最大化/最小化/显示/隐藏等三种方法都可以实现, 第三种方法修改结构体内的参数可以指定窗口最大化最小化还原后显示的位置MFC窗口最大化 方法1: 1.创建窗口,窗口类型中需要WS_MAXIMIZE pC_Dlg = new CC_Dlg(); //给指针分配内存 pC_Dlg->Create(IDD_

大神之路漫漫,吾将连滚带爬 1万+
上一篇: 【MFC开发之静态文本框响应滚轮消息】
下一篇: MFC开发之自绘Group Box控件
大树学长
博客等级 码龄12年 225粉丝 290原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值