请问两个窗体的显示问题?能不能像vc那样的...

lzywj998 2003-10-15 03:45:36
我们用过vc的都知道,选择vc的“工程”菜单栏,然后选择“设定”,就会弹出一个小窗体。不管我们是切换到其它的程序还是最小化后,再切换到vc中,这个小窗体还是能他的父窗体(也就是vc)一起显示出来,而且还获得焦点,而且焦点总是在这个小窗体上,这是怎么实现呢?我这里有个方案,但我觉得不是很好,请大家多发言,说说自己的想法。
...全文
38 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzywj998 2003-10-27
  • 打赏
  • 举报
回复
to mmzz_wang(abcdef):

这种方法对于其它的可以,但是用于我这个程序却不行,因为我编译出来的不是可以独立运行的exe,而是通过class里面的这个函数调的:

Public Sub show()
Form1.show vbModal '这个form1是子窗体
End Sub
mmzz_wang 2003-10-26
  • 打赏
  • 举报
回复
Command1_Click()改成:
Private Sub Command1_Click()
Dim handleS As Long ' son window hanle
Dim handleT As Long
Dim temp As Long


X = Shell(GAppPath & "SonForm.exe", 1)

handleS = FindWindow(vbNullString, "SonForm")

handleP = SetParent(handleS, Me.hWnd)

End Sub
lzywj998 2003-10-26
  • 打赏
  • 举报
回复
大家好像没有完全理解我的意思。我的意思是现在是两个vb程序之间互相调用,而且要为父子关系。大家把我上面的程序编译完,运行的时候就会发现以下的问题:
虽然两个程序的父子关系建立起来了,但是可以互相切换焦点。

ps:
因为这里是vb的两个工程编出来的exe,要怎样才能像一个工程里的模式窗体 form.show 1
这样的效果呢?
  • 打赏
  • 举报
回复
使用模式窗体 form.show 1
lzywj998 2003-10-17
  • 打赏
  • 举报
回复
怎麽沒有一個人來看看啊,難道問題太簡單了嗎?我看未必吧
lzywj998 2003-10-16
  • 打赏
  • 举报
回复
哦,对不起,上面那句:temp = SetForegroundWindow(handleT)是多余的。

子窗体有个class和一个form,在class里的程序是:
Public Sub show()
Form1.show vbModal
End Sub

大家可以把程序跑起来就可以发现问题了,父子关系是建立起来了,但是可以互相切换焦点。
lzywj998 2003-10-16
  • 打赏
  • 举报
回复
模式窗体是肯定要用的,但还要建立父子关系阿。我把我写的程序拿给大家看:
父窗体:
Option Explicit
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetParent Lib "User32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function SetForegroundWindow Lib "User32" (ByVal hWnd As Long) As Long

Private Sub Command1_Click()
Dim handleP As Long ' parent window handle
Dim handleS As Long ' son window hanle
Dim handleT As Long
Dim temp As Long
Dim obj As Object

Me.MousePointer = 11
Set obj = CreateObject("sonForm.clsApp")
handleS = FindWindow(vbNullString, "SonForm")
handleT = FindWindow(vbNullString, Me.Caption)
temp = SetForegroundWindow(handleT)
handleP = SetParent(handleS, handleT)

Me.Enabled = False
obj.Show
temp = SetForegroundWindow(handleT)
Me.Enabled = True
End Sub
xfyxq 2003-10-15
  • 打赏
  • 举报
回复
用模式窗体
jiuzhangcs21dn 2003-10-15
  • 打赏
  • 举报
回复
好象是模态对话框(vc中)。vb中的messagebox应该是封装好的模态对话框!!
个人陋见,仅供参考!

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧