2011-12-03 2 views
0

C++로 Windows 응용 프로그램을 만들고 있습니다. SDL (http://www.libsdl.org/)을 사용하고 있습니다. 그러나이 문제는 이전에 MFC에서 전에도 같은 문제가 있었으므로이 문제를 해결하지 못했기 때문에 C++로 작성된 여러 다른 유형의 Windows 응용 프로그램에 적용됩니다.Windows C++ 응용 프로그램을 최대로 시작하는 방법은 무엇입니까?

이제 응용 프로그램이 최대화되기를 바랍니다. 대부분의 다른 응용 프로그램은 기본적으로 최대화 상태로 시작됩니다. 예를 들어 firefox를 실행하면 자동으로 최대화됩니다.

지금 내가 사용할 수있는 읽기이 ShowWindow 호출하여 http://msdn.microsoft.com/en-us/library/ms633548

:

ShowWindow(info1.window, SW_MAXIMIZE); 

사용자가 최대화 버튼을 클릭 한 것과이 호출 할 때 다음을 최대화 창. 그러나 문제는 내 응용 프로그램이 시작될 때 먼저 ShowWindow가 호출 될 때 특정 크기 (예 : 700 x 500)로 시작한 다음 최대화합니다. 이것은 파이어 폭스가 시작되는 방식과 파이어 폭스가 시작되는 방식 사이에 큰 차이가 있으며 처음에는 작은 크기로 나타나지 않고 최대화 된 것처럼 보입니다.

그래서 내 질문은 ShowWindow가 호출되기 전에이 중간 창 크기 (최대화되지 않은)없이 최대화를 시작하는 방법입니까? 사용자가 시작할 때 갑자기 최대화되는 작은 창을 보는 것은 성가신 일입니다. 어떻게 MFC 또는 DOT NET에서 그것을 말해 줄 수 있다면


, 나는 아마 SDL에서 그것을 어떻게 해결할 수 같아요.

+0

저는 C++이 윈도우를 전혀 처리하지 않는다고 생각합니다. 그래서 어떤 프레임 워크를 사용하고 있습니까 ??? – Qchmqs

+0

처음에 창을 어떻게 만듭니 까? – Mat

+0

SDL을 사용하여 C++ 언어로 Windows 응용 프로그램을 작성하고 있지만이 문제는 이전에 작성한 모든 Windows 응용 프로그램에 공통적 인 문제입니다. 과거에 Windows MFC 응용 프로그램을 다시 프로그래밍했습니다. 2001 년에 내 앱 중 하나를 볼 수 있습니다 http://www.codeproject.com/KB/edit/hexedit.aspx – Phil

답변

2

SPI_GETWORKAREA를 사용하여 SystemParametersInfo Windows API 함수를 호출하여 작업 표시 줄없이 화면의 너비와 높이를 가져오고 CreateWindow를 이러한 값으로 호출 할 때 창 크기를 설정하십시오. (SM_CXSCREEN 및 SM_CYSCREEN을 사용하여 GetSystemMetrics를 호출하여 화면의 너비와 전체 높이를 얻을 수도 있지만이 경우에는 창의 아래쪽 가장자리가 작업 표시 줄에 의해 숨겨집니다.)

+0

그러나 이것은 실제로 최대화 된 창이 아닐까요? 이 종류의 최대화는 화면 크기에 맞게 화면 크기를 조정하는 것입니다. 이것은 최대화 버튼을 클릭하는 것과 같지 않습니다. 정말 최대화 된 창은 제목 표시 줄로 끌 수 없습니다. 동의하니? – Phil

+0

예. 그러나 창 크기를 CreateWindow에서 작업 영역 크기로 설정 한 다음 SW_MAXIMIZE로 ShowWindow를 호출하면 창이 최대화 된 상태로 표시되고 최대화됩니다. 처음에는 작은 크기로 나타나지 않을 것입니다. 문제는 - 제대로 이해한다면. – kol

+0

아하이 봐요. 그래서 사용자는 이미 더 큰 크기에서 시작했기 때문에 최대화되었음을 알 수 없습니다. 그러나 윈도우가 왼쪽 상단에 정확하게 위치합니까? – Phil

2

SDL_VIDEO_WINDOW_POS 환경 변수 (http://sdl.beuc.net/sdl.wiki/SDL_envvars 참조)를 사용하여 창을 화면의 왼쪽 상단 모서리에 놓습니다. 위 게시물의 SM_CXSCREEN 및 SM_CYSCREEN과 함께 SystemParametersInfo를 사용하여 (SDL_SetVideoMode를 호출하는 경우) 창의 크기를 결정합니다. 이 방법은 화면에서 화면을 최대화합니다.

다른 방법은 창 스타일을 WS_MAXIMIZE로하여 CreateWindow를 사용하여 직접 창을 만들고 SDL_WINDOWID 환경 변수를 통해 SDL에 전달하는 것입니다.

관련 문제