究竟VB的窗口跟WINDOW的窗口有什么不同呢?
大家可以试试以下操作,首先新开一个工程,一个窗口,加入以下代码:
Private Sub Form_Load()
Me.Caption = “你好啊”
End Sub
然后生成“工程1.exe”,然后新开另外一个工程,一个窗口,三个COMMAND按钮,加入以下代码:
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 Sub Command1_Click()
Dim tHwnd As Long
tHwnd = FindWindow(vbNullString, "无标题 - 记事本")
If tHwnd = 0 Then MsgBox "请先打开记事本": Exit Sub
SetParent tHwnd, Me.hWnd
End Sub
Private Sub Command2_Click()
Dim tHwnd As Long
tHwnd = FindWindow(vbNullString, "计算器")
If tHwnd = 0 Then MsgBox "请先打开计算器": Exit Sub
SetParent tHwnd, Me.hWnd
End Sub
Private Sub Command3_Click()
Dim tHwnd As Long
tHwnd = FindWindow(vbNullString, "你好啊") '刚才设置的工程1的标题
If tHwnd = 0 Then MsgBox "请先打开工程1": Exit Sub
SetParent tHwnd, Me.hWnd
End Sub
Private Sub Form_Load()
Command1.Caption = "获取“记事本”窗口的句柄并设置为子窗口"
Command2.Caption = "获取“计算器”窗口的句柄并设置为子窗口"
Command3.Caption = "获取“工程1” 窗口的句柄并设置为子窗口"
End Sub
然后生成“工程2.exe”,并运行。大家可以分别按下command1,command2,command3这三个按钮,然后会将以上的的窗口设置成子窗口,然后大家可以按下这些子窗口和父窗口,然后留意一下任务栏的当前程序的按钮,即任务栏上带图标和标题文字的那个按钮,大家可以发现,记事本和计算器的两个子窗口就算获得焦点,工程2那个标题按钮都是凹下的,但当焦点到了工程1的子窗口时,标题按钮确实凸起了,这是什么原因啊?请各位仔细看看,最好能给我回复,谢谢!
[解决办法]
包含关系
[解决办法]
猜测vb6的窗体都依赖于msvbvm60.dll,因此会挣夺焦点。
你用VC6里的MFC AppWizard(exe)直接生成一个单文档程序试试,它没有VB6工程的挣夺焦点问题。