Как показать основной вид при работе в режиме отладки - MFC - PullRequest
0 голосов
/ 14 августа 2011

У меня есть проект MFC, который я сейчас запускаю в режиме отладки.

У меня есть эта кнопка «Выполнить», которая, когда я нажимаю на нее, запускает мой алгоритм, и в конечном итоге все прорисовывается.

Раньше, после нажатия кнопки Run, я продолжал видеть основной вид.Через некоторое время (не уверен, что это изменило) представление переместилось назад (за Visual Studio) после нажатия кнопки while.Я смог исправить это с помощью Show_Window (SW_SHOW) в самом начале «запуска».

Теперь, похоже, ничего не работает - я также пробовал OnDraw и

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

Iвсегда ставьте Visual Studio поверх моего вида после нажатия кнопки "Run" !!!(даже если нет точек останова, исключений ...)

Вот моя функция запуска:

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 голосов
/ 14 августа 2011

Сколько времени занимает RunAlgorithm::run?Мне нужно больше информации, но кажется, что вы блокируете поток пользовательского интерфейса.Если это длинная операция, вы должны создать рабочий поток.

Если проблема в том, что ваше представление не отображается даже после завершения RunAlgorithm :: run, вы можете попробовать переместить ShowWindow(SW_SHOW);после долгой операции в коде.

Кстати, я не думаю, что вызывать OnDraw отсюда имеет смысл.Если вы хотите, чтобы ваш вид был нарисован после длительной операции, вы должны вызвать Invalidate и позволить представлению нарисовать себя.

Хавьер

0 голосов
/ 14 августа 2011

Звучит как проблема с Visual Studio или надстройкой, а не с вашей программой.Проверьте это: Visual Studio всегда на вершине при отладке

Если это не сработает, тогда вы можете попытаться заставить свое окно быть окном переднего плана с помощью SetForegroundWindow функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...