初學!!!以下都是一些常用的,F12查看所需要的函數。
簡單搭建。。。。。。
#include <Windows.h>
#include <tchar.h>
//#pragma comment(lib,"winmm.lib")
HINSTANCE g_hInstanc;//應用程序實例句柄(操作某個對象的一個指針)
HWND g_hWnd=0;//窗口句柄
/*
HINSTANCE hInstance, //操作系統分配給該應用程序的實例句柄
HINSTANCE hPrevInstance, //該應用程序的上一個應用程序實例句柄
LPSTR lpCmdLine, //使用命令行執行應用程序時,命令行參數
int nShowCmd//指定窗口如何顯示
*/
//LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
//函數聲明
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
/*
(1)新建窗口類結構體WNDCLASSEX
(2)註冊Windows類
(3)創建窗口
(4)事件處理(主事件循環)
*/
WNDCLASSEX winClass;//創建窗口類結構體對象
ZeroMemory(&winClass,sizeof(winClass));//對結構體歸0
winClass.cbClsExtra = 0;//原是爲指示Windows將附加的運行時間信息保存到Windows類某些單元中而設計,一般設0
winClass.cbSize = sizeof(WNDCLASSEX);//結構體大小sizeof(對象/類型)
winClass.cbWndExtra = 0;//原是爲指示Windows將附加的運行時間信息保存到Windows類某些單元中而設計,一般設0
winClass.hbrBackground =(HBRUSH)GetStockObject(DKGRAY_BRUSH);//窗口背景顏色
winClass.hCursor = LoadCursor(hInstance, IDC_APPSTARTING);//鼠標指針
winClass.hIcon = LoadIcon(hInstance, IDI_APPLICATION);//應用程序圖標類型
winClass.hIconSm = 0;//小應用程序圖標,如標題欄和任務欄
winClass. hInstance = hInstance;
winClass.lpfnWndProc = WindowProc;//消息處理函數
winClass.lpszClassName = TEXT("MyWindow");//窗口類名_T("Test");
winClass.lpszMenuName = 0;//菜單資源,沒有則設置爲NULL
winClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;//窗口樣式
//(2)註冊Windows類
RegisterClassExW(&winClass);//註冊Windows窗口到系統中
//(3)創建窗口
g_hWnd=CreateWindowEx(
0,
winClass.lpszClassName,
TEXT("Win32窗口"),
WS_OVERLAPPEDWINDOW,
300,100, //CW_USEDEFAULT(300,100)位置由系統決定
800,
600,
NULL,
NULL,
hInstance,
0);
if (g_hWnd==0)
{
return 0;
}
g_hInstanc = hInstance;
ShowWindow(g_hWnd, SW_SHOWNORMAL);//顯示窗口
UpdateWindow(g_hWnd);//更新窗口
//(4)事件處理(主事件循環)
static MSG msg = { 0 };//定義消息結構體對象,獲取消息
while (msg.message!=WM_QUIT)//不等於退出消息
{
if (PeekMessage(&msg,0,0,0,PM_REMOVE))//拉取消息
{
TranslateMessage(&msg);//翻譯消息
DispatchMessage(&msg);//分發消息
}
//遊戲邏輯
//遊戲渲染
//todo......
//配置DX環境
}
}
//消息處理函數(消息屬於那個窗口的,消息類型,消息傳過來的參數,消息傳過來的參數)
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
switch (msg)
{
case WM_CLOSE://當窗口關閉時傳遞
DestroyWindow(hwnd);
break;
case WM_DESTROY://當窗口關閉時銷燬
PostQuitMessage(0);//退出主線程
break;
case WM_CREATE://創建窗口消息
OutputDebugString(TEXT("窗口創建\n"));//向後臺輸出消息
break;
default:
break;
}
//系統處理
return DefWindowProc(hwnd,msg,wparam,lparam);
}