可以考虑使用TableDialog 当a获得焦点,b.show ,mdiform 当a失去焦点unload b -------------------------------------------------------------------------------- 这个问题第4个回答: 我做过这个。给楼主一个思路,楼主按照这个自己实现看。 除了你说的效果,你还要实现的是:a的父窗体最小化时,b也跟着一起最小化。(这个虽然不是必须,但按理讲应该是需要的)。 设a的父窗体为p,所有的处理都在p的WM_ACTIVATE消息中。 在b加载和卸载时,都通知p,并把b的hWnd储存在p的一模块级变量中。 Case WM_ACTIVATE Select Case LowWord(wParam) Case WA_ACTIVE, WA_CLICKACTIVE If g_hWndDlgBox <> 0 Then Call SetWindowPos(g_hWndDlgBox, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE) Case WA_INACTIVE If g_hWndDlgBox <> 0 Then Call SetWindowPos(g_hWndDlgBox, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE) End Select If HighWord(wParam) <> 0 Then If g_hWndDlgBox <> 0 Then Call ShowWindow(g_hWndDlgBox, SW_HIDE) Else If g_hWndDlgBox <> 0 Then Call ShowWindow(g_hWndDlgBox, SW_SHOW) End If 但是如果想让窗体A一直处于窗体B的上面,B最小化A也跟着最小化有两个方法: B.show,A 或者 setwindowlong B.hwnd,GWL_HWNDPARENT,A.hwnd
com组件里有个Form,我在页面上调用这个form,让它Show或者ShowModal,
这两种方法的效果如下:
show时,页面卡死
SHowModal,页面显示查询都很正常,但是弹出对话框时获取不到焦点,各位帮帮忙
当a失去焦点unload b
--------------------------------------------------------------------------------
这个问题第4个回答:
我做过这个。给楼主一个思路,楼主按照这个自己实现看。 除了你说的效果,你还要实现的是:a的父窗体最小化时,b也跟着一起最小化。(这个虽然不是必须,但按理讲应该是需要的)。
设a的父窗体为p,所有的处理都在p的WM_ACTIVATE消息中。
在b加载和卸载时,都通知p,并把b的hWnd储存在p的一模块级变量中。
Case WM_ACTIVATE Select Case LowWord(wParam) Case WA_ACTIVE, WA_CLICKACTIVE If g_hWndDlgBox <> 0 Then Call SetWindowPos(g_hWndDlgBox, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE) Case WA_INACTIVE If g_hWndDlgBox <> 0 Then Call SetWindowPos(g_hWndDlgBox, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE) End Select If HighWord(wParam) <> 0 Then If g_hWndDlgBox <> 0 Then Call ShowWindow(g_hWndDlgBox, SW_HIDE) Else If g_hWndDlgBox <> 0 Then Call ShowWindow(g_hWndDlgBox, SW_SHOW) End If
但是如果想让窗体A一直处于窗体B的上面,B最小化A也跟着最小化有两个方法:
B.show,A
或者
setwindowlong B.hwnd,GWL_HWNDPARENT,A.hwnd