• 游戏设计手札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) ;
  • 相关阅读:
    使用 Redis 实现排行榜功能
    php sprintf函数
    phpcms v9文章页调用点击量方法
    redis 高级配置
    mysql 子查询优化
    mysql 优化
    Centos 7 安装Anaconda3
    磁盘调度算法
    pycharm设置python文件颜色
    C++禁止使用拷贝构造函数和赋值运算符方法
  • 原文地址:https://www.cnblogs.com/cybersword/p/2329075.html
Copyright © 2020-2023  润新知