首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 操作系统-> 注册表教程
操作vb中的无边框窗体_visualbasic教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
在VB中,BorderStyle属性为0的窗体没有边框,并且也没有与边框相关的元素。这种窗体具有简洁、占用空间少等优点,用它可以设计出某些富有个性的窗体。但是,由于它没有标题栏,窗体不能移动,同时也不能改变大小,在某些情况下会给使用者造成一定的麻烦。本文介绍在VB中如何用API函数操作无边框窗体。

移动窗体

新建一标准工程,设置Form1的BorderStyle属性为0。此时运行程序后,无法移动窗体。为能移动窗体,在Form1的代码窗口声明下列函数和常数:

OptionExplicit

PrivateDeclareFunctionReleaseCaptureLib“user32”()AsLong

PrivateDeclareFunctionSendMessageLib“user32”Alias“SendMessageA”(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong

ConstWM_SYSCOMMAND=&H112

ConstSC_MOVE=&HF012

在Form_MouseDown事件中输入以下代码:

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

按下鼠标左键

IfButton=vbLeftButtonThen

为当前的应用程序释放鼠标捕获

ReleaseCapture

移动窗体

SendMessageMe.hwnd,WM_SYSCOMMAND,SC_MOVE,0

EndIf

EndSub

注意:此时窗体上不能放置除Shape控件以外的任何控件,否则,在被控件遮住的地方点按鼠标还是无法移动窗体。要使点按控件也能移动窗体,需再添加一个该控件的MouseDown事件过程,代码与上述过程代码相似。

改变窗体的大小

为了改变窗体的大小,需要添加一个Timer控件,以定时捕获鼠标在窗体中的位置。当鼠标位于窗体边缘时,改变鼠标的形状,以通知用户可以进行改变大小的操作。为此,将Timer控件的Interval属性设为100(即每过100毫秒检测一下鼠标位置),其他取默认值。

在Form1的代码窗口中再添加下列两个函数,并定义两个自定义变量和一个字符串变量:

取得窗体位置的函数

PrivateDeclareFunctionGetWindowRectLib“user32”(ByValhwndAsLong,lpRectAsRECT)AsLong

取得鼠标位置的函数

PrivateDeclareFunctionGetCursorPosLib“user32”(lpPointAsPOINTAPI)AsLong

鼠标位置变量

PrivateTypePOINTAPI

xAsLong

yAsLong

EndType

窗体位置变量

PrivateTypeRECT

LeftAsLong

TopAsLong

RightAsLong

BottomAsLong

EndType

所要执行的动作变量,是移动还是改变大小及从哪个方向改变大小

DimActionAsString

在Timer1控件的Timer事件过程中添加以下代码:

PrivateSubTimer1_Timer()

DimMyRectAsRECT

DimMyPointAsPOINTAPI

MyRect返回当前窗口位置

CallGetWindowRect(Me.hwnd,MyRect)

MyPoint返回当前鼠标位置

CallGetCursorPos(MyPoint)

SelectCaseTrue

鼠标位于窗体左上方

CaseMyPoint.x<MyRect.Left+5AndMyPoint.y<MyRect.Top+5

Screen.MousePointer=vbSizeNWSE

Action=“LeftUp”

鼠标位于窗体右下方

CaseMyPoint.x>MyRect.Right-5AndMyPoint.y>MyRect.Bottom-5

Screen.MousePointer=vbSizeNWSE

Action=“RightDown”

鼠标位于窗体右上方

CaseMyPoint.x>MyRect.Right-5AndMyPoint.y<MyRect.Top+5

45度双向鼠标指针

Screen.MousePointer=vbSizeNESW

Action=“RightUp”

鼠标位于窗体左下方

CaseMyPoint.x<MyRect.Left+5AndMyPoint.y>MyRect.Bottom-5

Screen.MousePointer=vbSizeNESW

Action=“LeftDown”

鼠标位于窗体左边

CaseMyPoint.x<MyRect.Left+5

水平双向鼠标指针

Screen.MousePointer=vbSizeWE

Action=“Left”

鼠标位于窗体右边

CaseMyPoint.x>MyRect.Right-5

Screen.MousePointer=vbSizeWE

Action=“Right”

鼠标位于窗体上方

CaseMyPoint.y<MyRect.Top+5

垂直双向鼠标指针

Screen.MousePointer=vbSizeNS

Action=“Up”

鼠标位于窗体下方

CaseMyPoint.y>MyRect.Bottom-5

Screen.MousePointer=vbSizeNS

Action=“Down”

鼠标位于窗体其他位置

CaseElse

默认鼠标指针

Screen.MousePointer=0

Action=“Move”

EndSelect

EndSub

当利用SendMessage函数由系统向窗口发送改变大小的信息时,只要将上面移动窗体的语句“SendMessageMe.hwnd,WM_SYSCOMMAND,SC_MOVE,0”中的第3个参数改为相应的常数即可。

VB中&HF001~&HF008分别是从左、右、上、左上、右上、下、左下、右下8个方向改变窗体大小的常数。结合移动窗体的代码,将上述Form_MouseDown事件的代码综合如下(也可以把这8个常数声明为自定义常数):

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

按下鼠标左键

IfButton=vbLeftButtonThen

为当前的应用程序释放鼠标捕获

ReleaseCapture

SelectCaseAction

Case“Left”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF001,0

Case“Right”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF002,0

Case“Up”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF003,0

Case“LeftUp”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF004,0

Case“RightUp”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF005,0

Case“Down”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF006,0

Case“LeftDown”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF007,0

Case“RightDown”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF008,0

Case“Move”

SendMessageMe.hwnd,WM_SYSCOMMAND,SC_MOVE,0

EndSelect

EndIf

EndSub

->


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·更改internet explorer的图标
·C#中的类型转换-.NET教程,C#语言
·找回flash的序列号sn
·更改ie的图标
·如何让你的VB6 IDE支持鼠标滚轮(过程)-.NET教程,VB.Net语言
·正则表达式Replace-.NET教程,Asp.Net开发
·Windows 2003下不注册组件用ASP发邮件-ASP教程,邮件相关
·防止ie被恶意修改的初级技巧
·asp.net实现分组全选部分复选框-ASP教程,ASP应用
·清理ie网址列表
最新文章
·seo新手教程:title的写法_seo网站优化
·从注册表下手 切断一切黑客入侵的路径_注册表教程
·用flash 8 as代码写摄像头拍照功能_flash教程
·小站长赚钱思路:ip不到1000,一个月赚940元_网赚技巧
·陈艺光:网络游戏平台与游戏网站实现共赢_站长访谈
·留住访客 如何最优化设计网站的首页?(2)_站长心得
·为什么在google上搜不到我的网页?_google推广
·google的秘密 搜索引擎利用软件的魔力加快奔跑_google推广
·域名与网站排名_站长心得
·怎样避免被搜索引擎视为作弊_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭