关于用VB做更漂亮的窗体的思考

原创 2004年07月31日 20:07:00

首先申明:以下纯属个人观点!

  近来VB版中有一部分人问关于界面的美化问题.其实作为一个菜鸟.我也无法提供很专业的代码给大家.想必大家对如下代码应该很熟悉吧!

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1
Private Declare Function ReleaseCapture Lib "user32" () As Long
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
Private Const WM_NCLBUTTONDOWN = &HA1
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
--------------------------------------------Private Sub Form_Load()
Me.BackColor = &HFF0000
Dim rtn As Long
    BorderStyler = 0
    rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
    rtn = rtn Or WS_EX_LAYERED
    SetWindowLong hwnd, GWL_EXSTYLE, rtn
    SetLayeredWindowAttributes hwnd, &HFF0000, 0, LWA_COLORKEY
End Sub

--------------------------------------------

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, 2, 0

End Sub

这是美化窗体的时候很好的办法,比用编程语句描述一个特殊形状的窗体要简单的多,只要选自己合意的图片即可!

我们都知道象PICTUREBOX,COMBOX,菜单,等等其实都是窗体.由此可以推出我们可以用替换法将其替换.当然这是我的设想了;毕竟我不是高手.

举个例子:

我想做一个图形化的按纽.那么我们可以用IMAGE来摸拟.用IMAGELIST放三张图片用来表示MOUSE_ON,MOUSE_DOWN,MOUSE_UP.当然如果你要求高一点可以用API来弥补其中的不足,使之更完善.

当然象CHECKBOX,OPTIONS用IMAGE来模拟都足足有余.-------------

只要设一个全局变量为BOOLEAN就行了.它们只要两张图片就够了.自己画还是引用 就随你便了.

好了例子也举完了.总结一下:

我想说的就是其实做界面并不是技术高才能做的.转个圈其实用一些简单的方法也可以解决的.

只要大家敢想什么都会变成现实!

希望我也能抛砖引玉啊,当然前提是老大们能用啊^_^.

 

VB.NET 设计视图窗体尺寸不对及解决方法

自己电脑为win10 64位系统,安装为vs2017,更新至最新版。 打开项目时设置窗体尺寸为1024*768,调试运行时窗体大小及控件位置显示正常 如图: 但复制到另一台win7系统的电脑上时,...
  • zxh707wk
  • zxh707wk
  • 2017年11月06日 19:10
  • 229

Vb.net调用子窗体

方法一:   DimNewMDIChild As New Form3         ‘实例化子窗体Form3   NewMDIChild.MdiParent = Me    ‘设...
  • zhangjiahao7521
  • zhangjiahao7521
  • 2017年03月12日 19:26
  • 636

让窗口轻而易举变漂亮

 前段时间一直在想怎么样能让窗口变得更漂亮一点,更加吸引人呢?在网上也看到了不少高手们的做法,但对于我这种不喜欢太复杂的人来说,我不是很喜欢那样写代码,GetSystemMetrics函数来得到各个边...
  • birdme007
  • birdme007
  • 2007年05月14日 16:18
  • 792

手把手教你用VB制作ActiveX控件

随着控件在可视化编程中地位地位提高,控件也成了编程中最重要的一部分。许多VB编程者也许苦于没有好看的控件,今天登高望远来教大家如何制作ActiveX控件。 一、新建工程       1.选择Acti...
  • qq_33582668
  • qq_33582668
  • 2016年06月11日 19:41
  • 3978

【vb.net】——窗体继承

vb.net是在vb的基础上更进一步的接近了面向对象编程的思想,在继承一部分发现窗体的继承比较和以前不同,在以前没怎么遇到过这类的问题,下面以一个小例子,来总结一下窗体继承的用法和好处:   1、首...
  • u013045437
  • u013045437
  • 2014年11月27日 17:09
  • 1820

VB.NET是如何关闭窗体 .

http://blog.csdn.net/wl58796351/article/details/7221040   1、在VB.NET中取消窗体的关闭事件;2、如何取消窗体上关闭按钮功能;3、窗体...
  • seucbh
  • seucbh
  • 2013年09月03日 08:06
  • 1957

VC++程序员如何做好界面

本帖最后由 jimoguilai 于 2013-03-01 17:28:24 编辑 界面 程序员界面库DirectUI 本屌丝在新春放假期间闲来无事,在各大编程论坛溜达了一圈。发现年前的帖子中...
  • lp310018931
  • lp310018931
  • 2014年06月22日 14:58
  • 3776

Excel VBA也可以设计精美界面的

  • 2010年10月21日 15:53
  • 379KB
  • 下载

VB.NET窗体继承

对比第一次敲的机房收费系统,会发现很多窗体的界面基本相同,部分功能甚至基本相似。比如说操作员菜单下的充值和退卡这两个窗体:     这样如果一个一个窗体画出来,就做了很多重复的工作。...
  • yiwangxiblog
  • yiwangxiblog
  • 2015年11月27日 19:27
  • 1362

关于VB.NET中多窗体之间的调用与关闭

关于VB.NET中多窗体之间的调用,实现多窗体之间的打开,以及打开新窗体后对旧窗体的关闭...
  • FlyGodYu
  • FlyGodYu
  • 2017年11月14日 22:06
  • 174
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于用VB做更漂亮的窗体的思考
举报原因:
原因补充:

(最多只允许输入30个字)