2011-09-14 6 views
1

창과 CMD를 함께 표시하는 방법이 있습니까? 내 Windows 응용 프로그램에서 디버깅 정보 로거로 cmd를 사용하고 싶습니다.창 및 명령 줄 프롬프트 표시 방법?

+1

아마도 [시도해보십시오] (http://dslweb.nwnexus.com/~ast/dload/guicon.htm) ... –

+2

저렴한 옵션으로 OutputDebugString + dbmon.exe를 sdk/sysinternals 디버그 뷰 –

+0

에서 디버깅 할 수 있습니다 또는 최종 사용자를위한? (편집 : 나는 방금 전에 언급 된'OutputDebugString'을 생각하고 있었기 때문에 이것을 물었다.) – AJG85

답변

2

두 가지 접근 방법이 있습니다.

  1. 당신은 윈도우 응용 프로그램으로 응용 프로그램을 연결을 계속하고있는 당신이 할 수있는 출력에 디버깅 정보를 콘솔 창을 만들 AllocConsole를 사용할 수 있습니다. 이 명령은 커널 핸들 만 열어 주므로 stdout/stderr를 콘솔에 연결하려면 _open_osfhandle_fdopen을 사용해야합니다.

  2. _tWinMain() 대신 _tmain으로 시작한다는 것을 잊지 말고 응용 프로그램을 콘솔 응용 프로그램으로 연결할 수 있습니다.

1

예 가능합니다. 콘솔 응용 프로그램을 작성하고 일반 창 등록을 진행하고, 창을 만들고 이벤트를 수신하십시오. 윈도우 메시지 루프가있는 스레드와 동일한 스레드에서 블로킹 표준 입력을 사용하는 것은 피해야합니다 (콘솔 입력 작업이 끝나지 않는 한 창은 응답하지 않습니다).

창 응용 프로그램에서 여전히 allocate a console을 사용할 수 있지만 표준 출력과 표준 오류가 콘솔 I/O 버퍼에 바인딩되어 있는지 확실하지 않습니다.

1

콘솔 응용 프로그램은 CreateWindow을 호출하고 창 응용 프로그램과 같은 메시지 루프를 수행하여 창을 관리 할 수 ​​있습니다.

어떤 응용 프로그램 (WinMain으로 입력하는 응용 프로그램)이라도 콘솔을 AllocConsole과 연결할 수 있습니다.

그들은별로 다르지 않습니다! ;-)

+0

'AllocConsole '호출은 쉬운 부분이다; 콘솔에 부착 된 표준 입출력을 얻는 것은 아닙니다 :-) –

+0

그리고 GUI 응용 프로그램을 가지고 있다면 시작 프로세스에서 이미 콘솔을 다시 사용할 수 없습니다 – Joey

+0

@Kerrek : 저는 보통 "CON"쪽으로 fstream을 엽니 다. 파일. –

1

Visual C++ 환경에서 디버깅 용도로만 사용하려는 경우 Windows 정의 매크로 TRACE()를 사용하지 않는 이유는 무엇입니까? 디버깅의 목적을 잘 수행합니다. Visual Studio의 출력 창에 씁니다. 그리고 그것은 매우 간단합니다.

관련 문제