MFC不同对话框之间的数据传递.pdf
文本预览下载声明
MFC不同对话框之间的数据传递
在编程时常常需要添加辅助对话框,在这个辅助的对话框中设置某些 性值然后传给主程序。这类对话框或称为选项对话框,允许⽤户通过
设置⼀些选项来改变软件的的某些⾏为或特性。例如 :
1.向扫雷游戏中⾃定义界⾯中设置界⾯的⾏数,列数和雷数,并且将这三个设定的值传递到View类中 (正向:数值传递由副界⾯到主界
⾯) ;
2.其他需要设定数值在主界⾯发挥作⽤的实例 ;
下⾯还是以⼀个实例的形式介绍⼀下选项对话框向主对话框中数值传递的过程。以扫雷程序中⾃定义界⾯中的三个参数 :⾏数,列数和雷数
为例做⼀个简要的介绍。具体操作如下 (以SDI为例) :
(1)打开⼯程资源视图右键添加资源Dialog
(2)在Dialog下找到新添加的对话框右键 性,编辑对话框的名称和ID
(3)打开⼯具栏,向这个新添加的对话框中添加三个静态⽂本控件和三个编辑框控件,
如下图所⽰ :
(4)在给控件关联变量之前还得创建这个对话框对应的类。操作为 :双击这个对话框空⽩部分,根据类导向的提⽰创建对应的
类classCSelfDefineDlg
(5)给这三个编辑框关联对应的成员变量
编辑对应的名称和ID:如下表所⽰ :
宽度 :IDC_LEIQUWIDTH
关联的成员变量 :UINT m_uiMineAreaColCount;
⾼度 :IDC_LEIQU_HEIGHT
关联的成员变量 :UINT m_uiMineAreaRowCount;
雷数 :IDC_LEIQU_MINENUM
关联的成员变量 :UINT m_uiMineNum;
注意 :这⾥第4步必须在第5步之前,负责这些变量⽆法通过右键关联到类CSelfDefineDlg中。
这样选项对话框中的操作已完成,下⼀步就是将这三个值传递到主界⾯ (此处为对应的View类中)
在View类中的操作步骤如下 :
(1)在头⽂件中添加三个成员变量,类型和设置选项对话框中⼀致。
int m_ColCount ;//雷区列数
int m_ RowCount ;//雷区⾏数
int m_ iMineNum; //雷数
(2)在传递这三个参数值的消息响应函数中添加下⾯的代码,这⾥需要注意的是,要在View类的源⽂件中添加刚才的那个设置项窗⼝类的
头⽂件,这⾥是 :
// ⾃定义扫雷窗⼝
#include SelfDefineDlg.h
传递这三个参数值的消息响应函数是在菜单命令 “⾃定义”中添加的,函数如下 :
void CMineSweepingView ::OnGameSelfdefine()
CSelfDefineDlg dlg ;
if(IDOK == dlg.DoModal())
m_ RowCount=dlg.m_ uiMineAreaRowCount ;
m_ColCount=dlg.m_ uiMineAreaColCount ;
m_ iLeftMineNum=dlg.m_ uiMineNum;
}
注 :这个函数中只添加了数值传递的部分实现代码,函数中具体的控制还得根据具体的情况添加相应的代码。
以上就是MFC中副窗⼝向主窗⼝数值传递的⼀个过程。
关于在扫雷英雄榜界⾯中,显⽰的最⾼纪录是View类传递给这个扫雷英雄榜界⾯,这只是⼀个逆向的过程,即
dlg.m_ uiMineAreaRowCount= m_ RowCount ;
dlg.m_ uiMineAreaColCount= m_ColCount ;
dlg.m_ uiMineNum = m_ iLeftMineNum;
道理是⼀样的。
显示全部