版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、俄羅斯方塊程序框架建立流程目 錄一、創(chuàng)建win32項(xiàng)目2二、程序框架介紹5三、對(duì)程序代碼進(jìn)行修改72014年12月25日一、創(chuàng)建win32項(xiàng)目1. 【文件】à【新建】à【項(xiàng)目】2. 選擇【Visual C+】à【W(wǎng)in32項(xiàng)目】,輸入【名稱】、【位置】、【解決方案名稱】,點(diǎn)擊【確定】3. 點(diǎn)擊【下一步】4. 點(diǎn)擊【完成】(注:此處不要選擇空項(xiàng)目)5. 到此為止,就已經(jīng)建立好了一個(gè)win32項(xiàng)目6. 按Ctrl+F5,或點(diǎn)擊【調(diào)試】à【開始執(zhí)行(不調(diào)試)】運(yùn)行該程序二、程序框架介紹1. 主函數(shù)int APIENTRY _tWinMain() / 窗口相關(guān)M
2、yRegisterClass(hInstance); /注冊(cè)窗口CreateWindow(); /創(chuàng)建窗口ShowWindow(hWnd, nCmdShow); /顯示窗口UpdateWindow(hWnd); /更新窗口/ 主消息循環(huán):偵測(cè)消息,派發(fā)消息while (GetMessage(&msg, NULL, 0, 0)if (!TranslateAccelerator()TranslateMessage(&msg);DispatchMessage(&msg);Return 0;2. 消息處理函數(shù)WndProc(UINT message, WPARAM wParam
3、, LPARAM lParam)switch (message)case WM_CREATE:break;case WM_TIMER:break;case WM_LBUTTONDOWN:case WM_RBUTTONDOWN:break;case WM_KEYDOWN:switch(wParam)case VK_LEFT:break;default:break;break;case WM_PAINT:break;case WM_DESTROY:break;return 0;三、對(duì)程序代碼進(jìn)行修改1. 修改窗口標(biāo)題為“窗口示例”、初始位置為(400, 100),大小為(450, 600),樣式為
4、WS_SYSMENU。修改CreateWindow()函數(shù)的參數(shù),如下所示:hWnd = CreateWindow(szWindowClass, _T("窗口示例"), WS_SYSMENU, 400, 100, 450, 600, NULL, NULL, hInstance, NULL);2. 在窗口中畫一條豎線在WM_Paint中添加:MoveToEx(hdc, 300, 0, NULL);LineTo(hdc, 300, 600);3. 調(diào)整畫筆和畫刷的顏色和大小在WM_Paint中添加:/ 定義畫筆和畫刷HBRUSH hBrush;HPEN hPen;hBrush
5、= CreateSolidBrush(RGB(0, 0, 0);hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0);/ 加載畫筆和畫刷SelectObject(hdc, hBrush);SelectObject(hdc, hPen);/繪制過(guò)程/釋放畫筆和畫刷DeleteObject(hBrush);DeleteObject(hPen);4. 在窗口中畫一個(gè)小方格在WM_Paint中添加:Rectangle(hdc, 100, 100, 130, 130);5. 在窗口中輸出文字在WM_Paint中添加:TextOut(hdc, 350, 300, _T(“文
6、字”), 2);6. 在窗口中輸出文字+變量在WM_Paint中添加:TCHAR str1024;int id, len;id = 3459;len = wsprintf(str, _T("ID:%d"), id);TextOut(hdc, 350, 400, str, len);7. 改變文字字體HFONT hFont;hFont = CreateFont(0, 0, 0, 0, 800, false, false, false, ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, PROOF_QUALIT
7、Y, FF_MODERN, (LPCWSTR)"Arial");SelectObject(hdc, hFont);SetBkMode(hdc, TRANSPARENT);TextOut(hdc, 350, 300, _T("文字"), 2);DeleteObject(hFont);8. 點(diǎn)擊鼠標(biāo)左鍵或右鍵時(shí)彈出方框“按鼠標(biāo)了”case WM_LBUTTONDOWN:case WM_RBUTTONDOWN:MessageBox(hWnd, _T("按鼠標(biāo)了"), _T("警告"), MB_OK);break;9. 按
8、方向鍵時(shí)彈出“按方向鍵了”,按空格鍵時(shí)彈出“按空格鍵了”,按F2時(shí)彈出“按F2了”,按S時(shí)彈出“按S了”,按1時(shí)彈出”按1了”,按其他鍵時(shí)談粗“反正你按鍵了”case WM_KEYDOWN:switch(wParam)case VK_LEFT:case VK_RIGHT:case VK_UP:case VK_DOWN:MessageBox(hWnd, _T("按方向鍵了"), _T("警告"), MB_OK);break;case VK_SPACE:MessageBox(hWnd, _T("按空格鍵了"), _T("警告&q
9、uot;), MB_OK);break;case VK_F2:MessageBox(hWnd, _T("按F2了"), _T("警告"), MB_OK);break;case 'S':MessageBox(hWnd, _T("按S了"), _T("警告"), MB_OK);break;case '1':MessageBox(hWnd, _T("按1了"), _T("警告"), MB_OK);break;default:MessageBox(hW
10、nd, _T("反正你按鍵了"), _T("警告"), MB_OK);break;break;10. 讓小黑方塊動(dòng)起來(lái)(以按向下鍵時(shí)方格往下移動(dòng)一格為例)基本思想:每按一次就調(diào)用InvalidateRect(hWnd, NULL, TRUE)函數(shù)將整個(gè)屏幕重繪一次,但下次繪制時(shí)方格的位置會(huì)發(fā)生變化。/ 定義一個(gè)方格寬度30像素,并作為基本單位#define GRID 30/ 表示方塊的位置int posX = 5, posY = 0;WndProc() case WM_KEYDOWN:switch(wParam)case VK_DOWN:posY+;In
11、validateRect(hWnd, NULL, TRUE);break; break;case WM_PAINT:Rectangle(hdc,posX*GRID,posY*GRID,(posX+1)*GRID,(posY+1)*GRID); break;11. 讓小黑方塊自動(dòng)動(dòng)起來(lái)基本思想:添加定時(shí)器消息/ 窗口創(chuàng)建時(shí)就添加一個(gè)定時(shí)器case WM_CREATE:SetTimer(hWnd, 1, 500, NULL);break;case WM_TIMER:posY+;InvalidateRect(hWnd, NULL, TRUE); break;12. 加載一張圖片case WM_PAI
12、NT:HBITMAP bmp;bmp = (HBITMAP)LoadImage(NULL, _T("bmp1.bmp"), IMAGE_BITMAP, 100, 100, LR_LOADFROMFILE);HDC hbuf;hbuf = CreateCompatibleDC(NULL);SelectObject(hbuf, bmp);BitBlt(hdc, (nGameWidth + 1) * GRID, (nGameHeight - 4) * GRID, 100, 100, hbuf, 0, 0, SRCCOPY);13. 加載一首音樂(lè)/ 頭文件添加#include &l
13、t;mmsystem.h>#pragma comment(lib,"winmm.lib")/ 代碼中添加PlaySound(_T("The_Dawn.wav"), NULL, SND_FILENAME|SND_ASYNC|SND_LOOP);14. 避免屏幕閃爍這里采用雙緩沖技術(shù),其基本思想是:先繪制到一個(gè)緩沖區(qū)里面,然后再把緩沖區(qū)里的內(nèi)容整體拷貝到屏幕上。具體原理在網(wǎng)上都可以找到,下面給出實(shí)現(xiàn)方法。1)禁止每次繪圖前都先擦除屏幕背景 ATOM MyRegisterClass(HINSTANCE hInstance) wcex.hbrBackgro
14、und = NULL; / 這里一定要設(shè)為NULL 2) 繪圖:先繪到內(nèi)存DC,再?gòu)膬?nèi)存DC拷貝到前臺(tái)DC HDC hdc, dcMem; HBITMAP bmpMem; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); /依附窗口DC創(chuàng)建兼容內(nèi)存DC dcMem = CreateCompatibleDC(hdc); /創(chuàng)建兼容位圖 bmpMem = CreateCompatibleBitmap(hdc,nWidth * GRID,nHeight * GRID); /將位圖選擇進(jìn)內(nèi)存DC SelectObject(dcMem, bmpMem); /
15、用白色填充內(nèi)存DC的客戶區(qū)hBrush = CreateSolidBrush(RGB(255, 255, 255); SelectObject(dcMem, hBrush); Rectangle(dcMem, 0, 0, nWidth * GRID,nHeight * GRID); / todo: 下面所有的繪圖都繪在內(nèi)存DC dcMem里面,而不是hdc里面 Rectangle(dcMem, i* GRID, j* GRID, (i + 1) * GRID,(j + 1) * GRID); / 將內(nèi)存DC dcMem上的圖像拷貝到前臺(tái)DC hdc里面 BitBlt(hdc, 0, 0, nWidth * GRID, nHeight * GRID, dcMem, 0, 0, SRCCOPY); / 刪除對(duì)象 DeleteObject(bmpMem); DeleteObject(dcMem);15. 函數(shù)的思想 C
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容院二零二五年度員工保密及競(jìng)業(yè)禁止合同范本4篇
- 2025年度綠色建筑抹灰分包勞務(wù)合同4篇
- 個(gè)人信用融資合同2024標(biāo)準(zhǔn)版版B版
- 2025年鐵礦石交易平臺(tái)會(huì)員服務(wù)合同標(biāo)準(zhǔn)版3篇
- 2025年綠色生態(tài)園區(qū)項(xiàng)目工程施工聘用合同2篇
- 二零二五年度智能醫(yī)療系統(tǒng)IT外包服務(wù)協(xié)議2篇
- 二零二四年農(nóng)村電商貸款擔(dān)保合同范本3篇
- 二零二五年度國(guó)際美食廚師聘用及文化交流合同4篇
- 標(biāo)題18:2025年度網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估與整改服務(wù)合同2篇
- 二零二五版鋼管出租與綠色制造合同3篇
- 中外美術(shù)史試題及答案
- 工會(huì)換屆公示文件模板
- 江蘇省南京市協(xié)同體七校2024-2025學(xué)年高三上學(xué)期期中聯(lián)合考試英語(yǔ)試題答案
- 青島版二年級(jí)下冊(cè)三位數(shù)加減三位數(shù)豎式計(jì)算題200道及答案
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識(shí)課件
- 干部職級(jí)晉升積分制管理辦法
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
- 2024年代理記賬工作總結(jié)6篇
- 電氣工程預(yù)算實(shí)例:清單與計(jì)價(jià)樣本
評(píng)論
0/150
提交評(píng)論