// 04FirstWindow.cpp文件
# include & ltstdio.h & gt
#包含" stdafx.h "
//窗口函數的函數原型
LRESULT回調MainWndProc(HWND,UINT,WPARAM,LPARAM);
int API entry WinMain(h instance h instance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char SZ class name[]= " mainw class ";
WNDCLASSEX wndclass
//用描述主窗口的參數填充WNDCLASSEX結構。
wnd class . CB size = sizeof(wnd class);//結構的大小
wnd class . style = CS _ HREDRAW | CS _ VREDRAW;//指定在大小改變時重新繪制。
wnd class . lpfnwndproc = MainWndProc;//窗口函數指針
wnd class . cbclsextra = 0;//沒有額外的類內存。
wnd class . cbwndextra = 0;//沒有額外的窗口內存。
wnd class . h instance = h instance;//實例句柄
wndclass.hIcon = ::LoadIcon(NULL,
IDI _應用);//使用預定義的圖標
wnd class . hcursor =::load cursor(NULL,
IDC _ ARROW);//使用預定義的光標
wndclass.hbrBackground = (HBRUSH)
* GetStockObject(WHITE _ BRUSH);//使用白色背景筆刷。
wndclass.lpszMenuName = NULL//不要指定菜單
wnd class . lpsz class name = SZ class name;//窗口類的名稱
wnd class . hi consm = NULL;//沒有類的小圖標
//註冊這個窗口類。
* register classex(& amp;wnd class);
//創建主窗口
HWND hwnd = ::CreateWindowEx(
0,//dwex樣式,擴展樣式
SzClassName,// lpClassName,類名
“我的第壹扇窗!”,//lpwindowname,title
Ws _ overlapped window,//dwstyle,窗口樣式。
CW _ CW_USEDEFAULT,// X,初始X坐標
CW _ CW_USEDEFAULT,// Y,初始Y坐標
CW _ CW_USEDEFAULT,// nWidth,Width
CW _ CW_USEDEFAULT,// nHeight,Height
Null,//hwndparent,父窗口句柄。
Null,//hmenu,菜單句柄
HInstance,//HL instance,程序實例句柄
NULL);// lpParam,用戶數據
if(hwnd == NULL)
{
MessageBox(空,"創建窗口時出錯!",“錯誤”,MB _ OK);
return-1;
}
//顯示窗口,刷新窗口的客戶區。
*櫥窗(hwnd、nCmdShow);
*更新窗口(hwnd);
//從消息堆中取出消息
味精味精;
while(::GetMessage(& amp;msg,NULL,0,0))
{
//轉換鍵盤消息
*翻譯消息(& amp味精);
//將消息發送給相應的窗口函數。
* dispatch message(& amp;味精);
}
//當GetMessage返回0時程序結束。
返回msg.wParam
}
LRESULT回調MainWndProc(HWND hwnd,UINT消息,WPARAM wParam,LPARAM lParam)
{
Char szText[] = "最簡單的窗口程序!";
開關(消息)
{
案例WM_PAINT: //窗口的客戶區需要重畫。
{
HDC hdc
PAINTSTRUCT ps
//使無效的客戶區有效,並獲取設備環境句柄。
hdc =::begin paint(hwnd & amp;PS);
//顯示文本
* TextOut(hdc,10,10,szText,strlen(SZ text));
*面漆(hwnd & amp;PS);
返回0;
}
案例WM_CHAR:
{
char szChar[20];
sprintf(szChar," Char是%d ",wParam);
MessageBox(hwnd,szChar,“Windows”,MB _ OK);
打破;
}
案例WM_LBUTTONDOWN:
{
MessageBox(hwnd,“鼠標被點擊”,“消息”,0);
HDC hdc
hdc = GetDC(hwnd);
TextOut(hdc,0,50,“Windows程序”,strlen(“Windows程序”));
ReleaseDC(hwnd,hdc);
打破;
}
案例WM_CLOSE:
If(IDYES==MessageBox(hwnd,“是否要退出程序?”,“Windows”,MB_YESNO))
{
銷毀窗口(hwnd);
}
案例WM_DESTROY: //銷毀窗口。
//向消息隊列發布WM_QUIT消息,提示GetMessage函數返回0,結束消息循環。
PostQuitMessage(0);
返回0;
}
//把我們不處理的消息交給系統默認處理。
return ::DefWindowProc(hwnd,message,wParam,lParam);
}