2012-04-04 6 views
1

의 맨 상호 운용성 양식을 유지합니다. .NET 폼이 VB6 폼에 던져지는 이벤트에서로드 될 때 .NET 폼이 맨 위에 머무를 수 있는지 확인하려고합니다. 나는 많은 것을 시도했고 아무 것도 할 수 없습니다. 나는 Z- 인덱스에서 등나는 InteropFormsToolkit 버전 2.1을 사용하고 있습니다 VB6 응용 프로그램

최전선에 밀어에서 User32.dll에 관리 호출, 어떤 아이디어가 감사합니다 추가 모든 것을 시도했습니다.

+1

ShowDialog를에서 작업을 수행하는 방법에 대해 알고하지 않습니다) 또는 TopMost가 작동해야합니다. 쇼 (주인)가 정상적으로 작동하도록 VB6 윈도우에 적합한 래퍼를 가져와야합니다. IWin32Window 또는 NativeWindow입니다. 당신이 툴킷에서 빠져 나올 수 있는지는 잘 모르겠다. –

+0

ShowDialog는 이벤트가 VB6에서 버블 다운되지 않습니다. –

답변

1
사용할 수 VB6에서

등 :

Private Sub Form_Load() 
OnTopMe Me, True 
End Sub 

및 모듈의 코드를 다음

Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cX As Long, ByVal cY As Long, ByVal wFlags As Long) As Long 


Public Sub OnTopMe(FormID As Object, onTop As Boolean) 
    If onTop = True Then SetWindowPos FormID.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE 
    If onTop = False Then SetWindowPos FormID.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE 
End Sub 

내가 (닷넷

+0

그래서 내가 겪을 수있는 문제는 VB6 앱이 .show를 사용하여 .NET Winform을 엽니 다. 그런 다음 .NET Winform은 VB6에 버블 링하는 이벤트를 발생시킵니다. 그 이유는 .NET 양식에서 단추 등을 선택할 때 표시해야하는 다른 여러 가지 VB6 "세부 정보"양식이 있기 때문입니다. 세부 양식이 맨 위에 있어야합니다. 세부 양식이 닫히면 .NET 양식이 (때로는) VB6 기본 양식 뒤에서 미끄러집니다. HTH. –

+0

당신은 닷넷 양식 =>에서의 VB6 응용 프로그램 =>로드 닷넷 양식 => 이벤트가 VB6에서 캡처하고 해당 이벤트에 상단에 VB6 양식을 보여 것을 의미한다. 내가 틀렸다면 어디에서 vb6가 이벤트 구동으로 모든 이벤트에 대해 설명하게할까요 – Vineet1982

+0

맞습니다. => 이벤트에 따라서 VB6 응용 프로그램은 => FrmMain.vb (VB6)이 => frmOrder에 버튼로드 frmOrder (.NET) => 버튼 VB6 frmMain 수에 LoadDetailsEvent을 발사 포함하는, VB6 FrmOrderDetails.vb (VB6)는 ShowDialog를()이다. FrmOrderDetails가 닫히면 frmOrder가 FrmMain 뒤에서 미끄러 져 보입니다. –