VB编程:无标题栏窗体移动和自定义鼠标样式

简介: VB编程:无标题栏窗体移动和自定义鼠标样式

实现无边框效果:

窗体BorderStyle=0-None

图片框的BorderStyle=0-None


代码开始:

'---------实现移动无标题栏窗体API调用声明--------------------

Const HTCAPTION = 2

Const WM_NCLBUTTONDOWN = &HA1

Private Declare Function ReleaseCapture Lib "user32" () As Long

                        'ReleaseCapture释放鼠标捕获

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

                        'SendMessage向窗体传递消息

'-----------------------------------------------------------------


Private Sub Form_Load()

Picture1.MousePointer = 99    '设置鼠标样式为用户自定义

Picture1.MouseIcon = LoadPicture(App.Path & "\pen.ico")   '鼠标图标的路径

End Sub


Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

   If Button = 1 Then                '如果按下鼠标左键

       Dim ReturnVal As Long         '定义一个整型变量

       X = ReleaseCapture()          '释放鼠标捕获

       ReturnVal = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)

                                     '向窗体传递消息,实现窗体移动

   End If

End Sub


Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Picture1.Print

Picture1.Print

Picture1.Font = "华文行楷"

Picture1.FontSize = 20

Picture1.Print "               一封家书"

Picture1.Font = "宋体"

Picture1.FontSize = 10

Picture1.FontBold = False

Picture1.Print

Picture1.Print "                           独进青楼"

Picture1.Print

Picture1.Font = "华文行楷"

Picture1.FontSize = 16

Picture1.Print "                  情爱的xxx"

Picture1.Print

Picture1.Print "                  现在工作很忙吧?"

Picture1.Print

Picture1.Print "                  身体好吗?"

Picture1.Print

End Sub


关键说明:

1、开头那段代码看不懂?其实很简单,这个是API阅览器复制出来的,安装过vb6.0的电脑,可以右键打开VB6.0的安装位置,按如下路径查找就行:

Microsoft Visual Studio\COMMON\Tools\Winapi\APILOAD.EXE

打开之后依次点击:文件--》加载文本文件--》找到刚刚打开的路径文件夹Winapi,选中WIN32API.TXT,打开。

键入搜索:“ReleaseCapture”复制选定项里边的内容放到开头就可以了。(备注,此处需要删除里边的:Alias "ReleaseCapture",我百度过,知道上做出如下解释:一般的“第三方DLL文件”,都不会给你提供A版和W版的函数接口)

别忘了还有“SendMessage”这个可以直接复制过来用,不用做任何更改。

最开头的两句是Const函数定义的常量,为什么定义为这个数值,暂时没搞懂,如果有人懂,请留言指教,不胜感激。




2、Form_Load()这个过程其实可以省略,在Picture1属性中找到两个属性,设为相应的值即可。


     能阅读到这里你很棒了,为了让有幸来访的朋友容易研究这个效果,我把我做的程序打包上传至百度云,不知道会不会挂,挂了可以在博客下方留言,我发你邮箱。


链接:http://pan.baidu.com/s/1pLrTKWb 密码:1trm


之前在百度贴吧发现一个不错的帖子,是关于UI设计类的,可以一起参考一下:

原文链接:【UI渣美化图文】你的窗体有多扁?


相关文章
|
Java
Mac下安装JDK11(国内镜像)
Mac下安装JDK11(国内镜像)
7412 0
|
API C# Windows
Winform控件优化之无边框窗体及其拖动、调整大小和实现最大最小化关闭功能的自定义标题栏效果
Winform中实现无边框窗体只需要设置FormBorderStyle = FormBorderStyle.None,但是无边框下我们需要保留移动窗体、拖拽调整大小、自定义美观好看的标题栏等...
4774 0
Winform控件优化之无边框窗体及其拖动、调整大小和实现最大最小化关闭功能的自定义标题栏效果
|
12月前
|
机器学习/深度学习 算法 机器人
多代理强化学习综述:原理、算法与挑战
多代理强化学习是强化学习的一个子领域,专注于研究在共享环境中共存的多个学习代理的行为。每个代理都受其个体奖励驱动,采取行动以推进自身利益;在某些环境中,这些利益可能与其他代理的利益相冲突,从而产生复杂的群体动态。
695 5
|
前端开发 JavaScript 开发者
console.log()
【8月更文挑战第29天】
451 5
|
12月前
(7)Qt中的自定义槽(函数)
这篇文章介绍了在Qt中如何定义和使用自定义槽函数,包括类成员函数、静态类成员函数、全局函数和lambda表达式作为槽函数的示例,以及使用lambda表达式时的注意事项。
393 2
(7)Qt中的自定义槽(函数)
|
Serverless Python
如何根据身份证号码计算年龄-python
如何根据身份证号码计算年龄-python
553 3
|
数据可视化 程序员 Linux
小白安装labelimg常见问题及其原因(带知识点理解)
小白安装labelimg常见问题及其原因(带知识点理解)
|
SQL Python
[CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解
[CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解
1033 0
[CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解
|
安全 数据安全/隐私保护
一些常见的ip代理协议的类型有哪些?以及它们的特点?
代理服务器作为客户端和目标服务器间的中介,遵循HTTP、HTTPS、SOCKS5等协议。HTTP协议简单直接,HTTPS提供加密和身份验证,而SOCKS5更底层,采用二进制请求,提供更强的安全性。在性能和安全优先的情况下,SOCKS5是首选。
|
数据库 数据安全/隐私保护 数据库管理
基于SpringBoot+Vue企业oa管理系统(源码+部署说明+演示视频+源码介绍)(2)
基于SpringBoot+Vue企业oa管理系统(源码+部署说明+演示视频+源码介绍)
373 0