Vb.net/VB 声明API函数实现父窗口功能

回想第一次敲机房收费。自己调用了api函数实现了父窗口及其子窗口最小化的功能。现在再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of
Course!

事实上细致看两者并没有多大的差别。先看看在vb.net中怎样调用:

首先加入一个类模块,来封装此API函数:

<span style="font-size:14px;"> Public Declare Function SetParent Lib "<span style="color:#ff0000;">user32</span>" (ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer</span>

然后在窗口中直接调用就可以满足自己想要的需求

<span style="font-size:14px;">SetParent(FrmRegisterCard.Handle.ToInt<span style="color:#ff0000;">32</span>, Me.Handle.ToInt<span style="color:#ff0000;">32</span>)</span>

然后把父窗口的windowState属性改为Maximized。

实现的终于效果就是,单击其他得窗口,此窗口会默认最小化到父窗口的左下角,如图:

注:尽管实现了其想要的功能,但自我感觉窗口的大小也要更加子窗口来自我改动一下:

             <span style="font-size:14px;">FrmRegisterCard.Width = Me.ClientRectangle.Width - 800
        FrmRegisterCard.Height = Me.ClientRectangle.Height - 200
        SetParent(FrmRegisterCard.Handle.ToInt32, Me.Handle.ToInt32)
        FrmRegisterCard.Show()</span>

下边来谈谈与VB的API函数声明的差别:

1、当中最基本的一个差别就是在vb中定义的数据类型是long,而在vb.net中则使用Integer来代替long,由于在vb.net中Integer类型是32位的,和long类型一样。

2、要注意使用ByVal和ByRef

  • ByVal是传递值,源数据不会被改动。能够把这个值当做自己的局部变量来使用;(传递參数内存给被调用者)
  • ByRef是传递地址。源数据可能被改动。(传递參数地址给被调用者)

3、在主窗口调用API函数的时候要注意“Handel.ToInt32”的使用,他等同于vb调用过程中的.hwnd

H:handle;Wnd:变量对象描写叙述,也就是所谓的窗口,所以Handel.ToInt32也就是所谓的窗口句柄的意思吧。

在此也仅仅是自己的理解。先把对API的理解放到这里,为再次学习打个基础吧。

时间: 2024-12-11 18:09:04

Vb.net/VB 声明API函数实现父窗口功能的相关文章

Vb.net/VB 声明API函数实现父窗体功能

回顾第一次敲机房收费,自己调用了api函数实现了父窗体及其子窗体最小化的功能,如今再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of Course! 其实仔细看两者并没有多大的区别,先看看在vb.net中如何调用: 首先添加一个类模块,来封装此API函数: <span style="font-size:14px;"> Public Declare Function SetParent Lib "<span style="color:

Vb.net/VB 声明API功能父窗口功能

回想第一次敲房费,他说自己是api函数实现父窗口及其子窗口最小化的功能.现在再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of Course! 事实上细致看两者并没有多大的差别,先看看在vb.net中怎样调用: 首先加入一个类模块.来封装此API函数: <span style="font-size:14px;"> Public Declare Function SetParent Lib "<span style="color:#f

VB调用API函数

API函数快速入门--怎样在VB中声明和使用API函数-- 一.在VB中声明API函数有两种方法:如果我们只在某个窗体中使用API函数,我们可以在窗体代码的 General部分声明它: 声明的语法是: Private Declare Function ... Private Declare Sub..... 这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用. 如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中 声明了. 先添加

VB.NET 章鱼哥出品--利用API函数AnimateWindow创建Popup提示窗口

当我们打开电脑上网时,是不是会经常看到桌面的右下角弹出一个小的新闻热点窗体,我们可以实现吗?当然可以,这篇文章就来给您掩饰怎么样来用代码实现.看吧,正写着呢弹出了一个. 一.主要用到的函数是API函数AnimateWindow.下面来简单的介绍一下这个函数的使用. 1 函数声明 '声明API函数AnimateWindow.该函数可以动态的操作窗体 Declare Function AnimateWindow Lib "user32" Alias "AnimateWindow&

HTML父窗口与IFRAME中变量互访

1.HTML父窗口访问IFRAME中变量或函数 在父窗口脚本中写: //调用变量赋值 IframeObj.contentWindow.someVar = "test is ok"; //调用函数 IframeObj.contentWindow.someFunction(); 2.HTML中IFRAME访问父窗口中变量或函数 假设在父窗口脚本中具有方法: function showMsg(str){ alert('Read from iframe:'+ str); } 则在IFRAME可

VB.NET章鱼哥出品—怎样解决MDI子窗口被父窗口中的控件覆盖的问题

近期有个网友问我这个问题,我就上网搜了下,结果非常失望.有几个在CSDN上发的求助帖.看到最后都没有找到明白的答案. 这里笔者在网上找到了API函数SetParent(),并对网上的错误进行了改动,并给出了简单实例代码. 读者可自行測试: Public Class Form1 '作者:章鱼哥,QQ:3107073263 群:309816713 '如有疑问或好的建议请联系我.大家一起进步 '声明SetParent函数.这是一个API函数 Declare Function SetParent Lib

VB程序破解之API断点[bp __vbaVarTstEq]

软件名称:风云足彩1.7软件大小:2.1M下载地址:http://free.ys168.com/?zhinengxuanhao软件保护:注册码编写软件:Microsoft Visual Basic 5.0 / 6.0 [Debug]破解工具:PEiD,OD破解作者:WildCatIII[D.4s] 引用: 软件介绍:足彩智能选号全能版足彩智能选号全能版 提供了足彩独特选号的方法.不论是足彩高手还是初玩者,足彩智能选号全能版都为他们提供了整套工具,以方便稳中一等奖. 但是,工具不是一个万能.能不能

vb.net 动态调用api

Imports System Imports System.Runtime.InteropServices Public Class DllInvoke Public Sub New(ByVal DLLPath As String) Me.hLib = DllInvoke.LoadLibrary(DLLPath) End Sub Protected Overrides Sub Finalize() Try DllInvoke.FreeLibrary(Me.hLib) Finally MyBase

linux API函数大全

还没有认真研读过,今晚在其他博客上找了比较久,今晚时间也不多了,等有空再细看 先复制先 获取当前执行路径:getcwd 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接  WNetAddConnection2 创建同一个网络资源的连接  WNetAddConnection3 创建同一个网络资源的连接  WNetCancelConnection 结束一个网络连接  WNetCancelConnection2 结束一个网络连接  WNetCloseEnum