<div>아래의 소스에서 만약 비주얼 스튜디오로 디버그의 중단점(F9로 설정)을 <span style="font-size:9pt;line-height:1.5;"> </span>EndPaint(hWnd,&ps);<span style="font-size:9pt;line-height:1.5;">에 설정하고</span></div> <div><span style="font-size:9pt;line-height:1.5;">F5키를 눌러서 디버깅을 시작하면 중단점에서 F10이나 F11키를 누르면</span></div> <div>"첫번째 문자열"이 나오고 계속F10키를 누르면 사용가능한 소스가 없다는 에러 메세지가 나오는데</div> <div>여기서 <span style="font-size:9pt;line-height:1.5;">F5키를 누르고 중단점에서 F10을 누르면 </span><span style="font-size:9pt;line-height:1.5;">"두번째 문자열" 이 나오고 계속해서 </span><span style="font-size:9pt;line-height:1.5;">"세번째 문자열" "네</span><span style="font-size:9pt;line-height:1.5;">번째 문자열" </span></div> <div><span style="font-size:9pt;line-height:1.5;">그리고 "첫번째 문자열"로 루프를 도는데요</span></div> <div><span style="font-size:9pt;line-height:1.5;">근데 이 예제는 화면을 나타내는 직사각형 윈도우의 크기가 300,100으로 작아서, </span></div> <div><span style="font-size:9pt;line-height:1.5;">비주얼 스튜디오의 윈도우가 이 디버그를 실행하는 윈도우를 충분히 가리지 않게 약간 비주얼 스튜디오 창을 작게해서 전체 출력을 볼 수 있는데요,</span></div> <div><span style="font-size:9pt;line-height:1.5;">문제는 만약 API소스중에 디버그시 화면 전체에 문자열이 나타나게 하는 소스가 있다면</span></div> <div>이 소스의 출력 결과를 디버그해서 확인할때</div> <div><span style="font-size:9pt;line-height:1.5;">비주얼 스튜디오에서 F5키를 눌러서 디버그를 실행하다가 중단점에서 F10키를 눌러서 한문장씩 실행해도 비주얼 스튜디오의 창이 출력화면의 일부를 가리게 되는데 그 가려진 부분을 보이는 부분으로 이동시켜도 출력이 이상하게 나오는데 여기서 다시 첨부터 F5키를 눌러서 중단점에서 비주얼 스튜디오 창이 출력되는 부분을 가리지 않도록 비주얼 스튜디오 창을 이동하거나 작게 조절한후 다시 F10키를 눌러서 한 문장씩 디버그를 하면 출력이 나오는데 이거 너무 불편하더군요.</span></div> <div>이문제는 C++이나 C소스와 달리 API는 출력화면을 다른 윈도우로 가리게 되면 출력화면이 지워지게 되는 특징이 디버깅할때도 계속 되기 때문에 발생하는 문제인 거 같은데 API 소스를 디버그할때 다른 윈도우가 가리면 출력화면이 지워지지 않게 만들 수 없을까요?</div> <div>혹시 디버그시 출력화면을 비주얼 스튜디오의 창이 가려도 지워지지 않게 할 수 있는 방법이 있거나 혹은 비주얼 스튜디오 창을 최소화 한 상태에서 단축키만으로 디버그를 할수 있는 방법을 알고 계시다면 가르쳐 주셨으면 정말 좋겠네요.</div> <div><br></div> <div>#include <windows.h></div> <div><br></div> <div> LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);</div> <div> HINSTANCE g_hInst;</div> <div><br></div> <div> int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR nCmdLine,int nCmdShow)</div> <div> {</div> <div> LPCTSTR szClassName = TEXT("클래스");</div> <div> LPCTSTR szTitle = TEXT("TimerText");</div> <div> </div> <div> HWND hWnd;</div> <div> MSG msg;</div> <div> g_hInst = hInstance;</div> <div> WNDCLASSEX wc;</div> <div><br></div> <div> wc.cbSize = sizeof(WNDCLASSEX);</div> <div> wc.style = CS_HREDRAW | CS_VREDRAW;</div> <div> wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);</div> <div> wc.hCursor = LoadCursor(NULL,IDC_ARROW);</div> <div> wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);</div> <div> wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);</div> <div> wc.lpfnWndProc = WndProc;</div> <div> wc.hInstance = hInstance;</div> <div> wc.lpszClassName = szClassName;</div> <div> wc.lpszMenuName = NULL;</div> <div> wc.cbClsExtra = 0;</div> <div> wc.cbWndExtra = 0;</div> <div><br></div> <div> RegisterClassEx(&wc);</div> <div><br></div> <div> hWnd = CreateWindow(</div> <div> szClassName,</div> <div> szTitle,</div> <div> WS_OVERLAPPEDWINDOW,</div> <div> CW_USEDEFAULT,</div> <div> CW_USEDEFAULT,</div> <div> 300,</div> <div> 100,</div> <div> 0,</div> <div> 0,</div> <div> hInstance,</div> <div> NULL</div> <div> );</div> <div> </div> <div> if( !hWnd )</div> <div> {</div> <div> return (FALSE);</div> <div> }</div> <div><br></div> <div> ShowWindow(hWnd,nCmdShow);</div> <div> UpdateWindow(hWnd);</div> <div><br></div> <div> while( GetMessage(&msg,NULL,0,0) )</div> <div> {</div> <div> TranslateMessage(&msg);</div> <div> DispatchMessage(&msg);</div> <div> }</div> <div><br></div> <div> return msg.wParam;</div> <div> }</div> <div><br></div> <div> LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)</div> <div> {</div> <div> HDC hdc;</div> <div> PAINTSTRUCT ps;</div> <div> static TCHAR sTime[][20] = {</div> <div> TEXT("첫번째 문자열"),</div> <div> TEXT("두번째 문자열"),</div> <div> TEXT("세번째 문자열"),</div> <div> TEXT("네번째 문자열")</div> <div> };</div> <div> static int i=0;</div> <div> </div> <div> switch( uMsg )</div> <div> {</div> <div> case WM_CREATE:</div> <div> SetTimer(hWnd,1,2000,NULL);</div> <div> break;</div> <div> case WM_TIMER:</div> <div> i++;</div> <div> if( i > 3 )</div> <div> {</div> <div> i=0;</div> <div> }</div> <div> InvalidateRect(hWnd,NULL,TRUE);</div> <div> break;</div> <div> case WM_PAINT:</div> <div> hdc = BeginPaint(hWnd,&ps);</div> <div> TextOut(hdc,10,10,sTime[i],lstrlen(sTime[i]));</div> <div> EndPaint(hWnd,&ps);</div> <div> break;</div> <div> case WM_DESTROY:</div> <div> KillTimer(hWnd,1);</div> <div> PostQuitMessage(0);</div> <div> break;</div> <div> }</div> <div><br></div> <div> return DefWindowProc(hWnd,uMsg,wParam,lParam);</div> <div> } </div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.