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

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

windows---窗口

2019-11-14 12:08:09
字體:
來源:轉載
供稿:網友
//-----------------------------------【程序說明】----------------------------------------------// 程序名稱::GameCore// 2013年3月 Create by 淺墨// 描述:用代碼勾勒出游戲開發所需的程序框架//------------------------------------------------------------------------------------------------//-----------------------------------【頭文件包含部分】---------------------------------------// 描述:包含程序所依賴的頭文件//------------------------------------------------------------------------------------------------#include <windows.h>//-----------------------------------【宏定義部分】--------------------------------------------// 描述:定義一些輔助宏//------------------------------------------------------------------------------------------------#define WINDOW_WIDTH 800 //為窗口寬度定義的宏,以方便在此處修改窗口寬度#define WINDOW_HEIGHT 600 //為窗口高度定義的宏,以方便在此處修改窗口高度#define WINDOW_TITLE L"【致我們永不熄滅的游戲開發夢想】程序核心框架" //為窗口標題定義的宏//-----------------------------------【全局函數聲明部分】-------------------------------------// 描述:全局函數聲明,防止“未聲明的標識”系列錯誤//------------------------------------------------------------------------------------------------LRESULT CALLBACK WndPRoc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); //窗口過程函數//-----------------------------------【WinMain( )函數】--------------------------------------// 描述:Windows應用程序的入口函數,我們的程序從這里開始//------------------------------------------------------------------------------------------------int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd){ //【1】窗口創建四步曲之一:開始設計一個完整的窗口類 WNDCLASSEX wndClass = { 0 }; //用WINDCLASSEX定義了一個窗口類 wndClass.cbSize = sizeof( WNDCLASSEX ) ; //設置結構體的字節數大小 wndClass.style = CS_HREDRAW | CS_VREDRAW; //設置窗口的樣式。當窗口寬度、高度變化時,重繪窗口 wndClass.lpfnWndProc = WndProc; //設置指向窗口過程函數的指針 wndClass.cbClsExtra = 0; //窗口類的附加內存,取0就可以了 wndClass.cbWndExtra = 0; //窗口的附加內存,依然取0就行了 wndClass.hInstance = hInstance; //指定包含窗口過程的程序的實例句柄。WinMain函數的第一個參數 //本地加載自定義ico圖標,在debug目錄下 //NULL:包含被加載圖像的實例句柄,若從硬盤或資源文件中加載,為NULL //L"icon.ico":被加載的資源所在的路徑與文件名或資源名稱 //IMAGE_ICON:指定被加載的圖像的類型 //0:圖標加載后在內存中存儲的寬度,單位為像素,0表示系統預設 //0:圖標加載后在內存中存儲的高度,單位為像素,0表示系統預設 //位圖加載方式,LR_LOADFROMFILE表示從文件中加載 wndClass.hIcon=(HICON)::LoadImage(NULL, L"icon.ico",IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE); wndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); //指定窗口類的光標句柄。 //指定窗口類的背景畫刷句柄。為hbrBackground成員指定一個灰色畫刷句柄,當窗口發生重繪時,用該畫刷擦除背景顏色 wndClass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH); wndClass.lpszMenuName = NULL; //用一個以空終止的字符串,指定菜單資源的名字。 wndClass.lpszClassName = L"ForTheDreamOfGameDevelop"; //用一個以空終止的字符串,指定窗口類的名字。 //【2】窗口創建四步曲之二:注冊窗口類 if( !RegisterClassEx( &wndClass ) ) //設計完窗口后,需要對窗口類進行注冊,這樣才能創建該類型的窗口 return -1; //【3】窗口創建四步曲之三:正式創建窗口 //指定窗口類的名稱,為設計窗口時的名稱;顯示在標題欄上的窗口的名稱; //指定窗口的樣式:產生一個層疊的窗口,具有標題欄和邊框;窗口水平位置,默認為CW_USERDEFAULT //窗口豎直位置,默認為CW_USERDEFAULT;窗口寬度;窗口高度;父窗口句柄NULL;菜單資源句柄NULL; //窗口所屬的應用程序實例的句柄;MFC中創建多文檔界面時用到,一般為NULL HWND hwnd = CreateWindow( L"ForTheDreamOfGameDevelop",WINDOW_TITLE, //喜聞樂見的創建窗口函數CreateWindow WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL ); //【4】窗口創建四步曲之四:窗口的移動、顯示與更新 true:重畫窗口 MoveWindow(hwnd, 250, 80, WINDOW_WIDTH, WINDOW_HEIGHT, true); //調整窗口顯示時的位置,使窗口左上角位于(250,80)處 ShowWindow( hwnd, nShowCmd ); //調用ShowWindow函數來顯示窗口 UpdateWindow(hwnd); //對窗口進行更新,就像我們買了新房子要裝修一樣 //【5】消息循環過程 MSG msg = { 0 }; //定義并初始化msg while( msg.message != WM_QUIT ) //使用while循環,如果消息不是WM_QUIT消息,就繼續循環 { //將取出的消息保存在msg中;0:接收屬于調用線程的所有窗口的窗口消息;0:指定要獲取消息的最小值 //0:指定要獲取消息的最大值;PM_REMOVE:指定要獲取消息的方式,取出某條消息后,將該條消息從消息隊列中移除 if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) //查看應用程序消息隊列,有消息時將隊列中的消息派發出去。 { TranslateMessage( &msg ); //將虛擬鍵消息轉換為字符消息 DispatchMessage( &msg ); //分發一個消息給窗口程序。 } } //【6】窗口類的注銷 //要注銷的類的名稱;創建這個類的應用程序的實例句柄 UnregisterClass(L"ForTheDreamOfGameDevelop", wndClass.hInstance); //程序準備結束,注銷窗口類 return 0; }//-----------------------------------【WndProc( )函數】--------------------------------------// 描述:窗口過程函數WndProc,對窗口消息進行處理//------------------------------------------------------------------------------------------------//hwnd: 需要處理消息的窗口的句柄//message: 待處理消息的ID,即消息類型LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) //switch語句開始 { case WM_PAINT: // 若是客戶區重繪消息 ValidateRect(hwnd, NULL); // 更新客戶區的顯示 break; //跳出該switch語句 case WM_KEYDOWN: // 若是鍵盤按下消息 if (wParam == VK_ESCAPE) // 如果被按下的鍵是ESC DestroyWindow(hwnd); // 銷毀窗口, 并發送一條WM_DESTROY消息 break; //跳出該switch語句 case WM_DESTROY: //若是窗口銷毀消息 PostQuitMessage( 0 ); //向系統表明有個線程有終止請求。用來響應WM_DESTROY消息 break; //跳出該switch語句 default: //若上述case條件都不符合,則執行該default語句 return DefWindowProc( hwnd, message, wParam, lParam ); //調用缺省的窗口過程 } return 0; //正常退出}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扎囊县| 彭泽县| 佛坪县| 温州市| 顺昌县| 施甸县| 星座| 桃园县| 安丘市| 同德县| 建瓯市| 贵定县| 财经| 静安区| 侯马市| 甘泉县| 宝兴县| 辉县市| 新绛县| 克东县| 施秉县| 金湖县| 噶尔县| 周宁县| 金沙县| 微博| 慈溪市| 高邮市| 佛学| 英超| 晴隆县| 怀集县| 乐昌市| 丰宁| 丽水市| 高平市| 宿州市| 石阡县| 石阡县| 宁远县| 香格里拉县|