2

C++でWindowsアプリケーションを作成しています。私はSDL(http://www.libsdl.org/)を使用していますが、この質問は、C ++で記述された他の多くの種類のWindowsアプリケーションに当てはまります。これは、数年前にMFCで同じ問題が発生し、この問題を解決できなかったためです。

ここで、アプリケーションを最大化して起動したいと思います。他の多くのアプリケーションはデフォルトで最大化された状態で起動します。たとえば、Firefoxを実行すると、自動的に最大化されて起動します。

これで、ShowWindowhttp://msdn.microsoft.com/en-us/library/ms633548を使用できることを読みました

電話で:

ShowWindow(info1.window, SW_MAXIMIZE);

次に、ユーザーが最大化されたボタンをクリックしたかのように呼び出されると、ウィンドウが最大化されます。ただし、問題は、アプリケーションが起動すると、最初に特定のサイズ(たとえば、700 x 500)で起動し、次にShowWindowが呼び出されると、最大化することです。これは、Firefoxの起動方法と、Firefoxが起動し、最初に小さいサイズで表示されることなく最大化されて表示される方法との大きな違いです。

だから私の質問は、ShowWindowが呼び出される前にこの中間ウィンドウサイズ(最大化されていない)なしで最大化を開始する方法ですか?起動時に突然最大になる小さなウィンドウが表示されるのは、ユーザーにとって煩わしいことです。


MFCまたはDOTNETでそれを行う方法を教えていただければ、おそらくSDLでそれを行う方法を理解できると思います。

4

2 に答える 2

3

SPI_GETWORKAREAを指定してSystemParametersInfoWindowsAPI関数を呼び出して、タスクバーなしで画面の幅と高さを取得し、CreateWindowを呼び出すときにウィンドウサイズをこれらの値に設定します。(SM_CXSCREENおよびSM_CYSCREENを指定してGetSystemMetricsを呼び出して、画面の幅と高さ全体を取得することもできますが、この場合、ウィンドウの下端はタスクバーによって非表示になります。)

于 2011-12-03T14:11:43.177 に答える
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に渡すことです。

于 2012-03-14T20:51:58.980 に答える