2011-08-13 12 views
0

我有一個MFC項目,目前我正在調試模式下運行。如何在調試模式下運行時顯示主視圖 - MFC

我有這個「運行」按鈕,當我點擊它時,我的算法運行,並最終得到繪製。

在過去,點擊運行後,我繼續看到主視圖。 過了一會兒(不知道是什麼改變了它),點擊後,視圖進入了後面(在Visual Studio後面)。我可以通過在「運行」開始時使用Show_Window(SW_SHOW)來修復它。

現在似乎沒有什麼是working-我也嘗試過的OnDraw和

`SetWindowPos(&CWnd::wndTop,0, 0, 0, 0,SWP_NOMOVE | SWP_NOSIZE);` 

我總是得到的Visual Studio對我的看法的頂部點擊運行後! (即使沒有斷點,異常...)

這裏是我的運行功能:

void CMaBakerView::maBakerRun(){ 
SetWindowPos(&CWnd::wndTop,0, 0, 0, 0,SWP_NOMOVE | SWP_NOSIZE); 

CRect ClientRect; 
GetClientRect(ClientRect); 
CDC* pDC = GetDC(); 
OnDraw(pDC); 

int xMax = ClientRect.right; 
int yMax = ClientRect.bottom; 

//fillGUIData(); 

try 
{ 
    ShowWindow(SW_SHOW); 
    RunAlgorithm::run(xMax, yMax);//Here only pure logic is run, i can post the code of it if anyone thinks its relevant 
      //Other nonimportant code 
    } catch... 

我注意到,註釋掉RunAlgorithm ::運行時,不會出現問題,但它可能是由於這是唯一真正需要時間的功能... 任何人都可以請給我一個方向嗎?

我正在使用Visual Studio 2008專業版

謝謝!

回答

0

聽起來像Visual Studio或插件的問題,而不是與您的程序。 檢查了這一點:Visual Studio always on top when debugging

如果它不起作用,那麼你可以嘗試迫使你的窗口成爲與SetForegroundWindow函數的前景窗口。

+0

感謝您的回覆。我試過setforegrounwindow,並沒有幫助。任何其他方向? – Ginandi

0

RunAlgorithm::run需要多長時間?我需要更多的信息,但似乎你阻止了UI線程。如果這是一個長期的操作,你應該創建一個工作線程。

如果問題是您的視圖即使在完成RunAlgorithm :: run後仍未顯示出來,您可以嘗試移動ShowWindow(SW_SHOW);在代碼中長時間運行之後。

順便說一句,我不認爲從這裏調用OnDraw是有道理的。如果你想在長時間的操作後畫出你的視圖,你應該調用Invalidate並讓視圖畫出來。

哈維爾

+0

感謝您的回覆。 RunAlgorithm :: run確實需要很長時間。我試着將它作爲一個線程來運行,並且在創建了我稱爲ShowWindow(SW_SHOW)的線程之後。它沒有解決問題...你能想出一個原因嗎? – Ginandi

相關問題