如何使一个窗体镶嵌到另一个窗体中

warge 2010-05-10 07:31:05
我做了个程序,但我的主界面太空了,我想把其他窗体镶嵌到主界面中间,谁能告之代码该怎么写,谢谢各位大大了
...全文
219 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
PctGL 2010-05-11
  • 打赏
  • 举报
回复
form1:

Option Explicit

Private Sub Command1_Click()
Form2.Show , Me
End Sub


form2:
Option Explicit
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_NCACTIVATE = &H86
Private Const GWL_STYLE = (-16)
Private Const WS_CHILD = &H40000000

Private Sub Form_Load()

SetWindowLong hwnd, -16&, GetWindowLong(hwnd, -16&) Or WS_CHILD
SetParent hwnd, Form1.hwnd
PostMessage hwnd, WM_NCACTIVATE, 1, ByVal 0&

End Sub
嗷嗷叫的老马 2010-05-11
  • 打赏
  • 举报
回复
form1中调用:

form2.show ,me
wgj1022 2010-05-11
  • 打赏
  • 举报
回复
把主窗体设为MDI窗体form1,在load中调用子窗体form2.show
无语中V5 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 syssz 的回复:]
用MDI窗体试试
[/Quote]最简便还是把窗体的风格设计成MDI风格。
chinaboyzyq 2010-05-11
  • 打赏
  • 举报
回复
代码放入form1里(启动窗体,即主窗体),动手实践是你进步的前提。
chinaboyzyq 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 warge 的回复:]
是放在form1还是form2中?
[/Quote]
form2放在form1里。你就不会动手试试?
SYSSZ 2010-05-11
  • 打赏
  • 举报
回复
用MDI窗体试试
zjhiphop2006 2010-05-10
  • 打赏
  • 举报
回复
放在父窗体中
warge 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinaboyzyq 的回复:]
API设form2为form1的子窗体

VB code

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub Form_Load()
SetParent Form2.hWnd, Form1……
[/Quote]
是放在form1还是form2中?
chinaboyzyq 2010-05-10
  • 打赏
  • 举报
回复
API设form2为form1的子窗体

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub Form_Load()
SetParent Form2.hWnd, Form1.hWnd
Form2.Move Me.Left + 1000, Me.Top + 500
Form2.Show
End Sub


7,763

社区成员

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

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