`
cjc
  • 浏览: 673822 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

动态裁剪窗体标题栏

VB 
阅读更多

本文演示了如何利用API进行窗体标题栏的裁剪和恢复,一并演示了控件的动态添加方法:

 

'This sample show you how to cut the caption title exactly and create controls with code.
'add a new form ,do nothing but copy this codes for it.
Option Explicit
    Private Declare Function CreateRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
    Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

  Private WithEvents cmd1 As CommandButton
  Private WithEvents cmd2 As CommandButton
Private Sub cmd1_Click() '******************
Dim capheight As Long, area As Long
   Me.ScaleMode = 2
   Me.ForeColor = vbRed
   Me.Line (1, 0)-(Me.Width, 0) '紧贴标题栏画线做标记
   capheight = GetSystemMetrics(33) + GetSystemMetrics(4) ' 边框宽度+标题栏高度
   area = CreateRectRgn(0, capheight, Me.Width, Me.Height) '画无标题栏的矩形框
   area = SetWindowRgn(Me.hWnd, area, True) '裁剪标题栏
End Sub
Private Sub cmd2_Click() '*******************
Me.ScaleMode = 2
Dim area As Long
area = CreateRectRgn(0, 0, Me.Width, Me.Height) '画含标题栏的矩形框
area = SetWindowRgn(Me.hWnd, area, True) '恢复标题栏
End Sub
Private Sub Form_Load()
Me.WindowState = 0
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2, 8000, 5000'居中及设置窗体大小
  Set cmd1 = Controls.Add("VB.CommandButton", "cmd1", Me)'添加cmd1按纽
  Set cmd2 = Controls.Add("VB.CommandButton", "cmd2", Me)'添加cmd2按纽
  cmd1.Move 1000, 1000, 1500, 500
  cmd2.Move 3000, 1000, 1500, 500
  cmd1.Caption = "裁剪标题栏"
  cmd2.Caption = "恢复标题栏"
  cmd1.Visible = True
  cmd2.Visible = True
End Sub

分享到:
评论

相关推荐

    仿QQ窗体开发

    1. **无标题窗体的移动**:传统的窗口通常有标题栏,用户可以通过拖动标题栏来移动窗口。在无标题窗体中,为了实现相同功能,开发者需要自定义窗体的边框,使用户能够通过点击并拖动窗体的任意边界或角落来移动它。...

    WPF一个不规则窗体实例

    首先,`Window`是WPF中的基础窗口类,它提供了窗口的基本功能,如大小调整、关闭按钮、标题栏等。但是,如果我们要创建一个不规则形状的窗口,我们需要覆盖`Window`类的默认行为。这通常涉及到设置`...

    VC++实现透明窗体

    VC++实现透明窗体的技术主要涉及到Windows API中的`...需要注意的是,这种方法对于带有标题栏的窗口支持不佳,因为它只裁剪客户区域。因此,通常在创建透明窗体时,我们会选择不带标题栏的窗口样式。

    winform创建不规则窗体和控件源码.rar

    你需要覆盖`WndProc`方法,以便处理`WM_NCPAINT`消息,这是一个用于非客户区(包括标题栏和边框)绘制的消息。在这里,你需要再次绘制窗体的非客户区以保持与窗体形状一致。 5. **处理WM_ERASEBKGND消息**:同样,...

    一种不规则窗体的实现方法

    3. **处理WM_NCPAINT消息**:在这个消息处理函数中,你需要绘制窗体的非客户区,即窗口边框和标题栏。利用GDI+或Direct2D的绘图功能,根据定义的形状进行绘制。 4. **设置透明区域**:为了实现不规则形状,需要告诉...

    用户界面测试指南.docx

    标题栏是用户识别当前窗体的关键部分,测试时应注意以下几点: 1. **图标**:不同窗体的图标应易于区分。 2. **内容**:标题应简洁明了,避免错别字。 - 父窗体的标题 - 子窗体的标题 - 提示信息窗体的标题 - ...

    用户界面测试指南,对于要用用户界面测试的朋友们有帮助的话,您可以下载

    2. **标题栏测试**: - **图标**:每个窗体的图标应具有辨识度,无误。 - **标题内容**:标题简洁明了,无错别字,适应各种窗体类型。 3. **菜单栏测试**: - **深度**:菜单层次不宜过深,便于用户导航。 - **...

    VB控件属性大全【经典】.

    7. **Caption**:设置窗体的标题,即显示在窗体顶部标题栏中的文字。 8. **ClipControls**:确定Paint事件的处理是否应该裁剪到窗体上控件的范围。如果设置为True,Paint事件将仅在控件上发生;如果设置为False,则...

    198个C#实例源码

    - **窗体状态**:包括最大化、最小化、隐藏和关闭等,以及自定义窗体边框和标题栏。 - **非模态和模态对话框**:非模态对话框允许用户在打开其他窗口的同时与当前窗口交互,而模态对话框则阻止用户操作其他窗口...

    经典C#WinForm实例

    - **窗体属性**:如`Text`(标题)、`Size`(大小)、`StartPosition`(启动位置)等,这些属性可以用来定制窗体的外观和行为。 - **窗体事件**:如`Load`事件(加载窗体时触发)、`Shown`事件(窗体显示后触发)...

    C#经典源代码-02-控件操作.rar

    - 自定义窗体:学习如何创建自定义窗体,包括设置背景、边框样式和非客户区(如标题栏)的交互。 2. **控件操作**: - 常用控件:熟悉Button、TextBox、Label、CheckBox、RadioButton、ComboBox、ListBox、...

    Visual C++实效编程百例光盘源代码

     实例21 裁剪位图   实例22 填充区域图像   实例23 列表项的提示条   实例24 浮动的鼠标提示   实例25 控制工具栏的按钮组   实例26 工具栏上设置下拉按钮   实例27 使窗体保持在最前   实例...

    易语言窗口置外形图片(源码)

    在Windows操作系统中,通常窗口的外观是由系统默认的边框、标题栏和控制按钮组成的。然而,通过编程技术,我们可以实现更个性化的窗口设计,将窗口的背景或者整个窗口的外形设置为我们喜欢的图片。这种技术在GUI...

    c# winform 加载文件显示缩略图

    这个场景在标题"‘C# WinForm加载文件显示缩略图’"中被提及。下面将详细解释如何实现这一功能,以及描述中提到的老外实现的加载速度不错的特性。 首先,我们要了解C# WinForm的基本结构。WinForm是.NET Framework...

    VC++6.0实效编程百例

    21·裁剪位图 22·填充区域图象 23·列表项的提示条 24·浮动的鼠标提示 25·控制工具栏的按钮组 26·工具栏上设置下拉按钮 27·使窗体保持在最前 28·模仿windows任务拦 29·定义光标热区 30·拖放选中对象 第三章 ...

    C++Builder精彩编程实例集锦的源代码前3部分.rar

    实例011 如何去掉MDI程序子窗口标题栏 实例012 如何拖动非标题栏区域移动窗口 实例013 如何控制程序最小化窗口 实例014 如何限制程序最大最小化窗口 实例015 如何控制程序窗口自动隐藏或显示 实例016 如何隐藏...

    C++Builder精彩编程实例集锦的源代码后3部分.rar

    实例011 如何去掉MDI程序子窗口标题栏 实例012 如何拖动非标题栏区域移动窗口 实例013 如何控制程序最小化窗口 实例014 如何限制程序最大最小化窗口 实例015 如何控制程序窗口自动隐藏或显示 实例016 如何隐藏...

    第一部分 界面设计

    实例011 如何去掉MDI程序子窗口标题栏 实例012 如何拖动非标题栏区域移动窗口 实例013 如何控制程序最小化窗口 实例014 如何限制程序最大最小化窗口 实例015 如何控制程序窗口自动隐藏或显示 实例016 如何隐藏...

Global site tag (gtag.js) - Google Analytics