如何在初始化窗体不是最大化情况下,获取最大化窗体的客户区的尺寸

C#上位机自定义窗口开发:从非客户区控制到工业级复用 在工业自动化领域,上位机界面不仅是数据显示载体,更是人机协同的关键交互层。其核心在于突破WinForm默认窗体的系统托管限制,通过底层Windows API(如WM_NCHITTEST消息拦截、DwmSetWindowAttribute调用)实现非客户区重绘与精细化控制。这涉及DPI适配、多屏异构、触摸响应等硬性工程挑战,技术价值在于保障高可靠、低延迟、强鲁棒的现场操作体验。典型应用场景包括PLC实时监控、视觉检测系统、灌装产线人机终端等对响应速度与环境适应性要求严苛的工控环境。本文聚焦.NET 6+原生实 阅读详情
思路:查找有没有相关的函数可以达到这个目的呢?
经查找发现,要求最大化的客户区的尺寸可以通过调用GetSystemMetrics(int nIndex)函数来获得
(参数可为:SM_CXFULLSCREEN和SM_CYFULLSCREEN)
但是,这里获得的SM_CYFULLSCREEN为最大化时,窗体只含标题栏和客户区时客户区的高度

可利用上面的函数通过参数SM_CYMENU来过去菜单栏的高度。

具体代码如下:

int full_cxClient = GetSystemMetrics(SM_CXFULLSCREEN); //最大化客户区的width

 int full_cyClient = GetSystemMetrics(SM_CYFULLSCREEN) - GetSystemMetrics(SM_CYMENU); //最大化客户区的height
vc自画窗体 黑边去除 貌似无论怎么设置,窗体总有一条黑边暂时没找到办法能去除这条黑边通过WM_NC_CALCSIZE可以看到客户区比窗口区域缩了1个像素这样就会导致自画窗口边缘1个像素的内容很随机凌乱可以做几件事儿:1,在WM_NCPAINT中 case WM_NCPAINT: { HDC hDC = ::GetWindowDC(m_hWnd); 阅读详情

相关推荐

MFC窗体界面优化:如何隐藏菜单栏、工具栏及状态栏实现简洁布局

本文详细讲解了MFC窗体界面优化的核心技巧,重点介绍如何通过修改CMainFrame::OnCreate函数和窗口样式,实现隐藏菜单栏、工具栏及状态栏,以打造简洁、全屏或自定义布局的应用界面。文章结合实战代码,深入分析了隐藏最大化最小化关闭按钮等高级操作,并提供了避坑指南,帮助开发者彻底掌握MFC窗口定制,满足信息展示、工业控制等专业场景需求。

weixin_29015899的博客 257

QT窗体大小控制全攻略:从setFixedSize到高级事件处理

本文全面解析了QT框架中窗体尺寸控制的核心技术与实践方法。从基础的setFixedSize函数使用入手,深入探讨了其应用场景与局限性,并详细介绍了如何利用事件过滤器实现状态感知的动态尺寸管理,以及如何适配多显示器与全屏等高级场景。文章旨在帮助开发者掌握从固定尺寸到自适应布局的完整解决方案,提升桌面应用的专业性与用户体验。

weixin_29197835的博客 612

C# WinForms圆角窗体实现:原理、代码与生产级解决方案

在桌面应用开发中,窗体外观是用户体验的关键环节。现代UI设计普遍采用圆角元素来提升视觉亲和力与美观度,这背后涉及Windows窗口区域(Region)与GDI+绘图的核心原理。通过设置Form.Region属性,开发者可以重新定义窗体的可见与可点击区域,实现任意形状窗体,这是WinForms图形操作的重要基础。该技术能显著提升应用的专业感和现代性,尤其适用于工具软件、对话框及需要自定义界面的各类桌面应用。本文以C# WinForms为例,深入解析了基于Region的圆角窗体实现方案,并提供了解决窗体闪烁、控

weixin_34343308的博客 330

mysql最大化当前窗口_窗口最大化全屏化的方法

(一)最大化ShowWindow(SW_SHOWMAXIMIZED);该调用受OnGetMinMaxInfo影响(二)全屏化1.int cx = GetSystemMetrics(SM_CXFULLSCREEN);int cy = GetSystemMetrics(SM_CYFULLSCREEN);CRect rt;SystemParametersInfo(SPI_GETWORKAREA,0,&a...

weixin_28879085的博客 542

C#中实现窗体最小化按钮的控制方法与实战

是类中的一个公共布尔型属性(public bool),用于指示窗体的标题栏是否包含最小化按钮。当该属性设置为true时,操作系统会在窗体右上角绘制一个可点击的最小化图标;若设为false,则该按钮将不可见且无法使用。这一属性属于窗体样式的一部分,由底层Windows API通过非客户区(Non-Client Area)渲染机制实现。首先,扩展以支持细粒度的UI控制:-- 全局开关 -->-- 角色级别配置 -->-- 特殊模式 -->

weixin_30021053的博客 1343

Source Insight 4.0舒适黑主题 仿心情看的舒服就行

Source Insight 4.0主题 仿心情看的舒服就行 source insight自带的主题怎么看怎么别扭,于是在试用全网各种主题配色后,在其中一个基础上自定义了c/c++的语法配色 截全图有点糊 函数定义 全局变量 局部变量 枚举变量引用 全局变量引用及结构体成员 宏定义引用 ----------------------后面会再把主题文件贴上来-------------- ...

weixin_43443402的博客 1303

获取屏幕尺寸大小

int with= GetSystemMetrics(SM_CXFULLSCREEN); int heigh= GetSystemMetrics(SM_CYFULLSCREEN);通过上边两个函数获取的是显示屏幕的大小,及不包括任务栏等区域。 int   cx   =   GetSystemMetrics(SM_CXSCREEN );   int   cy   =   Ge

Persistence Produces Miracles 898

长短期记忆网络(Long Short-Term Memory networks, LSTM)

如何简单的理解LSTM——其实没有那么复杂:

weixin_39910711的博客 2万+

获得屏幕大小

API: 要取得屏幕大小,可以用下面几个函数: int cx =GetSystemMetrics(SM_CXFULLSCREEN);int cy =GetSystemMetrics(SM_CYFULLSCREEN); 通过上边两个函数获取的是显示屏幕的大小,但不包括任务栏等区域。 int cx= GetSystemMet...

403

Cadence 17.2 OrCAD原理图库实战:从零创建电阻/电容/LED元件(附封装技巧)

本文以Cadence 17.2 OrCAD为核心,详细讲解了如何从零开始工程化地创建电阻、电容、LED等原理图库元件。内容涵盖库架构设计、符号绘制、引脚属性管理、封装关联技巧以及设计规则检查,旨在帮助硬件工程师构建规范、可复用且易于维护的元件库,为高效PCB设计奠定坚实基础。

weixin_29195615的博客 399

1.Fay-UE5数字人工程导入(UE数字人系统教程)

ue5数字人系列教程(含源文件工程)

1万+

GetSystemMetrics()函数的用法

可以用GetSystemMetrics函数可以获取系统分辨率,但这只是其功能之一,GetSystemMetrics函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。为了使使GetSystemMetrics的功能,我们以获取系统分辨率为例,并将其中的两个值用TextOut输出到窗体中。第一步:用GetSystemMetrics获取屏幕的宽度和高度int x, y; x = GetSystemMetrics(SM_C

YanJinrong的专栏 1037

值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏)

这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。

yue_yun_的博客 9375

c++获取屏幕大小

//以下两个函数获取的是显示屏幕的大小,不包括任务栏等区域 int screenwidth=GetSystemMetrics(SM_CXFULLSCREEN); int screenheight=GetSystemMetrics(SM_CYFULLSCREEN); //以下两个函数获取的是真正屏幕的大小,即实际的大小 int screenwidth_real=GetSystemMetric

lixiaoguang20的博客 3168

关于海康MVS软件显示速率低与1GB、相机丢包的设置优化

工控机主要应用与视觉检测!相机网线及工控机网口都是千兆的!设置完巨帧数和速度与双工(选择为全双工),显示速度低与1GB,不能够正常工作。C.LA-Properdes-Advanced-将RecerveBuffers更改为2048。E.LAN-属性-电源管理-取消选中允许计算机关闭此设备以保存电源。这种情况均为MVS设置不熟悉,可参照如下设置优化相应端口相机配置。D.局域网-属性-高级-将传输缓冲区更改为20484。B.LAN-属性-高级-将中断记录部分更改为执行。A.关闭采集控制帧速率控制。

米可的博客! 8819

Android 14.0 首次开机默认授予app运行时权限(去掉运行时授权弹窗)

在14.0的系统rom产品定制化开发中,在6.0以后对于权限的申请,都需要动态申请,所以会在系统首次启动后,在app的首次运行时, 会弹出授权窗口,会让用户手动授予app运行时权限,在由于系统产品开发需要要求默认授予app运行时权限,不需要用户默认授予运行时弹窗,所以需要在首次开机默认授予所有app运行时权限

安卓兼职framework和app工程师的博客 2531

VC 实现 自绘 窗体 标题栏 非客户区

VC 实现 自绘 窗体 标题栏 非客户区

学习是遗忘的最好方法! 1436

基于STM32设计的智能防盗单车锁_349

本设计基于STM32F103RCT6单片机,研制了一种适用于户外环境的智能防盗单车锁系统。系统集成了GPS定位模块、ADXL345加速度传感器、4G通信模块(Air780E)、OLED显示屏、继电器模拟锁控模块等硬件,通过姿态感知实现车辆异常移动检测,在锁车状态下自动触发蜂鸣器报警并通过短信与APP通知用户。

864

界面编程:VC实现自绘窗体标题栏非客户区

本程序在VC03测试成功,效果, 图片素材:从BC1.bmp到第2页的UR_N.bmp 1.准备工作: (1)得到文件夹中的位图句柄: 首先要准备相应图片。 HBITMAP bitmap; bitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),     "skin//Test.bmp",     IMAGE_BITMAP

ccx_john的专栏 1638

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

CFormView动态调整对话框的尺寸和调整比例控制的部署

基于单个文件CFormView动态调整对话框的尺寸和调整比例控制的部署 假设你正在开发一个程序基于单个文件,使用CFormView基类来实现多种形式展示,那么,这个文件可能会给你一点帮助。 一、实现对话框填充客户区 当我们加入了资源对话框时,它的尺寸在客户区显示时是不会随着窗体的大小调整的。当框架尺寸小于它的尺寸时,还出现了滚动栏。操作麻烦同一时候视觉效果也不良好。 思路 依据客...

weixin_34248487的博客 471

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Window窗体

Window、UserControl(用户控件,布局的时候想像窗体那样布局就可以了)、Page把窗体以网页形式展现 而一个XAML页面里面只能有一个顶级元素,而顶级元素里面只能有一个子元素。因此要有布局控件

weixin_49756484的博客 235

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# WinForm窗体及其控件的自适应

C# WinForm窗体及其控件自适应各种屏幕分辨率 一。说明   我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可。因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标。   在这里我们只考虑相对于自己窗体的窗口坐标

lcydhr的专栏 706

C#开发窗体程序全过程(项目目录、格式、控件使用、文件读写)

目录第一章:WinForm基础一、概述二、在VS中新建窗体程序三、窗体(Form)第二章(上):控件与窗体一、文本编辑控件二、图片框:PictureBox三、定时器:Timer第二章(下):继续控件一、选择控件二、列表控件三、菜单栏和快捷菜单四、多窗体的实现(重点、难点)第三章:文件的读写一、概述二、文件的读取(StreamReader)三、文件的写入(StreamWriter)四、快速文件操作第...

文武傲群雄,彳亍定江山 7706

MFC实战:如何彻底隐藏窗体菜单栏、工具栏和状态栏(附完整代码)

本文详细介绍了如何在MFC应用中彻底隐藏窗体菜单栏、工具栏和状态栏,提供完整代码实现和核心原理分析。通过ModifyStyle函数调整窗口样式,实现专业级无干扰界面,适用于工业控制、医疗影像等场景,帮助开发者打造高度定制化的用户界面。

weixin_30335575的博客 456

C# WinForm窗体及其控件自适应各种屏幕分辨率

C# WinForm窗体及其控件自适应各种屏幕分辨率 一。说明  我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可。因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标。  在这里我们只考虑相对于自己窗体的窗口坐标更...

weixin_30381793的博客 123
上一篇: 根据一个bmp话柄生成bmp文件
下一篇: C编译过程以及gcc编译参数
长门_Pefect
博客等级 码龄11年 38粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值