zoukankan      html  css  js  c++  java
  • VB API 之 透明窗体创建

      首先我们要用到的API函数有SetWindowLong,GetWindowLong,SetLayeredWindowAttributes。

    SetWindowLong函数原型:

    Private Declare Function SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" _
    (ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) _
    As Long

    函数功能:

      该函数用来改变指定窗口的属性

    参数:

    hwnd: Long     //窗口的句柄

    nIndex:Long   //大于等于0的偏移值。可以是以下指定的值:

    常量
    常量值
    意义
    GWL_EXSTYLE
    -20
    设定一个新的扩展风格。
    GWL_HINSTANCE
    -6
    设置一个新的应用程序实例句柄。
    GWL_ID
    -12
    设置一个新的窗口标识符。
    GWL_STYLE
    -16
    设定一个新的窗口风格。
    GWL_USERDATA
    -21
    设置与窗口有关的32位值。每个窗口均有一个由创建该窗口的应用程序使用的32位值。
    GWL_WNDPROC
    -4
    为窗口过程设定一个新的地址。
    GWL_HWNDPARENT -8   改变子窗口的父窗口,应使用SetParent函数。
    当hWnd参数标识了一个对话框时,也可使用下列值:
    常量
    常量值
    意义
    DWL_DLGPROC
    DWLP_MSGRESULT + sizeof(LRESULT)
    设置对话框过程的新地址。
    DWL_MSGRESULT
    0
    设置在对话框过程中处理的消息的返回值。
    DWL_USER
    DWLP_DLGPROC + sizeof(DLGPROC)
    设置的应用程序私有的新的额外信息,例如一个句柄或指针。

    dwNewLong

    指定的替换值。
    dwNewLong中可以使用以下一些列表控件的专用风格:
    LVS_ICON LVS_SMALLICON LVS_LIST LVS_REPORT
    这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:
    大图标显示,小图标显示,列表显示,详细报表显示
    LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。
    LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
    LVS_SINGLESEL 同时只能选中列表中一项
    返回值:成功返回一个32位整数的值,失败为0.
      
      GetWindowLong函数原型

    Private Declare Function GetWindowLong Lib "user32" _
    Alias "GetWindowLongA" _
    (ByVal hwnd As Long, _
    ByVal nIndex As Long) _
    As Long

    函数功能:
      该函数获得指定窗口的有关信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。
     
    参数:
    hWnd :Long  //窗口的句柄
    nIndex:Long //大于等于0的偏移值。可以是以下值:
    一:

      
    意义
      
    GWL_EXSTYLE
    (-20)
    获得扩展窗口风格。
    GWL_HINSTANCE
    (-6)
    获得应用实例的句柄。
    GWL_HWNDPARENT
    (-8)
    如果父窗口存在,获得父窗口句柄。
    GWL_ID
    (-12)
    获得窗口标识。
    GWL_STYLE
    (-16)
    获得窗口风格。
    GWL_USERDATA
    (-21)
    获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。
    GWL_WNDPROC
    (-4)
    获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用CallWindowProc函数调用窗口过程。
    [1] 
    hWnd参数为对话框句柄时,还可用下列值:

      
    意义
      
    DWL_DLGPROC
    (4)
    获得对话框过程的地址,或一个代表对话框过程的地址的句柄。必须使用函数CallWindowProc来调用对话框过程。
    DWL_MSGRESULT
    (0)
    获得在对话框过程中一个消息处理的返回值。
    DWL_USER
    (8)
    获得应用程序私有的额外信息,例如一个句柄或指针。