win32窗口的大小,居中,拖动

win32实现两个透明窗口联动 win32实现两个透明窗口联动 在上一篇博客中,我已经完成了一个对某个颜色值透明的win32窗口,存在一个很大的缺陷:透明部分是无法响应鼠标消息的,这就导致窗口无法拖动。在查阅了大量资料也没有发现详细的解决方法后,决定记载一下我的解决方法。 阅读详情

参考
https://www.cnblogs.com/findumars/p/3948315.html

不让调整大小

窗口风格设置,后面两个是最大最小化按钮
dwStyle^WS_THICKFRAME^WS_MAXIMIZEBOX^WS_MINIMIZEBOX

不让拖动

消息循环里添加

case WM_NCLBUTTONDOWN:
    {
        switch (wParam)
        {
        case HTCAPTION:
            return 0;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
    }
    break;

窗口居中显示

1.设置窗口位置和大小

SetWindowPos(
    hWnd: HWND; 窗口句柄
    hWndInsertAfter: HWND或者一个UNIT; 窗口的 Z 顺序
    X, Y: Integer; 位置
    cx, cy: Integer; 大小
    uFlags: UINT 选项
): BOOL;

//hWndInsertAfter 参数可选值:
HWND_TOP = 0; 在前面,能用TOP就不要用TOPMOST,TOPMOST即使是不激活状态也会挡住别的激活的窗口
HWND_BOTTOM = 1; 在后面
HWND_TOPMOST = HWND(-1); 在前面, 位于任何顶部窗口的前面
HWND_NOTOPMOST = HWND(-2); 在前面, 位于其他顶部窗口的后面

//uFlags 参数可选值:
SWP_NOSIZE = 1; 忽略cx、cy,保持大小
SWP_NOMOVE = 2; 忽略X、Y,不改变位置
SWP_NOZORDER = 4; 忽略hWndInsertAfter,保持Z顺序
SWP_NOREDRAW = 8; 不重绘
SWP_NOACTIVATE = 0x10; 不激活
SWP_FRAMECHANGED = 0x20; 强制发送WM_NCCALCSIZE消息,一般只是在改变大小时才发送此消息
SWP_SHOWWINDOW = 0x40; 显示窗口
SWP_HIDEWINDOW = 0x80; 隐藏窗口
SWP_NOCOPYBITS = 0x100; 丢弃客户区
SWP_NOOWNERZORDER = 0x200; 忽略hWndInsertAfter,不改变Z序列的所有者
SWP_NOSENDCHANGING = 0x400; 不发出WM_WINDOWPOSCHANGING消息
SWP_DRAWFRAME = SWP_FRAMECHANGED; 画边框
SWP_NOREPOSITION = SWP_NOOWNERZORDER;
SWP_DEFERERASE = 0x2000; 防止产生WM_SYNCPAINT消息
SWP_ASYNCWINDOWPOS = 0x4000; 若调用进程不拥有窗口,系统会向拥有窗口的线程发出需求

2.获取窗口位置和大小

GetWindowRect(HWND hWnd, LPRECT lpRect );//获得窗口相对屏幕的大小
GetClientRect(HWND hWnd, LPRECT lpRect );//获得窗口相对客户区的大小
GetSystemMetrics(SM_CXSCREEN);//获取屏幕大小
GetSystemMetrics(SM_CYSCREEN);
Visual C++ Win32 API编辑框控件开发:从消息机制到实战应用 在Windows桌面应用开发中,控件是构建用户界面的基础元素,而编辑框(Edit Control)作为最核心的输入控件,其实现原理涉及Windows消息驱动架构。通过Win32 API,开发者可以直接操作底层窗口系统,理解窗口过程、消息循环和控件通信机制。掌握编辑框的开发不仅能实现文本输入功能,更是深入理解Windows编程模型的关键。在实际工程中,编辑框常与按钮、对话框等控件协同工作,通过处理WM_COMMAND消息和EN_CHANGE等通知代码,实现实时数据验证、表单提交等交互逻辑。本文聚焦Visual 阅读详情

相关推荐

VC++实现跑马灯滚动字幕:Win32 API、GDI绘图与双缓冲技术详解

在Windows桌面应用开发中,图形设备接口(GDI)是进行图形绘制的基础技术,它允许程序在窗口上绘制文本、形状和图像。其核心原理是通过设备上下文(DC)与显示硬件交互,处理WM_PAINT消息进行绘制。这项技术的价值在于为开发者提供了底层的图形控制能力,是实现自定义UI和动态效果的关键。在信息展示、动画模拟等应用场景中,GDI常被用于实现如滚动字幕、图表绘制等功能。本文聚焦于利用Win32 API和GDI,结合定时器消息与双缓冲绘图技术,解决跑马灯滚动字幕开发中的闪烁问题与性能优化,为VC++桌面图形编程

weixin_34037515的博客 357

高仿QQ新闻右下角弹窗MFC/Win32

高仿QQ新闻右下角弹窗MFC/Win32版 详见http://blog.csdn.net/jackystudio/article/details/18032495

深入解析emWin FRAMEWIN控件:从双窗口架构到实战应用

在嵌入式GUI开发中,窗口管理是构建复杂用户界面的核心技术。其核心原理在于通过分层与消息传递机制,高效管理屏幕上的多个交互区域。emWin作为一款广泛应用于STM32、NXP等MCU的嵌入式图形库,其FRAMEWIN控件正是这一原理的经典实现。它采用独特的双窗口结构(框架窗口与客户窗口),实现了职责分离与高效的消息路由,为资源受限的嵌入式设备提供了稳定、灵活的窗口解决方案。通过深入理解其架构、掌握回调函数与所有者绘制等高级功能,开发者能够构建出从简单对话框到复杂多窗口应用的各种界面,显著提升嵌入式产品的交互

chuiqi9947的博客 329

win32调整客户区大小

**********************创建特定大小客户区的窗口************************************** 转自:win32 创建指定客户区大小窗口 | linux畅想 (lchx.me) RECT rect; rect.right = w; rect.bottom = h; rect.left = 0; rect.top = 0; AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, false); ......

LiSeaWave 2437

怎么改变窗口大小_Win32 限制子窗口的最小尺寸

创建子窗口时的消息LRESULT CALLBACK WndProc(HWND hwnd, UINT message/*窗口消息*/, WPARAM wParam, LPARAM lParam) { printf("%x n",message); switch (message) { case WM_CREATE: { // } break; default:...

weixin_39631370的博客 1911

win32窗口的一些风格

一、CreateWindowEx //创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口(控件) HWND CreateWindowEx( DWORD dwExStyle, //窗口的扩展风格 LPCTSTR lpClassName, //已经注册的窗口类名称 LPCTSTR lpWindowName, //窗口标题栏的名字...

fengruoying93的专栏 671

【转】win32窗口大小居中拖动

参考 https://www.cnblogs.com/findumars/p/3948315.html 不让调整大小 窗口风格设置,后面两个是最大最小化按钮 dwStyle^WS_THICKFRAME^WS_MAXIMIZEBOX^WS_MINIMIZEBOX 不让拖动 消息循环里添加 case WM_NCLBUTTONDOWN: { switch (wParam) { case HTCAPTION: return 0; ...

sinolover的专栏 1825

学习游戏基础编程2:Win32分割窗口

一直很不解分割窗口是什么原理。百度了老长时间发现这方面的资料甚少,但好歹也知道了个大概,今天就做个总结,免得到时候忘记。 当初很傻很天真的时候,真的以为简单只是把一个窗口像玻璃那样劈成2半,各做各的,其实是父窗口下有数个子窗口,父窗口被这些子窗口所遮挡,看起来就像是窗口分成好几个区域。因此第一步我们要创建好几个窗口,并调整好它们的位置。 HWND hwndMain;//主窗口HWND hwnd...

weixin_30861459的博客 268

第3章,[标签 Win32] :处理 WM_PRINT 消息

Windows 程序设计

2401_82825368的博客 869

win32gui获取当前所有窗口句柄_AE中展开所有图层的快捷键是?

项目窗口  新项目 Ctrl+Alt+N  打开项目 Ctrl+O  打开项目时只打开项目窗口 按住Shift键  打开上次打开的项目 Ctrl+Alt+Shift+P  保存项目 Ctrl+S  选择上一子项 上箭头  选择下一子项 下箭头  打开选择的素材项或合成图像 双击  在AE素材窗口中打开影片 Alt+双击  激活最近激活的合成图像 \  增加选择的子项到最近激活的合成图像中...

weixin_39995108的博客 335

SRWE 实时窗口编辑器:免费解锁运行中窗口的分辨率与样式,游戏截图从此效率翻倍

SRWE(Simple Runtime Window Editor,简单运行时窗口编辑器)是一款完全免费、开源的 Windows 窗口编辑工具。它最神奇的一点是:你可以在程序**正在运行**时,直接修改它的窗口尺寸、位置和边框样式,改动立刻生效——不需要重启程序,不需要翻找配置文件,更不需要任何破解手段。本文会从一个常见痛点讲起,带你从零上手,最后把热采样、假全屏、配置文件这些进阶玩法一次讲透。

gitblog_01041的博客 4

cocos2D-x在windows下实现隐藏默认标题栏,并实现拖动

COCOS2D是移动端开发游戏的免费引擎,功能非常强大,由于在移动端没有标题栏不存在问题,在windows下会有默认的标题栏,如果做得游戏为了在windows下也有统一的游戏风格,修改标题栏就必不可少。 1.隐藏标题栏 CCEGLView类中有一个获取窗口句柄的接口CCEGLView::sharedOpenGLView()->getgetHWnd();所以实现去掉标题栏非常简单, LONG

xpg4321的博客 1674

利用WPF创建含多种交互特性的无边框窗体

咳咳,标题一口气读下来确实有点累,让我先解释一下。另外文章底部有演示程序的下载。 本文介绍利用WPF创建一个含有以下特性的窗口: 有窗口阴影,比如QQ窗口外围只有几像素的阴影; 支持透明且无边框,为了自行美化窗口通常都会想到使用无边框窗口吧; 可正常最大化,WPF无边框窗口直接最大化会直接使窗口全屏即会将任务栏一并盖住; 窗口边缘改变窗口大小,可以拖动窗口边缘改变大...

weixin_30466953的博客 155

深入解析窗口系统:从核心架构到现代应用开发实践

在计算机图形用户界面中,窗口系统是连接用户与复杂软件的核心交互范式与技术基石。其原理基于受管理的独立绘图表面与消息循环机制,每个窗口都是一个拥有独立坐标、可接收输入与输出图形的隔离容器。这一设计带来了多任务并行处理的稳定性与灵活性,其技术价值在于通过窗口管理器与合成器的协同工作,实现了高效的图形渲染、图层混合与硬件加速,为流畅的动画与统一视觉效果提供了支撑。应用场景广泛覆盖了从传统桌面操作系统、移动端应用到新兴的车载与AR/VR界面。本文聚焦于窗口系统的核心架构,并深入探讨了在现代应用开发中,如何实现无边框

weixin_30699955的博客 414

Win32 GDI文本输出:TextOut与DrawText核心差异与应用场景详解

在Windows桌面应用开发中,图形设备接口(GDI)是实现文本渲染的基础技术。其核心原理是通过设备上下文(DC)将字符图形化输出到屏幕。TextOut和DrawText作为GDI文本输出的两个关键函数,分别代表了两种不同的技术范式:TextOut提供像素级精确控制,适用于需要动态定位的简单文本绘制;而DrawText则是一个智能排版引擎,支持自动换行、对齐和矩形区域布局,极大简化了复杂文本的显示逻辑。从技术价值看,理解两者的底层机制差异,能帮助开发者在性能、灵活性和代码可维护性之间做出最佳权衡。在实际应用

weixin_30721077的博客 311

NoFences 桌面分区工具入门:把乱糟糟的 Windows 图标装进一个个“收纳盒“

你有没有过这样的经历:为了找一个上周下载的 PDF,鼠标在满屏图标上来回扫了两遍,最后还是在搜索框里敲了文件名。据我自己的统计,这种"扫雷式找文件"每次至少要花掉 15 到 30 秒,一天反复十几次,一星期就是小半个小时的纯浪费。 NoFences 就是冲着这个痛点来的。它是一款开源免费的 Windows 桌面分区工具,把桌面图标按你的习惯收进若干半透明的"分区"里——游戏归游戏,工作归工作,壁

gitblog_00487的博客 195

VC++ MFC不规则窗体实战:气泡对话框实现与优化指南

在桌面应用开发中,用户界面(UI)的视觉体验直接影响软件的专业度和用户友好性。传统的矩形窗口虽然功能完整,但往往显得呆板。通过Windows GDI(图形设备接口)和窗口消息机制,开发者可以突破系统默认框架,实现不规则窗体,从而创建更具个性和吸引力的界面形态。这项技术的核心价值在于提升品牌辨识度和用户体验,尤其适用于需要突出显示或引导用户注意力的场景,如提示框、聊天窗口和新手引导。本文以经典的VC++ MFC框架为例,深入探讨实现气泡对话框这一具体应用。通过对比区域法和分层窗口法两种主流方案,详细解析了如何

weixin_34301132的博客 518

双屏DPI差异导致窗口错乱?Windows与Linux混合DPI配置全攻略

在计算机图形界面和多显示器应用中,DPI(每英寸像素点数)是决定显示清晰度和界面缩放的核心参数。其工作原理在于操作系统通过缩放因子,将逻辑分辨率映射到物理像素,以确保在不同像素密度的屏幕上获得一致的视觉尺寸。这项技术的价值在于支撑了从高分屏到普通屏的混合使用场景,是现代多屏办公和内容创作工作流的基石。当用户同时使用4K高分屏和1080P普通屏时,由于DPI缩放差异,常会遇到应用窗口在屏幕间拖拽时尺寸突变、内容模糊等“撕裂感”问题。本文聚焦于这一典型场景,深入剖析了其根源在于应用程序的DPI感知模式与系统、显

weixin_34126557的博客 308
上一篇: 1.整体结构
下一篇: win32踩坑记录
vzhufeng
博客等级 码龄13年 10粉丝 68原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值