MFC 写五子棋用到的知识点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/laptoper/article/details/48323993

MFC应用程序中的基于单文档模式的结构框架如下:


在做五子棋的时候只用到了View类和CMainFrame类(貌似大部分mfc应用程序也就用这两个类),View类主要用来画棋谱和棋子,用于客户区;CMainFrame类见名思意主要是用来控制框架的,比如 窗口的大小,状态栏窗格的显示等等...

接下来是画棋子,新建两个Bitmap资源用来显示棋子,除了棋盘上要显示的棋子资源外,还有光标(箭头)的形状也要改成棋子的形状,需要创建Cursor资源,(关于光标的焦点问题:默认新建的资源光标的焦点是在左上角,即热点为(0,0),所以有必要设置热点为正中间(15,15))状态栏要显示的图片要创建Icon资源,见下图:


图片资源需要在View类中的构造函数中加载,代码如下:

CFiveChessView::CFiveChessView()
{
	// TODO: add construction code here
	//加载棋子位图和光标
	hcursorblack=AfxGetApp()->LoadCursor(IDC_CURSOR1);	
	hcursorwhite=AfxGetApp()->LoadCursor(IDC_CURSOR2);
	m_bmwhite.LoadBitmap(IDB_WHITE);
	m_bmblack.LoadBitmap(IDB_BLACK);
	//清理棋盘
	for(int i=0;i<19;i++)
		for(int j=0;j<19;j++)
			wzq[i][j]=0;
	//白棋先下
    colorwhite=true;
}

然后就是响应函数,右击鼠标选择‘建立类向导’如下图:


其中Project就是我们建的工程,Class name即为工程中的几个类,Object IDs中选中第一个时右边的Messages显示的关于这个类中可以添加的一些消息,比如OnLButtonDown等等,当然Object IDs中还有其他ID,这些ID都是关于窗口中一些菜单选项、Toolbar、或者其他按钮控件等的ID,可以为他们添加相应的响应函数。

当然也可以直接右键第一个图中的View类,直接选择添加相应的函数,用来在程序中调用,这样建的好处是省了建函数的声明等等,直接在函数中添加相应代码就好啦,例如五子棋工程中就需要建一个检查是否五子连成一条线的函数。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页