<1>.入口函數(shù)WinMain中的代碼
1.窗口類WNDCLASS
設(shè)置窗口的各個參數(shù)
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); //指定窗體的顏色。(畫刷)
wndcls.hCursor=LoadCursor(0,IDC_IBEAM);
wndcls.hIcon=LoadIcon(0,IDI_WARNING);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="myfirst2006";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
2.注冊窗口函數(shù)
RegisterClass(&wndcls);
3.產(chǎn)生窗口
HWND hwnd;
hwnd=CreateWindow("myfirst2006","我的第一個窗口!",WS_OVERLAPPEDWINDOW,
100,100,600,400,NULL,NULL,hInstance,NULL);
4.顯示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
5.更新窗口
UpdateWindow(hwnd);
6.消息循環(huán)
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
TranslateMessage轉(zhuǎn)換消息,轉(zhuǎn)換WM_CHAR消息,若不用,則不能收到WM_CHAR消息。
DispatchMessage將消息分發(fā)出去,將收到的消息傳到操作系統(tǒng),然后操作系統(tǒng)調(diào)用窗口過程函數(shù),也就是對 設(shè)計窗口時的回調(diào)函數(shù)進(jìn)行處理。
<2>.回調(diào)函數(shù)WinSunProc中的代碼:
舉個例子:
switch(uMsg)
{
case WM_CHAR:
char szchar[20];
sprintf(szchar,"char is %d",wParam);
MessageBox(hwnd,szchar,"myfirst2006",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse click","myfirst",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,100,100,"這是我的第一個窗口,哈哈!",strlen("這是我的第一個窗口,哈哈!"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDc;
PAINTSTRUCT ps;
hDc=BeginPaint(hwnd,&ps);
TextOut(hDc,50,50,"hello my windows!",strlen("hello my windows!"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的退出程序?","myfirst",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
uMsg為消息標(biāo)識符
WM_CHAR消息為字符類消息
WM_LBUTTONDOWN為鼠標(biāo)消息,WM_PAINT為窗口重繪消息,當(dāng)窗口大小發(fā)生變化時,點鼠標(biāo)左鍵出來的那行文字又沒有了,因為窗口又重新粉刷了一遍
WM_CLOSE為關(guān)閉窗口的消息
WM_DESTROY為銷毀窗口的消息。
HDC是一個DC的句柄,它將窗口與GDI(Graphics Device Interface圖像設(shè)備接口)連接起來,如果程序需要在窗 口上繪制圖形,則需要建立一個DC設(shè)備,即定義一個HDC變量。
在生成窗口時,HWND使操作系統(tǒng)分配的句柄與我的窗口相關(guān)并保存。
HINSTANCE產(chǎn)生了一個與我們的程序相關(guān)的實例,HINSTANCE變量是操作系統(tǒng)給其賦值。