• 游戏设计手札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) ;
  • 相关阅读:
    跟我学Makefile(七)
    C++单例模式
    乘法逆元及求法
    推荐几个jetbrains全家桶好用的插件,同时作为备忘
    win32 获取本机网卡信息(MAC地址,IP地址等)
    centos7 安装 mysql-python时 报错 EnvironmentError: mysql_config not found
    VS2013 中使用 CxImage 库时用Unicode编码时出现链接错误
    剑指offer-二叉搜索树的后序遍历序列
    剑指offer-顺时针打印矩阵
    剑指offer-二叉树的镜像
  • 原文地址:https://www.cnblogs.com/cybersword/p/2329075.html
Copyright © 2020-2023  润新知