windows遊戲程式設計大師技巧第二版也是很老的書了,內容有些變化。
使用vs2019建立選單資源:
資源名稱修改為mainmenu.rc,
檢視選單id:
方法一:
雙擊進入:
選單id為idr_menu1
雙擊開啟resource.**件
這裡的id_file_open,id_file_close就是選單欄按鈕的id,後面**中還需要使用。
**記得#include "resource.h"
#define win32_lean_and_mean //預編譯指令 指示編譯器不要包含mfc的內容
#include #include #include "resource.h"
//我們建立的視窗和其他應用程式視窗都會產生事件和訊息,所有訊息都進入乙個佇列,並且我們的視窗訊息傳送到我們的視窗專用佇列中,
//然後,主事件迴圈檢索這些訊息,並且把他們我們的視窗windowproc中處理
/*hwnd:視窗控制代碼,當我們使用同乙個類建立多個視窗時才會用到,hwnd是表明訊息來自哪個視窗的唯一途徑
*/lresult callback windowproc(hwnd hwnd, uint msg, wparam wparam, lparam lparam)
break;
case wm_paint: break;
case wm_destroy: break;
default:
break;
} return defwindowproc(hwnd, msg, wparam, lparam);}/*
#define winapi __stdcall
#define callback __stdcall
__stdcall: 函式引數按照從右到左的順序入棧,被呼叫的函式在返回前清理傳送引數的棧,函式引數個數固定。
__cdecl: c/c++和mfc程式預設使用的呼叫約定,也可以在函式宣告時加上__cdecl關鍵字來手工指定。採用__cdecl約定時,函式引數按照從右到左的順序入棧,並且由呼叫函式者把引數彈出棧以清理堆疊。
*/int winapi winmain(hinstance hinstance, /*windows為應用程式生成的例項控制代碼。例項是乙個指標或乙個數。 本例中hinstance用來跟蹤應用程式*/
hinstance hprevinstance,/*用來跟蹤應用程式以前的例項,目前不再使用,微軟要去除它*/
lpstr lpcmdline,//空值終止字串
int ncmdshow) ;
winclass.cbsize = sizeof(winclass);
winclass.style = cs_dblclks | cs_owndc | cs_hredraw | cs_vredraw;
winclass.lpfnwndproc = windowproc;
winclass.cbcl***tra = 0;
winclass.cbwndextra = 0;
winclass.hinstance = hinstance;
winclass.hcursor = loadcursora(null, idc_arrow);
winclass.hbrbackground = (hbrush)getstockobject(black_brush);
winclass.lpszmenuname = null;
winclass.lpszclassname = "winclass1";//每個window類代表我們的應用程式所建立的不同的視窗型別,windows需要一些途徑跟蹤識別它們,lpszclassname就是用於此目的,
if (!registerclas***(&winclass)) ;
hwnd hwnd;
//返回新建視窗控制代碼,失敗了返回null
if (!(hwnd = createwindowex(null, "winclass1", "my first window",
0, 0,//視窗左上角位置
400, 400,
null,//假如存在父視窗,指向父視窗控制代碼
loadmenu(hinstance, makeintresource(idr_menu1)),//指向附屬該視窗選單的控制代碼
hinstance,//應用程式例項
null))
) showwindow(hwnd, ncmdshow);//如果沒有新增ws_visible識別符號,手動顯示
updatewindow(hwnd);//更新視窗內容,並且產生乙個wm_paint資訊
msg msg;
//while (getmessage(&msg, null, 0, 0))
while (true)
translatemessage(&msg);
dispatchmessage(&msg);//訊息傳送給window procedure
參考:
windows遊戲程式設計滑鼠
常用滑鼠訊息 wm mousemove 滑鼠移動位置 wm lbuttondown 滑鼠左鍵按下 wm lbuttonup 滑鼠左鍵彈起 wm lbuttondblclk 滑鼠左鍵雙擊 wm rbuttondown 滑鼠右鍵按下 wm rbuttonup 滑鼠右鍵彈起 wm rbuttondblcl...
記錄windows遊戲程式設計 1
程式名稱 gamecore 2020年5月10日 用 勾勒遊戲開發所需要的程式框架 include 巨集 include define window height 600 define window width 800 define window title l 致我們永不熄滅的遊戲開發夢想 程式核...
Windows 程式設計基礎(三)
實現messageboxprintf函式,該函式有許多引數並能像 printf 那樣編排它們的格式。include include include int cdecl messageboxprintf tchar szcaption,tchar szformat,va list parglist v...