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渣美化图文】你的窗体有多扁?


相关文章
VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体-57
VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体-57
VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体
VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体
146 0
VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体
|
XML 程序员 C语言
Qt编写控件属性设计器2-拖曳控件
一、前言 上一篇文章把插件加载好了,并且把插件中的所有控件都显示到了列表框中,这次要做的就是实现拖曳控件的功能,用户选择一个控件拖曳到画布上,松开,在松开位置处自动实例化该控件,这个需要用到dropEvent和dragEnterEvent事件,重新实现这两个事件,对拖曳的对象进行过滤并调用函数实例化该控件,在实例化该控件的同时实例化控件跟随控件以便拉伸调整大小和位置。
876 0
|
程序员 C语言
Qt编写自定义控件48-面板窗体控件
一、前言 很多时候需要有一个控件,能够替代容器控件,自动容纳多个widget,自适应宽高,然后提供滚动条功能,这就必然需要用到QScrollArea控件,可设置各个子面板的间距等,也在很多系统中用到,比如温湿度设备面板,有几百个温湿度设备,需要一个容器放置,自动产生滚动条,可以设置面板的固定宽高或者自适应拉伸,其实就是放了表格布局+弹簧来设置。
1237 0
Qt编写自定义控件27-颜色按钮面板
一、前言 颜色按钮面板主要用在提供一个颜色按钮面板,用户单击某个按钮,然后拿到对应的颜色值,用户可以预先设定常用的颜色集合,传入到控件中,自动生成面板颜色集合按钮,每当滑过按钮的时候,按钮边缘高亮提示当前所在颜色的按钮,当选中某个按钮时,右侧颜色条显示当前选中的颜色,此控件功能极其简单,直接采用动态生成按钮的方式,设置按钮的样式表来设置对应的颜色和高亮边框等,单击按钮发出颜色改变信号即可,对外提供该信号就行,非常适合初学者学习。
1023 0
|
C#
自定义WPF 窗口样式
原文:自定义WPF 窗口样式 自定义 Window 在客户端程序中,经常需要用到自定义一个 Window ,大部分是为了好看吧。
1289 0
|
C#
WPF 自定义窗口关闭按钮
原文:WPF 自定义窗口关闭按钮 关闭图标设计主要涉及主要知识点: 1、Path,通过Path来画线。当然一般水平、竖直也是可以用Rectangle/Border之类的替代      一些简单的线条图标用Path来做,还是很方便的。
1151 0
|
C#
WPF窗体隐藏鼠标光标的方法
原文:WPF窗体隐藏鼠标光标的方法 要引用 System.Windows.Input;   Mouse.OverrideCursor = Cursors.
1569 0