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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

windows---窗口

2019-11-14 11:37:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
//-----------------------------------【程序說(shuō)明】----------------------------------------------// 程序名稱::GameCore// 2013年3月 Create by 淺墨// 描述:用代碼勾勒出游戲開(kāi)發(fā)所需的程序框架//------------------------------------------------------------------------------------------------//-----------------------------------【頭文件包含部分】---------------------------------------// 描述:包含程序所依賴的頭文件//------------------------------------------------------------------------------------------------#include <windows.h>//-----------------------------------【宏定義部分】--------------------------------------------// 描述:定義一些輔助宏//------------------------------------------------------------------------------------------------#define WINDOW_WIDTH 800 //為窗口寬度定義的宏,以方便在此處修改窗口寬度#define WINDOW_HEIGHT 600 //為窗口高度定義的宏,以方便在此處修改窗口高度#define WINDOW_TITLE L"【致我們永不熄滅的游戲開(kāi)發(fā)夢(mèng)想】程序核心框架" //為窗口標(biāo)題定義的宏//-----------------------------------【全局函數(shù)聲明部分】-------------------------------------// 描述:全局函數(shù)聲明,防止“未聲明的標(biāo)識(shí)”系列錯(cuò)誤//------------------------------------------------------------------------------------------------LRESULT CALLBACK WndPRoc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); //窗口過(guò)程函數(shù)//-----------------------------------【W(wǎng)inMain( )函數(shù)】--------------------------------------// 描述:Windows應(yīng)用程序的入口函數(shù),我們的程序從這里開(kāi)始//------------------------------------------------------------------------------------------------int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd){ //【1】窗口創(chuàng)建四步曲之一:開(kāi)始設(shè)計(jì)一個(gè)完整的窗口類 WNDCLASSEX wndClass = { 0 }; //用WINDCLASSEX定義了一個(gè)窗口類 wndClass.cbSize = sizeof( WNDCLASSEX ) ; //設(shè)置結(jié)構(gòu)體的字節(jié)數(shù)大小 wndClass.style = CS_HREDRAW | CS_VREDRAW; //設(shè)置窗口的樣式。當(dāng)窗口寬度、高度變化時(shí),重繪窗口 wndClass.lpfnWndProc = WndProc; //設(shè)置指向窗口過(guò)程函數(shù)的指針 wndClass.cbClsExtra = 0; //窗口類的附加內(nèi)存,取0就可以了 wndClass.cbWndExtra = 0; //窗口的附加內(nèi)存,依然取0就行了 wndClass.hInstance = hInstance; //指定包含窗口過(guò)程的程序的實(shí)例句柄。WinMain函數(shù)的第一個(gè)參數(shù) //本地加載自定義ico圖標(biāo),在debug目錄下 //NULL:包含被加載圖像的實(shí)例句柄,若從硬盤(pán)或資源文件中加載,為NULL //L"icon.ico":被加載的資源所在的路徑與文件名或資源名稱 //IMAGE_ICON:指定被加載的圖像的類型 //0:圖標(biāo)加載后在內(nèi)存中存儲(chǔ)的寬度,單位為像素,0表示系統(tǒng)預(yù)設(shè) //0:圖標(biāo)加載后在內(nèi)存中存儲(chǔ)的高度,單位為像素,0表示系統(tǒng)預(yù)設(shè) //位圖加載方式,LR_LOADFROMFILE表示從文件中加載 wndClass.hIcon=(HICON)::LoadImage(NULL, L"icon.ico",IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE); wndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); //指定窗口類的光標(biāo)句柄。 //指定窗口類的背景畫(huà)刷句柄。為hbrBackground成員指定一個(gè)灰色畫(huà)刷句柄,當(dāng)窗口發(fā)生重繪時(shí),用該畫(huà)刷擦除背景顏色 wndClass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH); wndClass.lpszMenuName = NULL; //用一個(gè)以空終止的字符串,指定菜單資源的名字。 wndClass.lpszClassName = L"ForTheDreamOfGameDevelop"; //用一個(gè)以空終止的字符串,指定窗口類的名字。 //【2】窗口創(chuàng)建四步曲之二:注冊(cè)窗口類 if( !RegisterClassEx( &wndClass ) ) //設(shè)計(jì)完窗口后,需要對(duì)窗口類進(jìn)行注冊(cè),這樣才能創(chuàng)建該類型的窗口 return -1; //【3】窗口創(chuàng)建四步曲之三:正式創(chuàng)建窗口 //指定窗口類的名稱,為設(shè)計(jì)窗口時(shí)的名稱;顯示在標(biāo)題欄上的窗口的名稱; //指定窗口的樣式:產(chǎn)生一個(gè)層疊的窗口,具有標(biāo)題欄和邊框;窗口水平位置,默認(rèn)為CW_USERDEFAULT //窗口豎直位置,默認(rèn)為CW_USERDEFAULT;窗口寬度;窗口高度;父窗口句柄NULL;菜單資源句柄NULL; //窗口所屬的應(yīng)用程序?qū)嵗木浔籑FC中創(chuàng)建多文檔界面時(shí)用到,一般為NULL HWND hwnd = CreateWindow( L"ForTheDreamOfGameDevelop",WINDOW_TITLE, //喜聞樂(lè)見(jiàn)的創(chuàng)建窗口函數(shù)CreateWindow WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL ); //【4】窗口創(chuàng)建四步曲之四:窗口的移動(dòng)、顯示與更新 true:重畫(huà)窗口 MoveWindow(hwnd, 250, 80, WINDOW_WIDTH, WINDOW_HEIGHT, true); //調(diào)整窗口顯示時(shí)的位置,使窗口左上角位于(250,80)處 ShowWindow( hwnd, nShowCmd ); //調(diào)用ShowWindow函數(shù)來(lái)顯示窗口 UpdateWindow(hwnd); //對(duì)窗口進(jìn)行更新,就像我們買了新房子要裝修一樣 //【5】消息循環(huán)過(guò)程 MSG msg = { 0 }; //定義并初始化msg while( msg.message != WM_QUIT ) //使用while循環(huán),如果消息不是WM_QUIT消息,就繼續(xù)循環(huán) { //將取出的消息保存在msg中;0:接收屬于調(diào)用線程的所有窗口的窗口消息;0:指定要獲取消息的最小值 //0:指定要獲取消息的最大值;PM_REMOVE:指定要獲取消息的方式,取出某條消息后,將該條消息從消息隊(duì)列中移除 if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) //查看應(yīng)用程序消息隊(duì)列,有消息時(shí)將隊(duì)列中的消息派發(fā)出去。 { TranslateMessage( &msg ); //將虛擬鍵消息轉(zhuǎn)換為字符消息 DispatchMessage( &msg ); //分發(fā)一個(gè)消息給窗口程序。 } } //【6】窗口類的注銷 //要注銷的類的名稱;創(chuàng)建這個(gè)類的應(yīng)用程序的實(shí)例句柄 UnregisterClass(L"ForTheDreamOfGameDevelop", wndClass.hInstance); //程序準(zhǔn)備結(jié)束,注銷窗口類 return 0; }//-----------------------------------【W(wǎng)ndProc( )函數(shù)】--------------------------------------// 描述:窗口過(guò)程函數(shù)WndProc,對(duì)窗口消息進(jìn)行處理//------------------------------------------------------------------------------------------------//hwnd: 需要處理消息的窗口的句柄//message: 待處理消息的ID,即消息類型LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) //switch語(yǔ)句開(kāi)始 { case WM_PAINT: // 若是客戶區(qū)重繪消息 ValidateRect(hwnd, NULL); // 更新客戶區(qū)的顯示 break; //跳出該switch語(yǔ)句 case WM_KEYDOWN: // 若是鍵盤(pán)按下消息 if (wParam == VK_ESCAPE) // 如果被按下的鍵是ESC DestroyWindow(hwnd); // 銷毀窗口, 并發(fā)送一條WM_DESTROY消息 break; //跳出該switch語(yǔ)句 case WM_DESTROY: //若是窗口銷毀消息 PostQuitMessage( 0 ); //向系統(tǒng)表明有個(gè)線程有終止請(qǐng)求。用來(lái)響應(yīng)WM_DESTROY消息 break; //跳出該switch語(yǔ)句 default: //若上述case條件都不符合,則執(zhí)行該default語(yǔ)句 return DefWindowProc( hwnd, message, wParam, lParam ); //調(diào)用缺省的窗口過(guò)程 } return 0; //正常退出}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 白沙| 石景山区| 中卫市| 北宁市| 喜德县| 资兴市| 沂源县| 屯门区| 鱼台县| 大冶市| 东至县| 来安县| 西昌市| 谷城县| 子长县| 同仁县| 西安市| 沿河| 拉萨市| 辽源市| 房山区| 黔江区| 娄底市| 监利县| 太白县| 高陵县| 思茅市| 建平县| 平武县| 泰来县| 灯塔市| 迁西县| 玉树县| 沿河| 申扎县| 长汀县| 边坝县| 疏勒县| 青田县| 和林格尔县| 栾城县|