ウィンドウを作るためには
次の手順でプロジェクトを作ります

&ref(project1.jpg);
&ref(project2.jpg);
&ref(project3.jpg);

コンソールアプリケーションの選択をWindowsアプリケーションにするだけですね

-------------------------

今回使うファイルは次のようになってます。どぞー(-ω-)つ旦
・&ref(window.cpp);
zipでほしい人はこちら
・&ref(window.zip);

SIZE(20){ COLOR(#ffaa00){Windowsアプリケーションで作成したプロジェクトはmain関数でなくWinMain関数から始まります}}
見慣れない変数やら関数が出てきますが・・・
とりあえず、コピペして実行してみてください

 #include <Windows.h>
 #include <tchar.h>
 
 // ウィンドウプロシージャ、ウィンドウに対するメッセージ処理を行う
 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
 	
 	switch(msg){
		// ウィンドウが破棄されたとき
	case WM_DESTROY:
		PostQuitMessage(0);	// WM_QUITメッセージをメッセージキューに送る
		return 0;
	}
	// デフォルトのメッセージ処理を行う
	return DefWindowProc(hWnd, msg, wParam, lParam);
 }
 
 // WinMain関数(アプリケーションの開始関数)
 // コンソールアプリケーションと違い、コンソールを開かない
 int _stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
 {
	const TCHAR* WC_BASIC = _T("BASIC_WINDOW");
	// シンプルウィンドウクラス設定
	WNDCLASSEX wcex ={sizeof(WNDCLASSEX), CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS,WndProc, 0,0,hInstance,
		(HICON)LoadImage(NULL,MAKEINTRESOURCE(IDI_APPLICATION),IMAGE_ICON,0,0,LR_DEFAULTSIZE | LR_SHARED),
		(HCURSOR)LoadImage(NULL,MAKEINTRESOURCE(IDC_ARROW),IMAGE_CURSOR,0,0,LR_DEFAULTSIZE | LR_SHARED), 
		(HBRUSH)GetStockObject(WHITE_BRUSH), NULL, WC_BASIC , NULL};
 
	// シンプルウィンドウクラス登録
	if(!RegisterClassEx(&wcex)) 
		return false;
 
	// ウィンドウ幅、高さはディスプレイに依存する。普通は4:3
	const int WINDOW_WIDTH = 640;
	const int WINDOW_HEIGHT = 480;
	// ウィンドウの作成
	HWND hWnd = CreateWindowEx(0,WC_BASIC,
		_T("Application"), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_VISIBLE,
		CW_USEDEFAULT,CW_USEDEFAULT,WINDOW_WIDTH,WINDOW_HEIGHT,NULL,NULL,hInstance,NULL);
 
	// メッセージループ
	MSG msg = {}; 
	while(msg.message != WM_QUIT) {
		// アプリケーションに送られてくるメッセージをメッセージキューから取得する
		if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
			DispatchMessage(&msg);	// アプリケーションの各ウィンドウプロシージャにメッセージを転送する
		}
		// メッセージ処理をしていないとき
		else{
			//(ここにDirectXの処理を書く)
		}
	}
 
	return 0;
 }

実行結果は次のようになります
&ref(window.jpg);
SIZE(20){ COLOR(#ffaa00){WinMain関数で始まるアプリケーションはコンソールが出ません}}

SIZE(20){ COLOR(#ffaa00){ぶっちゃけ、処理全部覚える必要ないです}}
コピペでいいです(今は・・・)

ただし、何やっているかは知る必要があります
C/C++で0からウィンドウを作るには
次の手順が必要です
SIZE(20){ COLOR(#ffaa00){.Εンドウクラス構造体の設定}}
SIZE(20){ COLOR(#ffaa00){▲Εンドウクラス構造体の登録}}
SIZE(20){ COLOR(#ffaa00){E佻燭靴織Εンドウクラスの情報を元にウィンドウ作成}}
SIZE(20){ COLOR(#ffaa00){ぅ瓮奪察璽犬鮗萋世轡Εンドウプロシージャにメッセージ処理をさせる(メッセージループ)}}
のように行います

ウィンドウクラス構造体の設定やウィンドウ作成関数の引数を変えればさまざまなウィンドウが作成できます

ちゃんと意味が知りたい人は
http://wisdom.sakura.ne.jp/system/winapi/win32/win3.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win4.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win7.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win8.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win9.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win10.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win11.html
上から順番に勉強しておくとよいでしょう
また、「Windowsゲームプログラミング」という本は買っておいて損はしないと思います

また、
Win32API講座1回
Win32API講座2回
も参考にしてください

前:DirectX講座3回
次:DirectX講座5回

#vote((^ω^)楽勝[9],私もっとぼんぼる[35],ホビロン![14])
|(^ω^)楽勝|9|
|私もっとぼんぼる|35|
|ホビロン!|14|




トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS