#include <Windows.h> //全域性函式宣告
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE hInstance, int nShowCmd);
void MyPaint(HDC hdc);
BOOL Game_CleanUp(HWND hwnd);//在此函式中進行資源的清理 #define WINDOW_WIDTH 800 //為視窗寬度定義的巨集,以方便在此處修改視窗寬度
#define WINDOW_HEIGHT 600 //為視窗高度定義的巨集,以方便在此處修改視窗高度
#define WINDOW_TITLE "遊戲開發的夢想" //為視窗標題定義的巨集 //--------------------------------------------WinMain() 入口函式-----------------------------------------------
//應用程式的入口函式
//-------------------------------------------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MSG msg = { };//定義並初始化msg
MyRegisterClass(hInstance); if (!InitInstance(hInstance, nShowCmd))
{
return FALSE;
} //遊戲迴圈
while (GetMessage(&msg, NULL, , ))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
} //--------------------------------------------MyRegisterClass() 函式-------------------------------------------
//註冊視窗
//-------------------------------------------------------------------------------------------------------------
ATOM MyRegisterClass(HINSTANCE hInstance)
{
//建立視窗第一步:開始設計一個完整的視窗類
WNDCLASSEX wndClass;//定義一個視窗類
wndClass.cbSize = sizeof(WNDCLASSEX);//設定結構體的位元組數大小
wndClass.style = CS_HREDRAW | CS_VREDRAW;//設定視窗的樣式
wndClass.lpfnWndProc = (WNDPROC)WndProc;//設定指向視窗過程函式的指標
wndClass.cbClsExtra = ;//視窗類的附加記憶體,取0就可以了
wndClass.cbWndExtra = ;//視窗的附加記憶體,依然取0就行了
wndClass.hInstance = hInstance;//指定包含視窗過程的程式的例項控制代碼
wndClass.hIcon = (HICON) ::LoadImage(NULL, "icon.ico", IMAGE_ICON, , , LR_DEFAULTSIZE | LR_LOADFROMFILE);//載入自定義ico圖示
wndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);//指定視窗類的游標控制代碼
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//指定一個灰色畫刷控制代碼
wndClass.lpszMenuName = NULL;//用一個以空終止的字串,指定選單資源的名字.
wndClass.lpszClassName = "GameClass";//指定視窗類的名稱
//wndClass.hIconsm = NULL; //建立視窗第二步:註冊視窗類
return RegisterClassEx(&wndClass);//設計完視窗後,需要對視窗類進行註冊,這樣才能建立該型別的視窗
} //--------------------------------------------InitInstance() 函式----------------------------------------------
//載入資源
//-------------------------------------------------------------------------------------------------------------
BOOL InitInstance(HINSTANCE hInstance, int nShowCmd)
{
HWND hwnd;
int i;
HDC hdc; hInst = hInstance; //建立視窗第三步:正式建立視窗
//建立視窗函式
hwnd = CreateWindow("GameClass", WINDOW_TITLE, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, , CW_USEDEFAULT, , NULL, NULL, hInstance, NULL);
if (!hwnd)
{
return FALSE;
}
//建立視窗第四步:視窗的移動,顯示和更新
MoveWindow(hwnd, , , WINDOW_WIDTH, WINDOW_HEIGHT, true);//調整視窗顯示時的位置及視窗的大小
ShowWindow(hwnd, nShowCmd);//設定顯示視窗時的狀態
UpdateWindow(hwnd);//將視窗繪製於顯示裝置上 return TRUE;
} //--------------------------------------------MyPaint() 函式---------------------------------------------------
//繪製圖形
//-------------------------------------------------------------------------------------------------------------
void MyPaint(HDC hdc)
{
} //--------------------------------------------Game_CleanUp() 函式----------------------------------------------
//資源清理函式,在此函式中進行退出前的資源的清理工作
//-------------------------------------------------------------------------------------------------------------
BOOL Game_CleanUp(HWND hwnd)
{
return TRUE;
} //--------------------------------------------WndProc() 視窗訊息回撥函式---------------------------------------
//視窗過程函式WndProc,對視窗訊息進行處理
//-------------------------------------------------------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_PAINT://視窗重繪訊息
{
hdc = BeginPaint(hwnd, &ps);
MyPaint(hdc);
EndPaint(hwnd, &ps);
}
break;
case WM_KEYDOWN://若是鍵盤按下訊息
{
}
break;
case WM_DESTROY://視窗結束訊息
{
//刪除資源
Game_CleanUp(hwnd);
PostQuitMessage();//向系統表明有個執行緒有終止的請求,用來響應WM_DESTROY訊息
}
break;
default://若是上述case條件都不符合,則執行該default語句
{
return DefWindowProc(hwnd, message, wParam, lParam);//呼叫預設的視窗過程
}
}
return ;//正常退出
}