MFC
jokers_i
这个作者很懒,什么都没留下…
展开
-
MFC设计局域网对战五子棋游戏(二)实现GDI+自绘按钮
因为按钮位于对话框右侧的透明区域,如果使用GDI绘制的话不能达到效果,因为GDI不支持alpha通道,绘制到透明的对话框上只能是透明的效果,而GDI+支持alpha通道,所以使用GDI+绘制就可以了。首先看看自绘的按钮的类成员和重载函数:class MyButton : public CButton{ DECLARE_DYNAMIC(MyButton)public: MyBu原创 2012-04-13 10:19:31 · 3824 阅读 · 3 评论 -
MFC设计局域网对战五子棋游戏(四)GDI+和GDI混合双缓冲绘图
在游戏中,绘制棋盘的工作交给了一个独立的线程来负责: UINT CWZQDlg::PaintThread(LPVOID param){ CWZQDlg* pwd = (CWZQDlg*)param; UINT sideLength = 554; REAL blockLength = sideLength/15.0F; POINT or = pwd->m_mouse; HPEN原创 2012-04-13 11:16:01 · 3647 阅读 · 0 评论 -
MFC设计局域网对战五子棋游戏(三)构造游戏主对话框
游戏对话框的构造函数: CWZQDlg::CWZQDlg(CWnd* pParent /*=NULL*/): CDialogEx(CWZQDlg::IDD, pParent),m_gameStart(false),m_clientLength(554.0f),//初始化游戏区域大小为554pxm_uid(0),//主机id号为0m_receving(false),//开始接收游戏原创 2012-04-13 10:51:10 · 2566 阅读 · 0 评论 -
MFC设计局域网对战五子棋游戏(五)游戏中的数据结构和算法
游戏中设计的结构体有: //棋盘中每个格子的信息typedef struct dot{ UINT used :1;//是否已经被占用 UINT uid :7;//占用者的id号 UINT lt :3;//左上角有几个相同id号的棋子 UINT t :3;//上方有几个相同id号的棋子 UINT rt :3;//以下根据方向不同表示意思类似 UINT l :3;//字段原创 2012-04-13 11:36:33 · 3045 阅读 · 0 评论 -
MFC设计局域网对战五子棋游戏(六)网络通信
网络通信部分放在了独立的线程中处理,因为使用的是CSocket,而且它是采用阻塞式的,所以需要自己使用多线程技术来接受数据,而不能再主线程中阻塞接收过程。这是建立和搜索游戏的流程图: 建立游戏就是“摆擂”按钮:void CWZQDlg::OnBnClickedServer(){ if(m_receving) return; m_uid = 1; AfxBeginTh原创 2012-04-13 13:26:47 · 4997 阅读 · 1 评论 -
MFC设计局域网对战五子棋游戏(一)设计
一直想做游戏,不过鉴于D3D和OPENGL有点复杂,所以就选择了比较简单的GDI+和GDI混合模式,这样就解决了GDI绘图质量不高和GDI+不支持双缓冲的问题。开发环境采用Visual Studio 2010旗舰版,因为不需要做什么项目,因为我还是学生呵呵,所以不需要考虑太多的兼容性方面的因素,还是喜欢用新的工具。开发过程中使用到的技术大概有:DWM API:这是vista以来新增的A原创 2012-04-08 22:43:15 · 7523 阅读 · 5 评论 -
代码行数统计工具
最近无聊,写了个代码行数统计的小工具,采用MFC开发,核心计算代码如下:templateVOID CalcLines(CONST T* buffer,CONST T seprator,CONST DWORD nchars,CodeFileLineInfo& cfi){ DWORD visible = 0; for (DWORD i = 0;i<nchars;i++) { vi原创 2012-12-15 22:25:03 · 1452 阅读 · 5 评论