2012-01-30 1 views
0

C++에서 Windows 응용 프로그램을 만들고 TaskDialog (http://msdn.microsoft.com/en-us/library/windows/desktop/bb760540(v=vs.85).aspx 참조) 만 표시해야합니다. TaskDialog에는 매개 변수로 전달 된 텍스트가 명령 줄에 표시되어야합니다.C++에서 TaskDialog를 보여주는 Windows 응용 프로그램을 만드는 방법

"Win32 콘솔 응용 프로그램"을 만들고 TaskDialog을 호출 할 수 있지만 콘솔의 검은 색 창이 나타납니다.

"Windows 응용 프로그램"을 만들고 TaskDialogWinMain에 호출하면이 솔루션에 문제가 있습니까?

다른 아이디어가 있습니까?

+1

저는 Visual Studio를 사용하고 있다고 가정합니다. 창과 대화 상자가있는 경우 콘솔 응용 프로그램을 만들고 싶지 않습니다. 'TaskDialog' 또는'TaskDialogIndirect'를 사용할 수 있지만 Vista 또는 Windows 7에 있어야합니다. – AJG85

답변

4

"Windows 응용 프로그램"을 만들고 WinMain에서 TaskDialog를 호출 할 수 있습니다.이 솔루션에 문제가 있습니까?

즉, 이러한 앱을 구현하는 방법입니다. 모든 문제는 없습니다. 물론 코드에서 윈도우를 명시 적으로 생성하지 않고 메시지 루프를 실행하지 않습니다. TaskDialog으로 전화하십시오.

요점은 발견 한 것처럼 콘솔 창이 기본적으로 표시되기 때문에 콘솔 앱을 원하지 않는다는 것입니다. 콘솔 서브 시스템과 GUI 서브 시스템이라는 두 개의 주요 서브 시스템이 있습니다. 후자는 다소 혼란스럽게 이름 지어졌습니다. GUI 하위 시스템 앱에서 GUI를 보여야하는 것은 아닙니다. 그렇게할지 여부는 사용자에게 달려 있습니다. 정말 선택의 여지가 당신이 콘솔을 원하는 여부로 온다. 따라서 서브 시스템은 콘솔과 비 콘솔로 더 잘 명명 될 수 있습니다!

+0

감사합니다. 예, "그냥 TaskDialog 호출"쓸 때 창을 만들지 않고 메시지 루프를 실행하지 마십시오. –

+0

그러면 문제가 이미 올바르게 해결되었습니다! –

+1

'TaskDialog'는 메시지 루프를 실행합니다 : "TaskDialog 함수는 작업 대화 상자를 생성, 표시 및 ** 작동합니다 **". 아마도 여기에서 당신을 해치지 않을 것이지만, 일부 기능이 이것을 이해한다는 것이 중요합니다. (MessageBox는 똑같습니다.) – MSalters

1

빈 Windows 응용 프로그램을 만들어야합니다.

Windows 응용 프로그램의 진입 점 호출되어의 WinMain이며, 다음과 같습니다

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) 
{ 
    //Place your code here 
} 

이 솔루션이 올바른지 의미한다. 응용 프로그램이 Comctl32.dll의 버전 6을 사용하는지 확인해야합니다. 그렇지 않으면 TaskDialog가 실패합니다.

+3

사소한 수정. 'TaskDialog'는 비주얼 스타일없이 잘 동작합니다. comctl v6 만 있으면됩니다. 이 두 가지는 꽤 똑같은 것은 아닙니다. 예를 들어 Windows Classic 테마를 고려하십시오. –