游戏设计手札02

今天开始动手写代码了,工程名叫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) ;
原文地址:https://www.cnblogs.com/cybersword/p/2329075.html