ウィンドウプロシージャー!


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

#include <windows.h>
 
//定数いろいろ
const LPCTSTR WIN_CLASS_NAME = TEXT("RDD");
const LPCTSTR WINDOW_NAME = TEXT("RozenMaidenDuoDectet!!");
 
//関数のプロトタイプ宣言
HWND createWindow(HINSTANCE hInstance, LPCTSTR className);
int resisterWindowClass(HINSTANCE hInstance,  LPCTSTR className);
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
 
 
/////////////////////////////////////////////////////////////////////////
// エントリポイントー
/////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance,		//このプログラムのIDみたいなもの、よく使う
				   HINSTANCE hPrevInstance, //使わない
				   PSTR lpCmdLine,			//使わない
				   int nCmdShow)			//いらない
{
	HWND hWnd;		//ウィンドウのIDを保持するとこ
	MSG msg;		//メッセージを保持するとこ
 
	if(!resisterWindowClass(hInstance,WIN_CLASS_NAME))
		return 0;
 
	if((hWnd = createWindow(hInstance, WIN_CLASS_NAME)) == NULL)
		return 0;
 
	while(1){
		GetMessage(&msg, NULL, 0, 0);	//MSG構造体にメッセージをゲットだぜ
		DispatchMessage(&msg);			//メッセージをウィンドウプロシージャにお裾分けする
	}
	return 0;
}
 
////////////////////////////////////////////////////////////////////////////
// ウィンドウプロシージャー!
////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){
	switch(msg){
		case WM_DESTROY:
			MessageBox(NULL, TEXT("続きは製品版で!"), TEXT("RDD"), MB_ICONINFORMATION);
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hWnd, msg, wp, lp); //デフォルトのも呼ばないと普通のウィンドウの働きをしない
}
 
 
HWND createWindow(HINSTANCE hInstance, LPCTSTR className){
	return CreateWindow(className,
						WINDOW_NAME,
						WS_OVERLAPPEDWINDOW | WS_VISIBLE,
						CW_USEDEFAULT, CW_USEDEFAULT,	//初期位置x,y
						640, 480,	//横幅、縦幅
						NULL, NULL,
						hInstance,
						NULL);
}
 
 
int resisterWindowClass(HINSTANCE hInstance, LPCTSTR className){
	WNDCLASS winc;
 
	winc.style			=CS_HREDRAW | CS_VREDRAW;
 
	winc.lpfnWndProc	= WndProc;				//自分で作ったウィンドウプロシージャの関数ポインタを指定する
 
	winc.cbClsExtra		= winc.cbWndExtra = 0;
	winc.hInstance		= hInstance;
	winc.hIcon			= LoadIcon(NULL, IDI_APPLICATION);
	winc.hCursor		= LoadCursor(NULL, IDC_ARROW);
	winc.hbrBackground	= (HBRUSH)GetStockObject(WHITE_BRUSH);
	winc.lpszClassName	= className;
	//ウィンドウクラスを登録して使えるようにします
	return RegisterClass(&winc);
}
 
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。