Win32 SDK程序中拖动Thin边框窗口来改变窗口大小

WIN32无边框透明窗体+无标题移动窗口 用windows API注册生成的窗口类,能实现窗口的透明,无边框以及窗口的移动,该CPP文件直接在VC中新建一个空的WIN32应用程序就行 立即下载
主要需要添加处理WM_NCHITTEST,WM_SETCURSOR和WM_NCLBUTTONDOWN消息
case WM_NCHITTEST:
            POINT point;
            point.x = LOWORD(lParam);
            point.y = HIWORD(lParam);
            RECT rect;        
            GetWindowRect(hWnd,&rect);
            if(point.x <= rect.left+5)
            {
                 return HTLEFT;
            }
            else if(point.x >= rect.right-5)
            {
                return HTRIGHT;
            }
            else if(point.y <= rect.top+5)
            {    
                return HTTOP;
            }
            else if(point.y >= rect.bottom-5)
            {
                return HTBOTTOM;
            }
            else if(point.x <= rect.left+10 && point.y <= rect.top+10)
            {
                return HTTOPLEFT;
            }
            else if(point.x >= rect.right-10 && point.y <= rect.top+10)
            {
                return HTTOPRIGHT;
            }
            else if(point.x <= rect.left+10 && point.y >= rect.bottom-10)
            {
                return HTBOTTOMLEFT;
            }
            else if(point.x >= rect.right-10 && point.y >= rect.bottom-10)
            {
                return HTBOTTOMRIGHT;
            }
            return ::DefWindowProc(hWnd, message, wParam, lParam);

        case WM_SETCURSOR:
            {
                UINT nHitTest = LOWORD(lParam);
                switch(nHitTest)
                {
                case HTTOP:
                case HTBOTTOM:
                    SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENS)));
                    break;
                case HTLEFT:
                case HTRIGHT:
                    SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE)));
                    break;
                case HTTOPLEFT:
                case HTBOTTOMRIGHT:
                    SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE)));
                    break;
                case HTTOPRIGHT:
                case HTBOTTOMLEFT:
                    SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENESW)));
                    break;
                case HTCAPTION:
                case HTSYSMENU:
                case HTMENU:
                case HTCLIENT:
                default:
                    SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
                    break;
                }
            }
            return TRUE;

        case WM_NCLBUTTONDOWN:
            switch(wParam)
            {
            case HTTOP:
                SendMessage(hWnd, WM_SYSCOMMAND, SC_SIZE | WMSZ_TOP, lParam);
                break;
            case HTBOTTOM:
                SendMessage(hWnd, WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOM, lParam);
                break;
            case HTLEFT:
                SendMessage(hWnd, WM_SYSCOMMAND, SC_SIZE | WMSZ_LEFT, lParam);
                break;
            case HTRIGHT:
                SendMessage(hWnd, WM_SYSCOMMAND, SC_SIZE | WMSZ_RIGHT, lParam);
                break;
            case HTTOPLEFT:
                SendMessage(hWnd, WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPLEFT, lParam);
                break;
            case HTTOPRIGHT:
                SendMessage(hWnd, WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPRIGHT, lParam);
                break;
            case HTBOTTOMLEFT:
                SendMessage(hWnd, WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMLEFT, lParam);
                break;
            case HTBOTTOMRIGHT:
                SendMessage(hWnd, WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMRIGHT, lParam);
                break;
            default:
                break;
            }
            return DefWindowProc(hWnd, message, wParam, lParam);


win32随鼠标移动子窗口 纯win32API开发的窗口程序,鼠标在子窗口上的时候可以按住左键不放拖动子窗口 立即下载

相关推荐

Halcon实战:5种边缘检测算子对比(Sobel、Roberts、Prewitt、Kirsch、Canny)

本文深入对比了Halcon中Sobel、Roberts、Prewitt、Kirsch和Canny五大边缘检测算子的实战表现与核心差异。通过工业图像实例与代码解析,提供了基于噪声水平、边缘连续性及实时性要求的场景化选型指南,帮助工程师精准选择最适合的算子以优化视觉检测流程。

weixin_29266007的博客 391

怎么改变窗口大小_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的博客 1917

天融信防火墙NGFW4000(TG-4628)安装配置笔记

配置一台全新的天融信防火墙NGFW4000,配置完后,内网用户10.10.1.0/24和10.10.2.0/24可以通过防火墙上网,外网用户可以通过访问防火墙的外网接口地址来访问内网的WEB服务器10.10.1.200,并且内网用户也可以通过WEB服务器的外网地址进行访问。 网络说明: 防火墙外网接口地址:218.90.123.121/30 防火墙内网接口地址:19...

weixin_33671935的博客 4454

Win32无边框窗口实现拖动和改变大小

#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("NoBorderWnd"); HWND hwnd; MSG .

csdn_gddf102384398的博客 3113

从TL431光耦到集成隔离器:3种反激电源反馈方案全对比,你的项目到底该选哪个?

本文深入对比了反激电源设计中TL431光耦、集成隔离器和原边反馈三种主流反馈方案的优缺点,帮助开发者在电源设计中选择最适合的方案。从精度、成本、隔离等级等多维度分析,为反激式(Flyback)拓扑的应用提供实用选型指南。

weixin_30536513的博客 399

Spark数据倾斜问题+解决方案

1、数据倾斜 数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于 其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈 数据倾斜俩大直接致命后果 1)数据倾斜直接会导致一种情况:Out Of Memory 2)运行速度慢 主要是发生在Shuffle阶段。同样Key的数据条数太多了。导致了某个key(下图中的80亿条)所在的Task数 据量太大了。远远超过其他Task所处理的数据量 一个经验结论是:一般情况下,OOM的原因都是数据倾斜 2、如

诸葛搏毅 6768

纯win32api实现窗口分隔符拖动spiltter,实现左右上下窗口的鼠标拖动改变大小

先使用vs2015创建一个默认win32工程,默认使用的是c++, 如果想只用单一c文件,需要修改部分代码 由于有预编译头,所以头文件在stdafx.h 内 GET_Y_LPARAM获取鼠标y位置,适合多屏显示时正确获取位置,需要头文件 windowsx.h // Win32test2.cpp : 定义应用程序的入口点。 // #include &quot;stdafx.h&quot; #include &quot;Win3...

老专家的博客 2161

Arduino智能小灯DIY:人体感应+光线感应+蓝牙控制全攻略(附完整代码)

本文提供了一份完整的Arduino智能小灯DIY制作指南。项目融合了人体感应、光线感应与蓝牙控制三大功能,通过详细的硬件清单、电路连接图、核心逻辑讲解及附带的完整代码,手把手教你打造一个能自动感知环境与人、并支持手机远程控制的智能照明装置,是入门智能家居和物联网开发的绝佳实践。

java5的博客 1094

win32拆分窗口

Win32 SDK 拆分窗口。 Win32 SDK 拆分窗口。2009-06-30 22:55 没有提供现成的窗口拆分器,实现起来也不难,下面这个例子把窗口拆分成了三个部分。 // splitter.h #include #include #include // splitter.cpp #include "splitter.h" HWND    h

SUN_DRAGON的专栏 1816

OpenAI Function Calling 实战:让 Agent 自动调用外部 API 接口

在 2023 年 6 月之前,大语言模型(LLM)的能力边界是清晰的:它能说会道,能写诗作赋,也能帮你润色文案。但如果你问它"北京现在天气怎么样",它要么答不上来,要么基于过时的训练数据给你一个错误答案。原因很简单——LLM 的训练数据是有截止日期的,它活在"过去"。2023 年 6 月,OpenAI 在 GPT-4 的更新中引入了 Function Calling 功能,彻底改变了这一局面。Function Calling(也叫 Tool Use 或工具调用)是一种让 LLM 与外部系统交互的机制。

2201_76125393的博客 86

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

背景模糊 是一个很实用的功能,它可以帮助游戏在视觉上有更好的专注力和表现力。 实现模糊的种类和方式有很多种,大家自行选择适合自己的就可以了。 下面一起来看下本文实现背景模糊的效果和使用方式吧!

努力前行,总会成为自己心中的那道光 4万+

WIN32无标题栏窗口移动方法种种

首先,看看在正常情况下系统是怎样来移动程序窗口的。当使用者在程序窗口标题栏区域(非工作区)内,按下鼠标左键时将会发生下列事情:  ◆ 系统向该窗口过程函数发送WM_NCLBUTTONDOWN消息。  ◆ WM_NCLBUTTONDOWN消息最终将传送到窗口过程函数中的DefWindowProc()函数中去。  ◆ DefWindowProc()函数将根据鼠标左键按下并移动,以及HTCAPTI

郁中道 3381

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

win32强化练习3.7_拖动窗口

只有进行过充分的练习,才能够真正掌握一门技能!通过进行或单项或综合的知识点强化训练,巩固和提高自己的windows程序设计的技能水平!

AouSdu 748

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WIN32无边框窗体的缩放、移动与WM_NCHITTEST消息&&UpdateLayeredWindow重要心得

一、WM_NCHITTEST消息 MSDN对它的解释是: The WM_NCHITTEST message is sent to a window when the cursor moves, or when a mouse button is pressed or released. If the mouse is not captured, the message is sent to

启舰 2万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

win32限制窗口在桌面上的移动范围

RECT rcClip = {100,100,1000,500}; // new area for ClipCursor RECT rcOldClip; // previous area for ClipCursor //////////////////////////////////////////////////////////////////////////

fishion的专栏 2453

拖动windows窗口

拖动windows窗口,采用自己编写WM_LButtonDown, WM_MOUSEMOVE, WM_LButtonUp来进行窗口拖动,非常麻烦也很容易出现问题。 Windows系统本身就自带了这些消息,只是需要找到这些消息,然后发送就可以了。 一般的Button控件是将WM_LBUTTONDOWN和WM_MOUSEMOVE以及WM_LBUTTONUP消息转换为对应的NC消息,即N...

weixin_30625691的博客 236

Win32_SDK_模态对话框(拖拽文件消息与常见的窗口属性_自定义按键_模拟登录界面)

文章目录1.基本设置 模态对话框与普通对话框: 普通对话框必须先处理对话框 1.基本设置 1.新建模态对话框资源 2.Win32大图标是指按下ALT+TABLE后窗口图标 3.Win32小图标是指应用窗口的图标 4.响应文件拖拽消息时要开启对话框的可接受文件 5.设置顶层窗口 设置好后窗口将会始终在顶层。 6.设置窗口透明度 SetLayeredWindowAttributes(hWnd, RGB(255, 0, 0), 125, LWA_ALPHA);//0是全透明,255为不透明,LWA

dodamce的博客 1716

0096__win32 | 无标题栏&点击拖动窗口

win32 | 无标题栏&点击拖动窗口 - Mz1 - 博客园

行潇 198

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

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

u011393161的博客 4554

Win32无边框窗体拖动、改变大小(WM_SYSCOMMAND方式)

Win32无边框窗体拖动、改变大小(WM_SYSCOMMAND方式)拖动改变大小 拖动 对于win32无边框窗体的拖动功能,网上一般找到的是通过:MoveWindow 函数实现。当然,也能搜出另一种更好的实现, 通过: SendMessage(hwnd,WM_SYSCOMMAND,SC_MOVE|HTCAPTION,0); 实现。相比于第一种,第二种更加友好,因为它能响应windows的手势操作(...

hhhhhhhhhhkkkkkkkkkk的专栏 4840

MFC对话框Border类型(None、Thin、Resizing、Dialog Frame)对应的部分属性

在运行中转换对话框类型需要用到的属性 Dialog Frame WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_CLIPSIBLINGS | DS_MODALFRAME WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE Thin 比Dialog Frame缺少一个扩展属性WS_EX_DLGMODALFRAME None 比D...

槑宝包 2059
上一篇: 初始化隐藏对话框程序
下一篇: CComboBox控件的下拉列表框,用鼠标在该ListBox上滑动的时候显示出当前具有focus的item项的索引
Eleven
博客等级 码龄19年 4918粉丝 75原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值