
ワケあって、「ゲーム」について研究してます。
「処理を速くする」などを目的として、
全画面表示&解像度変更をするゲームってありますよね?
アレはどうやってるんでしょうか?
Win32 API?
DirectX?
もしそうなら、DirectX以外でやることは出来ますか?
ちゃちなアクションゲームを作った事がありますが、全画面表示とか、頭回らなかった(^^;
また、何もかも独学で頑張ってるので、カンジンな知識が抜けてたり、引数(インスウ)って未だに読んでたりします(笑)
こんな僕でも分かるようにかみ砕いて、誰か教えてください。
また、ソレが分かるサイトとかもあったら教えてください。
基本的なやり方は同じだと思うのですが、もし具体的に教えて頂けるなら、言語はVBか、Cでお願いしますです。
「本買え」ってのは、言わないでくださいね(^^;
スグに日本語の本が安く手に入る環境じゃないんです。
よろしくお願いします。
No.6
- 回答日時:
DirectX8SDKをダウンロードしてみては?
VB用、VC++用のサンプルコードがついています。
解像度変更はAPIでも可能ですが
基本的に市販のゲームはDirectXを使用しています。
参考URL:http://www.microsoft.com/japan/msdn/directx/down …
回答ありがとうございます。
そうですね。知ってます。
でも、DirectXには触れないでやるのが、「目標」だったんです。
特に市販のゲームのクオリティを目的に勉強してるってワケでは、ないので・・・。
アドバイスありがとうございました。
No.4
- 回答日時:
ちなみに、先に
SetWindowLong( hWnd, GWL_STYLE, WS_DISABLED | WS_CHILD );
と言ってましたが、WS_POPUP の方がいいみたいです。
SetWindowLong( hWnd, GWL_STYLE, WS_POPUP );
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;
}
No.2
- 回答日時:
あと、書き忘れていたんですが、、、
ウィンドウを改造するなら SetWindowLong を使ってください。
SetWindowLong( hWnd, GWL_STYLE, WS_DISABLED | WS_CHILD );
↑こうするとタイトルウィンドウの無いウィンドウになります。ただ、気をつけなければいけないのは処理とかが終わったら、
SetWindowLong( hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW );
とかのように、もとのスタイルに戻してやるか、右クリックでポップアップメニューを出すとか、マウスポインタがウィンドウ上部に来たらメニューをロードしてやるだとか。とにかく終了してやれる方法を考えておいてください。でないと強制終了しかないようなアプリになります。
また、ウィンドウのサイズと画面のサイズを合わせてやれば全画面になります。たぶん・・・。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) このWEB用語、WEB文章、意味が分かりますか? 理解できない人が多いようなんですが・・・ 7 2022/10/22 09:13
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- 発達障害・ダウン症・自閉症 私は幼い頃から周りの子と変わったところがあり社会人になってからも仕事が長続きせず上手くいかないことだ 3 2022/08/26 13:24
- テレビ プレステ5が映らなくりました 1 2023/07/13 11:09
- モニター・ディスプレイ ワイドモニターの解像度が合わずMacの画面が横に伸ばされて表示されてしまう 2 2022/08/09 07:53
- Windows 10 Windows10 の設定?について (長文ですがよろしくお願いします)m(_ _)m 3 2022/05/14 12:22
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
- iOS iPhoneの画面が見切れて困ってます ゲーム画面などで文字が見切れてしまっていたり タップする部分 2 2022/07/05 22:45
- モニター・ディスプレイ PCのマルチディスプレイで複製はできますが拡張ができません 1 2023/08/09 01:29
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
プログラミングを学べる!?進化している子どものおもちゃについて専門家に聞いた!
プログラミングを学べるレゴブロックがあることはご存知だろうか。レゴに限らず最近のおもちゃには、プログラミングの要素がどんどん取り入れられているようだ。「教えて!goo」にも、「プログラミングを学べる子供...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
数学、プログラミング、物理、...
-
画像生成AIのプロンプトの作り...
-
Python... 環境設定 初心者です...
-
OS入ってる機器のソフト・アプ...
-
pip --versionがエラーになる
-
パイソンのソースコードをChatG...
-
pythonの実行に関する質問
-
Python 3.12.2 か一番最新のパ...
-
CSVファイルの複数行削除
-
Webサイト内に埋め込んだmp4動...
-
ExcelVBAでFormulaR1C1を列範囲...
-
Pythonのエラーメッセージをコ...
-
ネットワークフォルダの中身を...
-
Pythonで仮想通貨の自動売買が...
-
AIの登場でプログラマーたちが...
-
Google ColaboでGUI作成
-
Pythonについて。
-
HTMLソースが表示のページのも...
-
MOVEコマンドでサブフォルダー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
CSVファイルの複数行削除
-
OS入ってる機器のソフト・アプ...
-
Python 3.12.2 か一番最新のパ...
-
pythonの実行に関する質問
-
パイソンのソースコードをChatG...
-
画像生成AIのプロンプトの作り...
-
数学、プログラミング、物理、...
-
pip --versionがエラーになる
-
Google ColaboでGUI作成
-
Python... 環境設定 初心者です...
-
HTMLソースが表示のページのも...
-
ネットワークフォルダの中身を...
-
MOVEコマンドでサブフォルダー...
-
google Colabでmatplotlibの描...
-
VBAでパワーシェルを実行したい...
-
Pythonでの文字列からfloatへの...
-
Webサイト内に埋め込んだmp4動...
-
初心者powershellのPS1ファイル...
-
pythonについて(初心者です)
おすすめ情報