2015-04-14 59 views
1

我已經寫在VB6的窗口形式的應用程序。它工作正常,直到我們的用戶最近從WinXP升級他們的工作站到Win7。她是這個問題的細節:VB6新形式/ MSGBOX彈出後面父窗體上的Win7

子窗體或消息框打開父窗體後面。用戶無法做任何事情,因爲應用程序專注於子窗體/消息框。他們必須使用任務管理來殺死整個應用程序。此外,這個問題隨機發生(一天一次或兩次)。我無法在我的開發工作站中複製該問題。有沒有人有類似的問題?或任何建議會有幫助?

我試圖在用戶的機器下面的東西,但他們沒有工作:

  1. 設置爲適用於Windows XP(Service Pack 3中)兼容模式下運行的應用程序。
  2. 在其工作站上授予用戶本地管理權限。
  3. 請確保用戶的計算機上的所有引用和組件是相同的版本作爲我們的開發工作站。

非常感謝您

下面是彈出一個子窗口代碼:

frmClinicalQuestion2.txtCQTwoComments.Text = Trim(m_QViolComm) 
frmClinicalQuestion2.txtCQTwoHistoryComments.Text = Trim(m_QViolHistComm) 
Call SetValues(txtQ2, OptQ2, m_QViol) 
Call SetValues(frmClinicalQuestion2.txtCQTwo, frmClinicalQuestion2.OptCQTwo, m_QViolHist) 
frmClinicalQuestion2.Show 1, frmClinical 

這裏是如何卸載窗體:

Unload frmClinicalQuestion2 
+0

將需要爲了一些代碼示例複製並尋找溶液 – edtheprogrammerguy

+0

被設置爲「最上面」表示子形式時,例如母體形式(frmClinical)使用'SetWindowPos(frmClinical.hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE或SWP_NOSIZE)'?如果是這樣的話,那麼子表單也必須放在最頂層,通常在其Form_Activate()事件處理程序中。但是隨機性只能在以下情況下解釋:(1)使frmClinical最上層是可選的(由用戶設置,例如在選項中); (2)如果最上面的標誌,其實不是你的程序,而是通過其他程序(AHK腳本,一個窗口/虛擬桌面管理器一樣Dexpot,AquaSnap等)設置 – johnwait

+0

是frmClinicalQuestion2形式的定義或聲明的實例?雖然允許,但使用「默認」引用可能會遇到嚴重問題。做'Dim lfrmClinicalQuestion2'作爲新的frmClinicalQuestion2'。在設置表單的各種值時使用此引用,然後執行'lfrmClinicalQuestion2.Show vbModal'對於'frmClinical'和您從應用程序中調用的任何其他表單,也是如此。在使用所描述的實例時,我從來沒有遇到過沒有以適當的z順序出現的表單實例。 –

回答

0

設置應用程序後,在Windows XP(Service Pack 3)的兼容模式下運行,問題頻率從每天2〜3次降至1〜2次。用戶現在可以使用此解決方案。我們很快就會用.NET框架重寫這個項目。謝謝@johnwait和@Craig Johnson給我的建議。