当前位置: 网学 > 编程文档 > VB > 正文

关于窗口样式的API以及处理文本的API参考

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
际的例子进行一些演示说明,由于本人技术及篇幅有限,不事宜做复杂的说明。那些做为专题讨论,写这篇主要目的是起到抛砖引玉的作用。

严格说来操作系统只知道窗口控件(WinControl)的存在,我这里说的窗口控件可以这么理解就是在VB中具有hWnd(窗口句柄)的控件。他们都靠系统的消息驱动,因为我在这篇文章主要侧重点是利用API来发掘VB,因此涉及的对象基本都是指窗口控件,非窗口控件的创建、更新、销毁又它的父窗口控件来负责。

使用VC++编程的人一定会熟悉很多窗体控件风格常量,然后按照自己的需要创建窗体控件样式,而我们在VB中,这些统统被IDE包装起来的,我和根本看不到,但是利用API我们可以重新定义窗体控件的样式,下面就用实际例子来演示一下:

(这里我没有列出详细的API和常量声明,因为我主要想体现的是方法和思路)

 

任何一个窗体控件,我们都可以给它加上ControlBox(所谓ControlBox,就是窗体的图标+最小化+最大化+关闭按钮)

Public Sub ControlSysMenu(ControlName As Control, SetTrue As Boolean)

Dim dwStyle As Long

dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)

If SetTrue Then

dwStyle = dwStyle Or WS_SYSMENU

Else

dwStyle = dwStyle - WS_SYSMENU

End If

dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)

SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME

End Sub

 

任何一个窗体组件,我们都可以给它加上标题栏,通过拖动标题栏,可以实现控件的运行时移动。

 

Public Sub ControlCaption(ControlName As Control, SetTrue As Boolean)

Dim dwStyle As Long

dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)

If SetTrue Then

dwStyle = dwStyle Or WS_CAPTION Or WS_THICKFRAME

Else

dwStyle = dwStyle - WS_CAPTION - WS_THICKFRAME

End If

dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)

SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME

End Sub

 

任何一个窗体组件,我们都可以控制其显示风格为模式对话框的风格

 

Public Sub ControlModal(ControlName As Control, SetTrue As Boolean)

Dim dwStyle As Long

dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)

If SetTrue Then

dwStyle = dwStyle Or WS_POPUP

Else

dwStyle = dwStyle - WS_POPUP

End If

dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)

SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME

End Sub

 

任何一个窗体组件,我们都可以控制其显示风格为对话框的风格。

Public Sub ControlDialog(ControlName As Control, SetTrue As Boolean)

Dim dwStyle As Long

dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)

If SetTrue Then

dwStyle = dwStyle Or WS_DLGFRAME

Else

dwStyle = dwStyle - WS_DLGFRAME

End If

dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)

SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME

End Sub

 

只要有窗口,这是我们的前提,你可以在运行时随便更改它的大小。

Public Sub ControlSize(ControlName As Control, SetTrue As Boolean)

Dim dwStyle As Long

dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)

If SetTrue Then

dwStyle = dwStyle Or WS_THICKFRAME

Else

dwStyle = dwSt

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号