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);相关推荐
Halcon实战:5种边缘检测算子对比(Sobel、Roberts、Prewitt、Kirsch、Canny)
本文深入对比了Halcon中Sobel、Roberts、Prewitt、Kirsch和Canny五大边缘检测算子的实战表现与核心差异。通过工业图像实例与代码解析,提供了基于噪声水平、边缘连续性及实时性要求的场景化选型指南,帮助工程师精准选择最适合的算子以优化视觉检测流程。
怎么改变窗口大小_Win32 限制子窗口的最小尺寸
创建子窗口时的消息LRESULT CALLBACK WndProc(HWND hwnd, UINT message/*窗口消息*/, WPARAM wParam, LPARAM lParam) { printf("%x n",message); switch (message) { case WM_CREATE: { // } break; default:...
天融信防火墙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...
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 .
从TL431光耦到集成隔离器:3种反激电源反馈方案全对比,你的项目到底该选哪个?
本文深入对比了反激电源设计中TL431光耦、集成隔离器和原边反馈三种主流反馈方案的优缺点,帮助开发者在电源设计中选择最适合的方案。从精度、成本、隔离等级等多维度分析,为反激式(Flyback)拓扑的应用提供实用选型指南。
Spark数据倾斜问题+解决方案
1、数据倾斜 数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于 其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈 数据倾斜俩大直接致命后果 1)数据倾斜直接会导致一种情况:Out Of Memory 2)运行速度慢 主要是发生在Shuffle阶段。同样Key的数据条数太多了。导致了某个key(下图中的80亿条)所在的Task数 据量太大了。远远超过其他Task所处理的数据量 一个经验结论是:一般情况下,OOM的原因都是数据倾斜 2、如
纯win32api实现窗口分隔符拖动spiltter,实现左右上下窗口的鼠标拖动改变大小
先使用vs2015创建一个默认win32工程,默认使用的是c++, 如果想只用单一c文件,需要修改部分代码 由于有预编译头,所以头文件在stdafx.h 内 GET_Y_LPARAM获取鼠标y位置,适合多屏显示时正确获取位置,需要头文件 windowsx.h // Win32test2.cpp : 定义应用程序的入口点。 // #include "stdafx.h" #include "Win3...
Arduino智能小灯DIY:人体感应+光线感应+蓝牙控制全攻略(附完整代码)
本文提供了一份完整的Arduino智能小灯DIY制作指南。项目融合了人体感应、光线感应与蓝牙控制三大功能,通过详细的硬件清单、电路连接图、核心逻辑讲解及附带的完整代码,手把手教你打造一个能自动感知环境与人、并支持手机远程控制的智能照明装置,是入门智能家居和物联网开发的绝佳实践。
win32拆分窗口
Win32 SDK 拆分窗口。 Win32 SDK 拆分窗口。2009-06-30 22:55 没有提供现成的窗口拆分器,实现起来也不难,下面这个例子把窗口拆分成了三个部分。 // splitter.h #include #include #include // splitter.cpp #include "splitter.h" HWND h
OpenAI Function Calling 实战:让 Agent 自动调用外部 API 接口
在 2023 年 6 月之前,大语言模型(LLM)的能力边界是清晰的:它能说会道,能写诗作赋,也能帮你润色文案。但如果你问它"北京现在天气怎么样",它要么答不上来,要么基于过时的训练数据给你一个错误答案。原因很简单——LLM 的训练数据是有截止日期的,它活在"过去"。2023 年 6 月,OpenAI 在 GPT-4 的更新中引入了 Function Calling 功能,彻底改变了这一局面。Function Calling(也叫 Tool Use 或工具调用)是一种让 LLM 与外部系统交互的机制。
【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用
背景模糊 是一个很实用的功能,它可以帮助游戏在视觉上有更好的专注力和表现力。 实现模糊的种类和方式有很多种,大家自行选择适合自己的就可以了。 下面一起来看下本文实现背景模糊的效果和使用方式吧!
WIN32无标题栏窗口移动方法种种
首先,看看在正常情况下系统是怎样来移动程序窗口的。当使用者在程序窗口标题栏区域(非工作区)内,按下鼠标左键时将会发生下列事情: ◆ 系统向该窗口过程函数发送WM_NCLBUTTONDOWN消息。 ◆ WM_NCLBUTTONDOWN消息最终将传送到窗口过程函数中的DefWindowProc()函数中去。 ◆ DefWindowProc()函数将根据鼠标左键按下并移动,以及HTCAPTI
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
win32强化练习3.7_拖动窗口
只有进行过充分的练习,才能够真正掌握一门技能!通过进行或单项或综合的知识点强化训练,巩固和提高自己的windows程序设计的技能水平!
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 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
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
win32限制窗口在桌面上的移动范围
RECT rcClip = {100,100,1000,500}; // new area for ClipCursor RECT rcOldClip; // previous area for ClipCursor //////////////////////////////////////////////////////////////////////////
拖动windows窗口
拖动windows窗口,采用自己编写WM_LButtonDown, WM_MOUSEMOVE, WM_LButtonUp来进行窗口拖动,非常麻烦也很容易出现问题。 Windows系统本身就自带了这些消息,只是需要找到这些消息,然后发送就可以了。 一般的Button控件是将WM_LBUTTONDOWN和WM_MOUSEMOVE以及WM_LBUTTONUP消息转换为对应的NC消息,即N...
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
0096__win32 | 无标题栏&点击拖动窗口
win32 | 无标题栏&点击拖动窗口 - Mz1 - 博客园
win32窗口的大小,居中,拖动
参考 https://www.cnblogs.com/findumars/p/3948315.html 不让调整大小 窗口风格设置,后面两个是最大最小化按钮 dwStyle^WS_THICKFRAME^WS_MAXIMIZEBOX^WS_MINIMIZEBOX 不让拖动 消息循环里添加 case WM_NCLBUTTONDOWN: { switch (...
Win32无边框窗体拖动、改变大小(WM_SYSCOMMAND方式)
Win32无边框窗体拖动、改变大小(WM_SYSCOMMAND方式)拖动改变大小 拖动 对于win32无边框窗体的拖动功能,网上一般找到的是通过:MoveWindow 函数实现。当然,也能搜出另一种更好的实现, 通过: SendMessage(hwnd,WM_SYSCOMMAND,SC_MOVE|HTCAPTION,0); 实现。相比于第一种,第二种更加友好,因为它能响应windows的手势操作(...
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...
391



被折叠的 条评论
为什么被折叠?



