同一个窗口,可不可以打开多次?

时间:2021-08-07 19:31:18
在我的程序里有一个窗口叫formMsg,现在在另一个窗口formMain里打开formMsg,用formMsg.show方法多次打开窗口;但是实际上只能打开一次窗口;能不能运行一次打开,就出一个互不相干的窗口

7 个解决方案

#1


formMsg对象是formMsg类的默认实例


dim f as formMsg
set f = new formMsg
f.show

#2


楼上正解
窗体是一个类,而类都是可以重复加载的

所以:
DIM F AS formMsg
set f=new forMsg
f.show


程序退出时
dim f as form
for each f in forms
    unload f
next

#3


还有一个问题,如何通过一个form的句柄获取打开的form这个对象

#4


题目上的问题已经得到解答。
对于最后这个问题,我认为你的描述不清。如果你想通过一个“句柄”打开一个不存在的form,这是不可能的,因为form还没有生成,不存在与之对应的句柄;如果这个form已经存在,还要分情况。如果这个form在你的程序里,你可以通过遍历所有form并把它们的hwnd属性与你的句柄比较获得它,如果不在,这也是不可能的一件事,因为你要的是“对象”。

#5


楼上说的对,还没有打开的窗体,是没有句柄的,因为系统还没有给它分配内存,对于系统来说,这个窗体还"不存在",因此也不可能分配句柄给它

#6


你还可以用createwindow来创建窗体。。创建后系统自动就返回这个窗体句柄

#7


二楼的兄弟方法可行

#1


formMsg对象是formMsg类的默认实例


dim f as formMsg
set f = new formMsg
f.show

#2


楼上正解
窗体是一个类,而类都是可以重复加载的

所以:
DIM F AS formMsg
set f=new forMsg
f.show


程序退出时
dim f as form
for each f in forms
    unload f
next

#3


还有一个问题,如何通过一个form的句柄获取打开的form这个对象

#4


题目上的问题已经得到解答。
对于最后这个问题,我认为你的描述不清。如果你想通过一个“句柄”打开一个不存在的form,这是不可能的,因为form还没有生成,不存在与之对应的句柄;如果这个form已经存在,还要分情况。如果这个form在你的程序里,你可以通过遍历所有form并把它们的hwnd属性与你的句柄比较获得它,如果不在,这也是不可能的一件事,因为你要的是“对象”。

#5


楼上说的对,还没有打开的窗体,是没有句柄的,因为系统还没有给它分配内存,对于系统来说,这个窗体还"不存在",因此也不可能分配句柄给它

#6


你还可以用createwindow来创建窗体。。创建后系统自动就返回这个窗体句柄

#7


二楼的兄弟方法可行