MFC在编辑框中显示一个二维数组

想到总结这个问题是因为在先前的那个扫雷程序中,想实现在一个界面上显示当前的地雷的布局,实际上是显示一个二维数组,当时想了一些办法,觉得类似的可能用得上故作一个简单的总结。雷区的方格存储的是数字,-1的位置表示地雷,其他的数字表示以那个数字为中心,周围8个格子所包含的地雷总个数。所以这个问题实际上是显示一个m_RowCount和m_ColCount列的二维数组。当时想了两种方法。下面就分别做一下介绍。

第一种显示在一个全局的对话框中。代码如下:

CString map_str=_T("");
CString tmp_str=_T("");

for(int i=0;i

显示的界面效果如下,

MFC在编辑框中显示一个二维数组_第1张图片
图1-1显示9*9矩阵

这种方法虽然可以实现显示一个二维数组的显示,但是,对于整个系统而言并不合适,因为这里的这个对话框是通过一个全局函数显示出来的,在切换等级后,再次让作弊地图显示时,前一个显示的界面并不会消失(不点击确定),这样切换越多,这个界面显示会很多,不易于控制,所以放弃这种,用下面的这种方法实现。

第二种,单独地再创建一个对话框,在这个对话框中显示雷区地雷的布局,这样还需要添加控件,看是显示在列表框还是编辑框中。开始是选择列表框,但是没有实现(后续再尝试能否行得通),后来通过编辑框实现了这个功能。这种方法的实现步骤为:

首先添加一个对话框资源,对这个对话框添加对应的类CCheatMap,然后再在界面中添加一个编辑框控件,修改它的ID,并关联一个CString的成员变量m_strtemp。这里首先是获取雷区中整个的数字信息,整体是一个字符串,最后将这个字符串传给类CCheatMap的对象dlg的成员变量m_strtemp。最终显示在编辑框中的是m_strtemp,而编辑框中的显示必须和当前界面的行列一致,还必须换行显示,map_str+=_T("\r\n");还要用到转移字符,更多转义字符的信息详见:http://blog.csdn.net/shufac/article/details/20492085

代码如下:

Mine mine1[50][50];  //最大雷区
	for(int i=0;i


因为当前地图的大小是自定义的,所以编辑框的大小也必须灵活对应。所以还需要改变一下编辑框中的属性信息。

界面显示如图下图所示:
MFC在编辑框中显示一个二维数组_第2张图片
图1-2第二种方式显示9*9矩阵示意图

当界面比较大的时候,可能显示不下,所以编辑框的水平和垂直滑动条属性对应栏要设为true.

关于控件的运行就不单独列出来,在用到的时候再做相关的总结。



你可能感兴趣的:(MFC)