最近學習MFC,寫了個用鍵盤上下左右移動的坦克界面,效果圖:
先用VC++新建一個最簡單的MFC項目,基於Dialog的
1. 添加坦克圖片資源:略
2. 添加3個變量:x, y, m_bitmap
3. 在初始化方法中加載bitmap以及設置好初始的坐標位置:
->m_bitmap.LoadBitmapW(IDB_BITMAP2); ->m_bitmap.GetBitmap(&bmpInfo); ->GetWindowRect(&r); ->x=(r.right-r.left)/-bmpInfo.bmWidth/; ->y=(r.bottom-r.top)/-bmpInfo.bmHeight/;
4. 重寫OnPaint函數:
CClientDC d(&&->m_bitmap.GetBitmap(&->x, ->y, bmpInfo.bmWidth, bmpInfo.bmHeight, &memDC, , , SRCCOPY);
5. 掛載鍵盤event:
->x-=->x+=->y-=->y+=->InvalidateRect(NULL);
6. 由於Dialog中的事件機制,需要加入消息預處理函數才能讓程序真正接收到keydown事件,如下:
BOOL Ctest3Dlg::PreTranslateMessage(MSG* (pMsg->message ==->wParam, pMsg->
上面寫的比較簡單,事件關聯沒有寫進去,不過由於有UI向導幫助建立,所以就沒有寫,如:
哈哈,現在能控制坦克的上下左右了。