今天开始动手写代码了,工程名叫Dragon,因为今年龙年嘛。
版本是v0.0,因为只是创建了一个窗口,里面一无所有。
本来是想用MFC做的,可是一来没找到对话框全屏显示的方法,二来设置MFC的dll静态调用,编译链接总是通不过,好像是SDK的版本问题吧,最后仔细一想,反正整个游戏几乎没有需要MFC帮忙的地方,干脆自己写消息循环之类的东西算了,于是创建了一个win32的空工程。
说起来还是第一次从头到尾都是自己写代码,以前要么是照着教程或者课本做的,要么是修改别人的代码。
一开始好不容易窗口创建好了,半天显示不出来,后来又纠结全屏显示的参数设置。
现在的功能是打开后是个全屏黑色,没有光标,ESC或ALT+F4可以退出,退出之前有提示对话框。
另外在头文件里定义了一个Role类,子类是NPC和Hero
今天研究的内容:
函数:
- B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
发送一个消息到消息队列(并不关心该消息什么时候被读取)后直接返回。 - B00L SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
发送一个消息,并直接调用相应的窗口过程函数,消息处理完成后返回。 - BOOL PeekMessage(LPMSG IpMsg,HWND hWnd,UINT wMSGfilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);
读取一个消息,读取消息后是否删除取决于参数wRemoveMsg。
若该参数为PM_NOREMOVE,则,PeekMessage处理后,消息不从队列里除掉。
若该参数为PM_REMOVE,则,PeekMessage处理后,消息从队列里除掉。
消息:
- MW_PAINT
在WinMain中调用UpdateWindow时发送,或者窗口重绘时。
对WM_PAINT的处理几乎总是从一个BeginPaint调用开始:
hdc = BeginPaint (hwnd, &ps) ;
而以一个EndPaint调用结束:
EndPaint (hwnd, &ps) ;