如何在调试模式下运行时显示主视图 - MFC

时间:2011-08-13 21:08:42

标签: visual-studio-2008 mfc

我有一个MFC项目,我目前正在调试模式下运行。

我有这个“运行”按钮,当我点击它时,我的算法运行,最终得到的东西。

过去,点击运行后,我一直看到主视图。 过了一会儿(不确定是什么改变了它),点击后,视图转到后面(在Visual Studio后面)。我能够在“run”的最开始使用Show_Window(SW_SHOW)修复它。

现在似乎没有任何工作 - 我也尝试过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 :: run时,问题不会发生,但可能是因为它是函数中实际需要时间的唯一事实...... 有人可以给我指点吗?

我使用的是Visual Studio 2008专业版

谢谢!

2 个答案:

答案 0 :(得分:0)

听起来像是Visual Studio或插件的问题,而不是您的程序。 看看这个:Visual Studio always on top when debugging

如果它不起作用,那么您可以尝试强制您的窗口成为具有SetForegroundWindow功能的前景窗口。

答案 1 :(得分:0)

RunAlgorithm::run需要多长时间?我需要更多信息,但似乎你正在阻止UI线程。如果这是一个很长的操作,你应该创建一个工作线程。

如果问题是你的视图即使在完成RunAlgorithm :: run之后也没有出现,你可以尝试移动ShowWindow(SW_SHOW);在代码中长时间操作之后。

顺便说一下,我认为从这里调用OnDraw没有任何意义。如果您希望在长时间操作后绘制视图,则应调用Invalidate并让视图自行绘制。

哈维尔