#include <Windows.h>
#include <tchar.h>
// 常量定義
//
#define _WINDOWS_CLASS_NAME _T("Win32")
#define _WINDOWS_TITLE_NAME _T("SampleWindow by wjh")
const UINT _WINDOWS_WIDTH = 640;
const UINT _WINDOWS_HEIGHT = 480;
// 全局變量定義
//
HWND g_hWndMain; //視窗句柄
HINSTANCE g_hInsApp; //視窗程序執行個體
HDC g_RenderDC; //繪圖用
// 函數聲明
//
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); //視窗回調函數
WNDCLASSEX WinClassRegister(HINSTANCE hInstance);
int APIENTRY _tWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASSEX wndclassex = WinClassRegister(hInstance);
MSG msg;
HWND hwnd;
//向系統注冊視窗
if (!RegisterClassEx(&wndclassex))
{
//若注冊失敗顯示提示并結束程式
MessageBox(NULL, L"注冊視窗失敗!", L"Error", MB_OK);
return -1;
}
hwnd = CreateWindowEx(
0, _WINDOWS_CLASS_NAME, _WINDOWS_TITLE_NAME, //視窗附加風格參數 視窗類名 視窗标題名
WS_OVERLAPPED | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU, //視窗風格
CW_USEDEFAULT, CW_USEDEFAULT, //視窗初始位置x y
_WINDOWS_WIDTH, _WINDOWS_HEIGHT, //視窗寬高
NULL, NULL, hInstance, NULL //父視窗句柄 菜單句柄 目前程序執行個體 附加參數
);
if (hwnd == NULL)
{
//若視窗建立失敗 顯示提示并結束程式
MessageBox(NULL, L"建立視窗失敗!", L"Error", MB_OK);
return -2;
}
g_hWndMain = hwnd;
g_hInsApp = hInstance;
UpdateWindow(hwnd); //更新視窗
ShowWindow(hwnd, SW_SHOW); //顯示視窗
//消息循環
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
default:
break;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);;
}
WNDCLASSEX WinClassRegister(HINSTANCE hInstance)
{
WNDCLASSEX wndclassex;
wndclassex.cbSize = sizeof(WNDCLASSEX); //視窗類大小
wndclassex.cbClsExtra = 0; //視窗附加風格參數
wndclassex.cbWndExtra = 0; //視窗附加參數
wndclassex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //視窗背景色
wndclassex.hCursor = LoadCursor(NULL, IDC_ARROW); //滑鼠樣式
wndclassex.hIcon = LoadIcon(NULL, IDI_APPLICATION); //應用程式圖示
wndclassex.hIconSm = LoadIcon(NULL, IDI_WINLOGO); //應用程式小圖示
wndclassex.hInstance = hInstance; //目前程序執行個體句柄
wndclassex.lpfnWndProc = WndProc; //視窗回調函數
wndclassex.lpszClassName = _WINDOWS_CLASS_NAME; //視窗類名
wndclassex.lpszMenuName = NULL; //視窗菜單名
wndclassex.style = CS_OWNDC; //視窗風格
return wndclassex;
}
win32确實很難學啊。