2011-08-13 2 views
0

현재 디버그 모드에서 실행중인 MFC 프로젝트가 있습니다.디버그 모드에서 실행할 때 기본보기를 표시하는 방법 - MFC

이 "실행"버튼을 클릭하면 알고리즘이 실행되고 결국에는 일이 그려집니다.

이전에는 실행을 클릭 한 후 기본보기를 계속 보았습니다. 잠시 후 (변경된 내용이 확실하지 않은 경우)을 클릭하면보기가 Visual Studio 뒤에 표시됩니다. 나는 "실행"의 맨 처음에 Show_Window (SW_SHOW)를 사용하여 문제를 해결할 수있었습니다. 나는 또한 내가 항상 실행을 클릭 한 후 내보기의 상단에서 Visual Studio를 얻을으로 OnDraw 및

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

을 시도 working-

지금 아무것도 할 것 같다! (더 중단 점, 예외 ...가없는 경우에도)

여기

내 실행 기능입니다 :

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

관련 문제