2010-03-03 4 views

답변

0

MDI 창을 만들었 으면 WM_MDICREATE을 올바르게 사용 했습니까? 그 메시지는 창 핸들을 반환합니다. 나중에 핸들을 참조하거나 존재 여부를 확인하려는 경우 참조 할 수 있도록 핸들을 저장해야합니다.

MDICREATESTRUCT mci; 
// fill out mci... 
HWND hwndChild = (HWND) SendMessage(hwndMDI, WM_MDICREATE, 0, (LPARAM)(ULONG_PTR)&mci); 

// save hwndChild so that I can use it later. 
+0

핸들을 "잃어버린"경우 http://msdn.microsoft.com/en-us/library/ms633494(VS.85).aspx를 사용할 수도 있습니다. –

2

다음 기술을 사용하지만 각 양식 유형에 대해 특정 Sub가 필요합니다 (VB.NET 사용). 그러나 하나의 하위 모든 양식을 처리하기 위해 이것을 단순화하는 방법이있을 수 있다고 확신합니다

 Dim blExists As Boolean = False 
     For Each f As Form In Me.MdiChildren 
      If TypeOf (f) Is FormName Then 
       f.Focus() 
       blExists = True 
       Exit For 
      End If 
     Next 
     If Not blExists Then 
      fAnalysis = New FormName 
      fAnalysis.MdiParent = Me 
      fAnalysis.Show() 
     End If 

다음 하위는 모든 양식에서 작동합니다.

Private Sub ShowNewForm(ByVal frmName As Form) 
     Dim blExists As Boolean = False 
     Dim f as Form 
     For Each f In Me.MdiChildren 
      If f.Name Is frmName.Name Then 
       f.Focus() 
       blExists = True 
       Exit For 
      End If 
     Next 
     If Not blExists Then 
      f = DirectCast(New Form, frmName.Type) 
      fAnalysis.MdiParent = Me 
      f.Show() 
     End If 
End Sub 
관련 문제