国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

003_Windows程序設計--窗口與消息

2019-11-08 19:43:46
字體:
來源:轉載
供稿:網友

Windows編程模型

事件驅動編程模型 一切都是窗口:窗口和句柄 消息與消息隊列 設計->注冊->創建->顯標更新->消息。

#include <windows.h>//窗口過程回調函數 H是Handler的簡寫,句柄LRESULT CALLBACK WndPRoc(HWND,UINT,WPARAM,LPARAM);//相當于 int main()// 實例句柄int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow){ HWND hwnd;//窗口句柄 MSG msg;//消息 WNDCLASS wc;//窗口類 //1.設計一個窗口類 wc.style = 0; wc.lpfnWndProc = (WNDPROC)WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName = NULL; wc.lpszClassName = TEXT("MyWndClass"); //2.注冊窗口類 RegisterClass(&wc); //3.創建窗口 hwnd = CreateWindow( TEXT("MyWndClass"), TEXT("Hello SDK application"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL,//父窗口句柄 NULL,//窗口菜單句柄 hInstance, NULL); //4.顯示和更新窗口 ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); //5.消息循環 while(GetMessage(&msg,NULL,0,0)){ TranslateMessage(&msg); DispatchMessage(&msg);//轉發到窗口過程 } return msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdc;//DC句柄 RECT rect; //對各種消息進行處理 switch(message) { case WM_SIZE: //重畫 Paint return 0; case WM_LBUTTONDOWN: //MessageBox(hwnd,TEXT("Mouse Clicked!"),TEXT("消息"),MB_OK); //PostQuitMessage(0); return 0; case WM_PAINT: //繪制消息 hdc = BeginPaint(hwnd,&ps); GetClientRect(hwnd,&rect); //Ellipse(hdc,0,0,200,100); DrawText(hdc,TEXT("Hello, Windows!"),-1,&rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd,&ps); return 0; case WM_DESTROY://銷毀窗口消息(關閉) PostQuitMessage(0); return 0; } return DefWindowProc(hwnd,message,wParam,lParam);}

句柄

handle HINSTANCE//模塊句柄 HWND //窗口句柄 HDC //畫布句柄 HICON //圖標句柄 HCURSOR //光標句柄 HBRUSH //畫刷句柄

數據結構

WNDCLASS 窗口類

typedef struct _WNDCLASS {UINT style; // 窗口類型WNDPROC lpfnWndProc; //窗口處理函數int cbClsExtra; //窗口擴展int cbWndExtra; //窗口實例擴展HINSTANCE hInstance; //實例句柄HICON hIcon; //窗口的最小化圖標HCURSOR hCursor; //窗口鼠標光標HBRUSH hbrBackground; //窗口背景色LPCTSTR lpszMenuName; //窗口菜單LPCTSTR lpszClassName; // 窗口類名} WNDCLASS, *LPWNDCLASS;

MSG 消息結構

typedef struct tagMSG{ HWND hwnd; 窗口句柄(索引內存當中的資源) UINT(無符號整型) message; WPARAM(整型) wParam; //關于消息的附加參數,例如:按下一個鍵,具體是哪個按鍵 LPARAM(整型) LParam; //關于消息的附加參數 DWord(32位整數) time;//消息被傳遞時候的時間 POINT(坐標結構體) pt; //消息被傳遞時候,光標在屏幕上的位置} MSG;

PAINTSTRUCT畫布結構

typedef struct tagPAINTSTRUCT { HDC hdc;//用于繪制的句柄 BOOL fErase;//如果為非零值則擦除背景,否則不擦除背景 RECT rcPaint;//通過制定左上角和右下角的坐標確定一個要繪制的矩形范圍,該矩形單位相對于客戶區左上角 BOOL fRestore; BOOL fIncUpdate; BYTE rgbReserved[32];} PAINTSTRUCT, *PPAINTSTRUCT;

RECT 矩型結構

typedef struct tagRECT{LONG left; //指定矩形左上角的X坐標LONG top; //指定矩形左上角的Y坐標LONG right; //指定矩形右下角的X坐標LONG bottom;//指定矩形右下角的Y坐標} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;

匈牙利標記法

控件命名: fm 窗口 cmd 按鈕 cob combo,下拉式列表框 txt 文本輸入框 lab labal,標簽 img image,圖象 pic picture grd Grid, 網格 scr 滾動條 lst 列表框 frm fram變量命名: a 數組 b 布爾 by 字節 ch char,TCHAR f 浮點 d 雙精度浮點 h handle,句柄 i int n 無符號整形 p 指針 sz 0結尾的字符串 str CString fn 函數 v 無類型 w word dw dword x,y 坐標 Max 最大 Min 最小 Init 初始化 T and Temp 臨時變量 資源名字定義格式: 菜單:IDM_XX或者CM_XX 位圖:IDB_XX 對話框:IDD_XX 字符串:IDS_XX DLGINIT:DIALOG_XX ICON:IDR_XX
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康定县| 南昌市| 秭归县| 聂拉木县| 永寿县| 洪江市| 会昌县| 云和县| 绥江县| 明水县| 大埔县| 丹阳市| 崇州市| 香格里拉县| 中牟县| 桐城市| 开化县| 孙吴县| 金川县| 蒙城县| 通海县| 渑池县| 长顺县| 宝坻区| 大城县| 包头市| 邮箱| 吉林省| 庆安县| 木里| 凤阳县| 石泉县| 桃源县| 灵宝市| 博野县| 犍为县| 浦北县| 雷波县| 禄丰县| 望城县| 菏泽市|