• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ゲームとかの解像度変更&全画面表示)

ゲームの全画面表示と解像度変更の方法とは?

このQ&Aのポイント
  • ゲームの全画面表示と解像度変更をする方法について教えてください。
  • 具体的な方法を教えていただけると助かります。言語はVBかCを希望します。
  • また、全画面表示や解像度変更に関する情報が分かるサイトも教えていただけると嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.5

あと、右クリックメニューが左クリックしてからじゃないの呼び出せないみたいです。 なぜ・・・。 ひょっとして、うちの環境だけ?

c-time
質問者

お礼

回答ありがとうございます。 返事遅れてすみません。 最近、教えて!gooは、混んでますね(^^; どうも、何度もご丁寧にありがとうございます。 バッチリ分かりました。 うまくいきそうです。 ありがとうございました。

その他の回答 (5)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.6

DirectX8SDKをダウンロードしてみては? VB用、VC++用のサンプルコードがついています。 解像度変更はAPIでも可能ですが 基本的に市販のゲームはDirectXを使用しています。

参考URL:
http://www.microsoft.com/japan/msdn/directx/downloads.asp
c-time
質問者

お礼

回答ありがとうございます。 そうですね。知ってます。 でも、DirectXには触れないでやるのが、「目標」だったんです。 特に市販のゲームのクオリティを目的に勉強してるってワケでは、ないので・・・。 アドバイスありがとうございました。

  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.4

ちなみに、先に SetWindowLong( hWnd, GWL_STYLE, WS_DISABLED | WS_CHILD ); と言ってましたが、WS_POPUP の方がいいみたいです。 SetWindowLong( hWnd, GWL_STYLE, WS_POPUP );

  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.3

typedef struct { int height; int width; } DISPLAYSIZE; static DISPLAYSIZE ds; /*******************************************************************/ /* ウィンドウプロシージャ      */ /*******************************************************************/ LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ){ switch( nMsg ){ case WM_CREATE: getDisplaySize(); DisplayModeFull(); SetWindowLong( hWnd, GWL_STYLE, WS_POPUP ); SetWindowPos( hWnd, HWND_TOP, 0, 0, 640, 480, SWP_SHOWWINDOW ); break; case WM_COMMAND: switch( LOWORD( wParam ) ){ case IDC_QUIT: DisplayModeNormal(); SendMessage( hWnd, WM_CLOSE, 0L, 0L ); break; } break; case WM_RBUTTONDOWN: createPopupMenu( hWnd, lParam ); break; case WM_CLOSE: PostQuitMessage(0); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc( hWnd, nMsg, wParam, lParam ); } return 0L; } /*******************************************************************/ /* ポップアップメニュー      */ /*******************************************************************/ static int createPopupMenu( HWND hWnd, LPARAM lParam ){ HINSTANCE hInst; HMENU hMenu; HMENU hSubMenu; POINT pt; pt.x = LOWORD( lParam ); pt.y = HIWORD( lParam ); hInst = ( HINSTANCE )GetWindowLong( hWnd, GWL_HINSTANCE ); hMenu = LoadMenu( hInst, MAKEINTRESOURCE( IDM_MAINMENU ) ); hSubMenu = GetSubMenu( hMenu, 0 ); ClientToScreen( hWnd, &pt ); TrackPopupMenu( hSubMenu, TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL ); DestroyMenu( hMenu ); return TRUE; } /*******************************************************************/ /* 画面のサイズを記憶しておく   */ /*******************************************************************/ static int getDisplaySize(void){ HWND hDisplayWnd; RECT DisplayRect; hDisplayWnd = GetDesktopWindow(); GetWindowRect( hDisplayWnd, (LPRECT)&DisplayRect ); ds.width = DisplayRect.right; ds.height = DisplayRect.bottom; return TRUE; } /*******************************************************************/ /* フルスクリーンモード      */ /*******************************************************************/ static bool DisplayModeFull(void){ DEVMODE screen_mode; memset( &screen_mode, 0, sizeof( DEVMODE ) ); screen_mode.dmSize = sizeof( DEVMODE ); screen_mode.dmPelsWidth = 640; screen_mode.dmPelsHeight = 480; screen_mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; if( ChangeDisplaySettings( &screen_mode, 0 ) == DISP_CHANGE_SUCCESSFUL ){ return true; } return false; } /*******************************************************************/ /* 終了時にもとの画面に戻す    */ /*******************************************************************/ static bool DisplayModeNormal(void){ DEVMODE screen_mode; memset( &screen_mode, 0, sizeof( DEVMODE ) ); screen_mode.dmSize = sizeof( DEVMODE ); screen_mode.dmPelsWidth = ds.width; screen_mode.dmPelsHeight = ds.height; screen_mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; if( ChangeDisplaySettings( &screen_mode, 0 ) == DISP_CHANGE_SUCCESSFUL ){ return true; } return false; }

  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.2

あと、書き忘れていたんですが、、、 ウィンドウを改造するなら SetWindowLong を使ってください。 SetWindowLong( hWnd, GWL_STYLE, WS_DISABLED | WS_CHILD ); ↑こうするとタイトルウィンドウの無いウィンドウになります。ただ、気をつけなければいけないのは処理とかが終わったら、 SetWindowLong( hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW ); とかのように、もとのスタイルに戻してやるか、右クリックでポップアップメニューを出すとか、マウスポインタがウィンドウ上部に来たらメニューをロードしてやるだとか。とにかく終了してやれる方法を考えておいてください。でないと強制終了しかないようなアプリになります。 また、ウィンドウのサイズと画面のサイズを合わせてやれば全画面になります。たぶん・・・。

  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.1

僕が以前書いたソースで良ければ。 スマートじゃないかもしれませんが・・・。 この関数を好きなところで呼び出せば変更できたと思います。僕はメニューで呼び出しました。 screen_mode.dmPelsWidth = 640; screen_mode.dmPelsHeight = 480; で画面の解像度を変更できます。 ************************************************* /*------ フルスクリーンモード ------*/ bool DisplayModeFull(void){ DEVMODE screen_mode; memset( &screen_mode, 0, sizeof( DEVMODE ) ); screen_mode.dmSize = sizeof( DEVMODE ); screen_mode.dmPelsWidth = 640; screen_mode.dmPelsHeight = 480; screen_mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; if( ChangeDisplaySettings( &screen_mode, 0 ) == DISP_CHANGE_SUCCESSFUL ){ return true; } return false; } *************************************************

関連するQ&A