控件命名和setparent函数——机房遇到问题(一)

从学生到机房其实变化还是很大的,首先体会到的是i+1的模式,在学生的基础上,机房是有一点难度的,可是只要“跳一跳”却是可以拿得到。其实本来想写不写关于这块的博客呢?我是这么晚才进行这块的,写出来也是和别人的差不多,但是想到米老师说的:写出来的就是用文字整理你的生命,是我自己的成长的记录,所以决定,以后哪怕是晚了,也要写,这是我自己的。
说一下遇到的问题吧,原来敲学生的时候,是有源代码的,所以命名没有问题。而且也没有过多的关注,而现在呢?窗体控件的名字必须自己起,这就是首先的一个问题,虽然我们可以仿照学生的格式命名,但是起名的时候这首先就考了一下自己的英文水平,所以学英语是重中之重。
第二就是大家都遇到的如何在MDI主窗体上添加控件的问题,首先要在MDI主窗体上加载picture控件,但是直接用picturebox之后,子窗体是不能显示在上层的,具体原因可以参考九期师哥 卓家进的博客。而解决的方法就是用到setpicture函数。这个函数可以在VB6.0的API函数浏览器里面找到,详细了解参考 setparent百度百科。
使用方法:
1.声明。可以用vb6.0API浏览器。语句Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long。
2.声明之后,如果想要在菜单的click事件中触发这个事件那么只要添加以下代码:
SetParent 要显示在上方的窗体名.hWnd ,父窗体名.hWnd
这样就可以在picturebox之上显示主窗体了,估计大部分同学们都是这样解决了,但是我的确还是出现了问题以下是截图:

没有单机菜单前

单机菜单后
控件命名和setparent函数——机房遇到问题(一)_第1张图片
用鼠标拉开后

在单机菜单之后可以看到在picture之后又蓝条显示出,而且可以用鼠标拉开,确实是希望显示在picturebox上面的窗体,但是确不显示标题栏。这不是我们想要的结果,为何会这样呢?因为picture的Align属性设置为1,靠上,而选择其他属性会分别显示在主窗体的下、左或右,但均不能显示出完整的窗体。

       解决这个问题的方法是什么呢?

       有两种:1.将子窗体的BorderStyle属性设置为1——Fixed Single。固定窗体大小,牺牲了窗体的可调节性,如果不要求窗体可以调节大小可以采取,并且相对简单。

       2.在显示窗体的触发事件中添加一下代码

       对应子窗体名.width=数字

       对应子窗体名.height=数字

这种方法并不空难,只不过是比较繁琐,并且不牺牲窗体大小的可调节性。

你可能感兴趣的:(function,api,vb6.0)