2011-08-13 16 views
0

私は現在デバッグモードで実行しているMFCプロジェクトを持っています。デバッグモードで実行中のメインビューの表示方法 - MFC

私はこの「実行」ボタンをクリックします。これをクリックすると、アルゴリズムが実行され、最終的には描画されます。

実行をクリックした後、私はメインビューを見ていました。 しばらくすると(何が変更されたかわかりません)、をクリックした後、ビューは(Visual Studioの後ろに)戻ってきました。私はShow_Window(SW_SHOW)を "run"の冒頭で使用して修正できました。

今は何も私も、私は常に実行をクリックした後、私のビューの上のVisual Studioを取得OnDrawと

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

を試してみましたworking-であると思いません! (ないブレークポイント、例外が...存在しない場合でも)

ここに私の実行機能である:それは私がRunAlgorithm ::実行をコメントアウトする場合、問題が発生しないことに気づいた

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... 

が、それは実際には機能で時間がかかる唯一の事実のためかもしれません... 誰も私に方向を教えてくださいできますか?

私は、Visual Studio 2008 Professional Editionの

感謝を使用しています!

答えて

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

関連する問題