创建非模态对话框,变量不能是局部的,可有两种方法
1,把变量声明为成员变量。
2,把变量声明为指针在堆上创建,如
CTestDlg *pDlg = new CTestDlg();
pDlg->Create(IDD_DIALOG, this);
pDlg->ShowWindow(TRUE);
看了孙鑫老师的视屏教程,收获良多,以下就是一些。
操纵控件可有很多种方法,以CEdit控件为例,我们首先创建三个CEdit控件,ID为IDC_EDIT1,
IDC_EDIT2,IDC_EDIT3,然后实现在1,2中输入数字,相加后放入第三个控件中
实现方法如下
1,通过GetWindowText,SetWindowText实现
首先我们通过GetDlgItem取得指定控件的指针,然后通过上面两个函数获取和设定窗口文本,实现方
法如下
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
2,通过GetDlgItemText,SetDlgItemText实现
这两个函数实现获取和设置控件文本,如下
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
GetDlgItemText(IDC_EDIT1,ch1,10);
GetDlgItemText(IDC_EDIT2,ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
SetDlgItemText(IDC_EDIT3,ch3);
3,通过GetDlgItemInt,SetDlgItemInt实现
int num1,num2,num3;
num1=GetDlgItemInt(IDC_EDIT1);
num2=GetDlgItemInt(IDC_EDIT2);
num3=num1+num2;
SetDlgItemInt(IDC_EDIT3,num3);
4,把控件与变量关联在一起,我们在AppWizard里设定三个变量,m_Num1, m_Num2, m_Num3,类型均为int
则实现如下
UpdateData();
m_num3=m_num1+m_num2;
UpdateData(FALSE);
5,在AppWizard里设定三个变量m_edit1,m_edit2,m_edit3,设置成control类型,则为下,此时该变量
就相当于一个Edit控件
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
m_edit1.GetWindowText(ch1,10);
m_edit2.GetWindowText(ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
6,通过SendMessage和WM_GETTEXT,WM_SETTEXT消息
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)ch1);
m_edit2.SendMessage(WM_GETTEXT,10,(LPARAM)ch2);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
m_edit3.SendMessage(WM_SETTEXT,0,(LPARAM)ch3);
7,通过SendDlgItemMessage和WM_GETTEXT,WM_SETTEXT
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);
m_edit3.SetWindowText(ch3);