Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: sobol79 21. 05. 2021, 09:53:48
-
Dobrý den,
v již existující aplikaci, ke které jsem přišel, chybí vazby child a jeho parent. To nedělá dobrotu když chci getnout top window.
Udělal jsem si vb6 projekt (existující aplikace je vb6, nikoliv však MDI..), kde jsem nastavení vazby chtěl odladit.
Šel jsem podle tohoto návodu:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setparent (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setparent)
V okně(Formu) po spuštění mám tlačítko s obsluhou:
Private Sub Command2_Click()
Dim dlg As Form
Set dlg = New Form2
Dim result As Long
result = GetWindowLong(hWnd, GWL_STYLE)
result = result - (result And WS_CLIPCHILDREN)
SetWindowLong hWnd, GWL_STYLE, result
dlg.SetParentWindow Me.hWnd
dlg.Show vbModal
Set dlg = Nothing
End Sub
SetParentWindow ve Form2 mam potom:
Public Sub SetParentWindow(ByVal hWndParent As Long)
Dim result As Long
result = GetWindowLong(hWnd, GWL_STYLE)
result = result - (result And WS_POPUP)
result = result Or WS_CHILD
result = SetWindowLong(hWnd, GWL_STYLE, result)
result = SetParent(hWnd, hWndParent)
result = SendMessage(hWndParent, WM_CHANGEUISTATE, (UISF_ACTIVE * 65536) + UIS_SET, 0)
End Sub
Bohužel na řádce:
result = SetParent(hWnd, hWndParent)
Form2 zmizí nevím kam.
Prosím poradíte mi někdo, co by mohlo být špatně?
Díky
-
Přestože okno (child zmizí), nezasekne se to, pokračuje dál v exekuci a když mám tedy například poté:
MsgBox GetWindowLong(Me.hWnd, GWL_HWNDPARENT)
vypíše to správně nového parenta.
Jen GetParent pak vrací null, krom toho, že child je neviditelný, není to zpropagované do hierarchie.