
VB中的窗口是按照Windows *** 作系统的标准来生成的,换句话说,不管是VB、VC、C++还是Java所生成的窗体,对于 *** 作系统而言都是没有区别的,它们对内存、CPU等系统资源的占用也是由 *** 作系统统一安排和调配的,VB对此是无权干涉、也用不着干涉的,作为程序员也更加不用 *** 心这些,只要把窗体里面的内容做好就行了。
至于你说的窗口会不会独立占用CPU资源的问题,这在目前的多任务 *** 作系统中是绝不可能的,因为这意味着当这个窗体运行时,其他一切(包括 *** 作系统本身)都将暂停运行,这是不可想象的!
我做了几行。
对无标题栏的窗体,或者不从标题栏移动的情况下可用。
有标题栏并且点住标题栏移动则不理想。
代码如下,仅供参考。
1、建立模块。
option
explicit
public
oldproc
as
long
public
declare
function
setwindowlong
lib
"user32"
alias
"setwindowlonga"
(byval
hwnd
as
long,
byval
nindex
as
long,
byval
dwnewlong
as
long)
as
long
public
declare
function
sendmessage
lib
"user32"
alias
"sendmessagea"
(byval
hwnd
as
long,
byval
wmsg
as
long,
byval
wparam
as
long,
byref
lparam
as
any)
as
long
public
declare
function
callwindowproc
lib
"user32"
alias
"callwindowproca"
(byval
lpprevwndfunc
as
long,
byval
hwnd
as
long,
byval
msg
as
any,
byval
wparam
as
any,
byval
lparam
as
any)
as
long
public
const
wm_move
=
&h3
public
const
wm_lbuttondown
=
&h201
public
const
wm_lbuttonup
=
&h202
public
const
gwl_wndproc
=
(-4)
public
bnhwnd
as
long
public
function
newproc(byval
hwnd
as
long,
byval
msg
as
long,
byval
wp
as
long,
byval
lp
as
long)
as
long
if
msg
=
wm_move
then
'捕获窗体移动事件
sendmessage
bnhwnd,
wm_lbuttondown,
1,
0
sendmessage
bnhwnd,
wm_lbuttonup,
1,
0
'将消息发送到按纽,使其发生click事件
end
if
newproc
=
callwindowproc(oldproc,
hwnd,
msg,
wp,
lp)
end
function
2、在窗体上有一个按钮(名称为eventbn)
dim
原垂直
as
single,
原水平
as
single
private
sub
eventbn_click()
msgbox
"移动了"
end
sub
private
sub
form_load()
form2show
form3show
bnhwnd
=
eventbnhwnd
'获得按纽句丙
oldproc
=
setwindowlong(mehwnd,
gwl_wndproc,
addressof
newproc)
eventbnvisible
=
false
end
sub
private
sub
form_mousedown(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
if
button
=
1
then
原垂直
=
metop
+
y
原水平
=
meleft
+
x
end
if
end
sub
private
sub
form_mouseup(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
metop
=
metop
-
原垂直
+
y
meleft
=
meleft
-
原水平
+
x
form2top
=
form2top
-
原垂直
+
y
form2left
=
form2left
-
原水平
+
x
form3top
=
form3top
-
原垂直
+
y
form3left
=
form3left
-
原水平
+
x
end
sub
3、其他窗体基本都这样。
这个这实在是太简单了!
首先添加三个窗体;
在第一个窗体上添加二个text控件,二个command控件,把以下代码复制到第一个窗体的代码窗口中:
Private Sub Command1_Click()
If Text1Text = "abc" And Text2Text = "123" Then
Form2Show
Unload Me
Else
MsgBox "密码错误!"
End If
End Sub
Private Sub Command2_Click()
End
End Sub
在第二个窗体中,添加一个label控件,一个command控件,代码如下:
Private Sub Command1_Click()
MsgBox "欢迎进入本窗体!"
Form3Show
Unload Me
End Sub
Private Sub Form_Load()
Label1Caption = "我的天地,我做主!"
End Sub
这样就可以了。
不懂的或者是要再加什么功能的话,可以问我。
添加MDI窗口!
“古木林”团队的团长——巫师的完善答案:
如果你是新手的话,那请看下面:
这样就可以添加第二个窗体了,如果第一个窗体的名称为“Form1”那第二个窗体默认名就为Form2。
你还可以再添加第三个窗体、第四个窗体
你说的这个
,其实就是这就是
允许用户
改变窗体的尺寸。你可以修改
Form
对象的
BorderStyle
属性(
BorderStyle
是窗体的边框样式)来实现这个。
下面是
Form
对象的
BorderStyle
属性设置值:
常数
设置值
描述
vbBSNone
0
无(没有边框或与边框相关的元素)。
vbFixedSingle
1
固定单边框。可以包含控制菜单框,标题栏,“最大化”按钮,和“最小化”按钮。只有使用最大化和最小化按钮才能改变大小。
vbSizable
2
(缺省值)可调整的边框。可以使用设置值1列出的任何可选边框元素重新改变尺寸。
vbFixedDouble
3
固定对话框。可以包含控制菜单框和标题栏,不能包含最大化和最小化按钮,不能改变尺寸。
vbFixedToolWindow
4
固定工具窗口。不能改变尺寸。显示关闭按钮并用缩小的字体显示标题栏。窗体在
Windows
95
的任务条中不显示。
vbSizableToolWindow
5
可变尺寸工具窗口。可变大小。显示关闭按钮并用缩小的字体显示标题栏。窗体在
Windows
95
的任务条中不显示。
如果你不是新手的话,“实现在一个主窗口中显示多个其他窗口”就是以一个窗口为容器,把其它窗口装在里面,就像程序的窗口包容控件对象那样。
这个需要用API来实现的,我对这方面的API不太熟,所以不能帮你了,sorry!
以上就是关于vb多窗口是不是并行执行的算多进程吗每个窗口会不会独立占用CPU资源求解全部的内容,包括:vb多窗口是不是并行执行的算多进程吗每个窗口会不会独立占用CPU资源求解、VB中如何使多个窗口同步显示、急!要用VB做出三个窗口来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)