Visual Studio C++ MFC 基于对话框的应用程序设计
—如何将一个项目中的对话框类移植到另一个项目中(详细步骤)
Botton-Edit-Menu-Picture
一、建立一个对话框应用程序项目
功能:用于求两个数的和; 内容:对话框中包含四个对象:
一个按钮:用于实现将两个数相加;
三个编辑框:两个用于输入数据,一个用于输出数据。 具体步骤如下:
1. 新建一个MFC对话框项目ex1,选应用程序类型为Dialog Base; 2. 删除窗口中系统自动生成的TODO…、OK、Cancel; 3. 将一个Button拖入窗口中,并将其Caption改为Show,ID改为IDC_BUTTON_SHOW; 4. 双击Solution Explorer中ex1.rc,右击Dialog|Add Resource…|Dialog|New; 5. 将以上ID改为IDD_DIALOG_ADD,Caption改为“求两个数的和”;
6. 删除系统自动产生的对象,并拖入三个Edit Control和一个Button至对话框中; 7. 右击对话框|Add Class,选CDialog为基类,类名为ButtonEdit|Finish; 8. 设置Button的Caption为“Add”,ID为IDC_BUTTON_ADD; 9. 设置Edit的关链变量分类为value,类型为double,名分别为editA、editB、editSum; 10. 双击Add,加入以下代码:
UpdateData(TRUE); //控制到变量传递数据 editSum=editA+editB; UpdateData(FALSE); //变量到控制传递数据 11. 双击Show,加入以下代码:
beDialog.DoModal(); ButtonEditbeDialog;
12. 并在程序开头部分加入:#include\; 13. 为方便起见,可给editA及editB赋初值:
双击Add并将程序中的editA(0)和editB(0)改为editA(1.234)和editB(5.678); 14. F5即可调试运行程序。
二、建立一个用菜单实现绘图的应用程序项目
功能:绘制国际象棋棋盘; 内容:对话框中包含二个对象:
一个Picture Control,用于显示图形; 一个Menu,用于绘制国际象棋棋盘。 具体步骤如下:
1. 新建另一个MFC对话框项目ex2,选应用程序类型为Dialog Base; 2. 删除窗口中系统自动生成的TODO?、OK、Cancel; 3. 将一个Button拖入窗口中,并将其Caption改为Show,ID改为IDC_BUTTON_SHOW; 4. 双击Solution Explorer中ex2.rc,右击Dialog|Add Resource…|Dialog|New; 5. 将以上ID改为IDD_DIALOG_MAP,Caption改为“国际象棋棋盘”;
6. 删除系统自动产生的对象,并拖入一个Picture Control对象并调整大小; 7. 右击对话框|Add Class,选CDialog为基类,类名为MenuPicture|Finish; 8. 设置Picture Control的ID为IDC_PIC;并设置关联变量名为picDraw;
1
9. 右击Resource View|Menu|AddResource|Menu|New;并将ID改为IDR_MENU_MAP; 10. 编辑菜单:File|Chess-Exit;
11. 右击Chess|Add Event Handler|MenuPicture|Add and Edit;并添加如下代码:
CRect r;
intw,h,x[8+1],y[8+1],i,j;
CWnd *pic = GetDlgItem(IDC_PIC); //取Picture的长宽信息 GetDlgItem(IDC_PIC)->GetWindowRect(&r); w=r.Width(); h=r.Height(); for(i=0;i<9;i++){ x[i]=i*w/8; y[i]=i*h/8; }
CDC *pdc = pic->GetDC(); pdc->Rectangle(r); CBrushmyBrush;
myBrush.CreateSolidBrush(RGB(0,0,0)); for(i=0;i<8;i++){ r.left=x[i]; r.right=x[i+1]; for(j=i%2;j<8;j+=2){ r.top=y[j]; r.bottom=y[j+1]; pdc->FillRect(r,&myBrush); //绘制黑方格 } }
12. 将IDD_DIALOG_MAP对话框的Menu属性选为IDR_MENU_MAP; 13. F5调试运行即可。
三、将前两个项目中的两个对话框类移植到新的项目中
功能:将以上两个对话框类移植到新项目中; 内容:主程序对话框包含两个按钮: 一个用于调出求和对话框;
另一个用于调出绘制棋盘对话框。 具体步骤如下:
? 向当前项目添加第一个对话框:
1. 建立第三个基于对话框的应用程序ex3,同样删除系统自动创建的对象; 2. 向窗口拖入两个Button,分别用于显示ex1中的Add和ex2中的Map;将其Caption
属性修改为ShowAdd和showMap,ID修改为IDC_BUTTON_SHOWADD和IDC_BUTTON_SHOWMAP;
3. 将ex1\\ex1目录下的ButtonEdit.h和ButtonEdit.cpp文件复制到ex3\\ex3目录下; 4. 在ex3工程的Solution Explorer的Header Files文件夹:
右击:|Add|Exisiting Items…|ButtonEdit.h|Add;
2
5. 6. 7. 8. 9.
同理,在Source Files中加入ButtonEdit.cpp文件;
将ex1中的对话框资源复制到当前资源中:File|Add|Existing Project|ex1\\ex1\\ex1; 双击ex1.rc;复制IDD_DIALOG_ADD;
双击ex3.rc;将以上复制的对话框粘贴过来; 双击Show Add,添加以下代码: ButtonEditbeDlg; beDlg.DoModal();
并在文件开头部分加入:#include\; 且将#include \改为#include \10. F5即可调试运行。
? 向当前项目添加第二个对话框—带菜单的对话框
1. 操作同前,复制MenuPicture.hpp和MenuPicture.cpp文件及IDD_DIALOG_MAP和
IDR_MENU_MAP;
2. 双击Show Map;添加以下代码:
MenuPicturempDlg; mpDlg.DoModal(); 并在文件开头部分加入#include\; 并将#include \改为#include \; 3. F5便可调试运行。
3
MFC06 - Visual Studio C++ MFC 对话框应用程序设计—对话框移植



