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的理解放到这里,为再次学习打个基础吧。
Vb.net/VB 声明API函数实现父窗口功能的更多相关文章
- Vb.net/VB 声明API功能父窗口功能
回想第一次敲房费,他说自己是api函数实现父窗口及其子窗口最小化的功能.现在再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of Course! 事实上细致看两者并没有多大的差别,先看看 ...
- 调用API函数,在窗口非客户区绘图(通过GetWindowDC获得整个窗口的DC,就可以随意作画了)
http://hi.baidu.com/3582077/item/77d3c1ff60f9fa5ec9f33754 调用API函数,在窗口非客户区绘图 GDI+的Graphics类里有个FromHdc ...
- C#调用API函数EnumWindows枚举窗口的方法
原文 http://blog.csdn.net/dengta_snowwhite/article/details/6067928 与C++不同,C#调用API函数需要引入.dll文件,步骤如下: 1. ...
- VB断点拷贝大文件(WIN7系统需要更改某个API函数,具体我也忘了)
小弟以前租碟在电脑上看VCD,有时候拷贝经典的影片到硬盘上可惜碰到比较粗糙的碟子就很难拷贝过去,因此编了个断点拷贝文件的程序.本程序用于拷贝大文件,并可在旧文件上接着拷贝本程序能在无法读取数据的情况下 ...
- SilkTest天龙八部系列3-动态父窗口
SilkTest中用parent语句来声明某个window的父窗口,这会帮助silktest在识别该对象时检查其是否是由该父窗口打开,如果parent语句申明的父窗口并不存在,那么该对象无法被正确识别 ...
- winform子窗口调用父窗口的控件及方法-一般调用
首先新建一个窗体应用程序,在项目属性中点击右键->添加->添加新项,选择Windows窗体->添加. 在Form1和Form2窗口中各添加一个按钮,并双击添加事件处理函数: ...
- VB.NET章鱼哥出品—怎样解决MDI子窗口被父窗口中的控件覆盖的问题
近期有个网友问我这个问题,我就上网搜了下,结果非常失望.有几个在CSDN上发的求助帖.看到最后都没有找到明白的答案. 这里笔者在网上找到了API函数SetParent(),并对网上的错误进行了改动,并 ...
- vb学习基础之val函数与val(&HFFFF) 的理解
在VB语言中,val函数可以把数值字符串==转为==>数值的函数,在它不能识别为数字的第一个字符上,停止读入字符串. 那些被认为是数值的一部分的符号和字符,例如美元号与逗号,都不能被识别.但是能 ...
- Windows API 函数列表 附帮助手册
所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...
随机推荐
- 面向对象编程(二)封装--构造方法,this关键字,static关键字,方法重载
面向对象三大特点:封装.继承.多态 封装概念 ① 将东西包装在一起,然后以新的完整形式呈现出来: 将方法和字段一起包装到一个单元中,单元以类的形式实现; ② 信息隐藏,隐藏对象的实现细节,不让 ...
- Response.End报错
以下摘抄自博问:https://q.cnblogs.com/q/31506/ try catch中使用Response.End() 我在WebForm中用ajax发送请求到页面index. ...
- iOS学习笔记32-iCloud入门
一.iCloud云服务 iCloud是苹果提供的云端服务,用户可以将通讯录.备忘录.邮件.照片.音乐.视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至即使你的设备丢失后在 ...
- jsp实现文件下载,out = pageContext.pushBody();out.close();不用写到jsp中
测试jsp: <%@ page contentType="text/html; charset=gbk" %> <% try{ com.enfo.intrust. ...
- mybatis读取oracle中blob
controller: byte[] blob = commonService.getPersonImage(bean.getIdCard()); String base64 = new String ...
- Java Socket IO(BIO、NIO)
总结下Java socket IO.首先是各种IO的定义,这个定义似乎也是众说纷纭.我按照stackoverflow上面的解释: IO有两种分法:按照阻塞或者按照同步.按照阻塞,有阻塞IO和非阻塞IO ...
- hdu 6118 度度熊的交易计划
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 【BZOJ4945&&UOJ317】游戏(2-sat,拓扑序)
题意: 思路: 输出方案时有一个优秀的性质可以利用: tarjan缩点之后点所属的分量编号是原图的反的拓扑序 所以只需要在两种方案内找到所属分量编号较小的那个就行了,用来满足(i,i')那个限制 #i ...
- 共享内存之——system V共享内存
System V 的IPC对象有共享内存.消息队列.信号灯(量). 注意:在IPC的通信模式下,不管是共享内存.消息队列还是信号灯,每个IPC的对象都有唯一的名字,称为"键(key)&quo ...
- react状态
组件的生命周期分成三个状态: Mounting:已插入真实 DOM Updating:正在被重新渲染 Unmounting:已移出真实 DOM React 为每个状态都提供了两种处理函数,will 函 ...