1.模态对话框的创建:
void CMyboleView::OnDialog()
{
// TODO: Add your command handler code here
CTestDlg dlg;
//DoModal本来就有显示对话框的作用
dlg.DoModal();
//当程序执行到这,就不再继续往下执行,知道我们点击“OK”或者“Cancel”
//我们就可以执行程序中的其他功能
}
2.非模态对话框的创建:
void CMyboleView::OnDialog()
{
// TODO: Add your command handler code here
//非模态对话框
//我们在创建非模态对话框的时候,将dlg定义成一个局部变量是不可以的
//有两种方式去解决:1.将dlg定义成View类的成员变量;
//2.定义指针,在堆上分配一个内存,在堆上所分配的内存和我们整个程序的生命周期是一致的
//当我们在创建非模态对话框的时候它会顺序往下执行,程序的执行并不会停顿在某条语句的
//执行上,也就是我们的OnDialog这个函数执行完成了,它就可以执行其他的任务了
//当然这里有一个问题,我们定义的指针变量本身就是一个局部变量
//当它的生命周期结束的时候,它所保存的内存地址也就丢失了,他所指向的这块内存
//我们就没有办法再引用到了。这里我们可以将它变成成员变量,然后在我们的析构函数当中
//去释放这个指针所指向的内存。以上就是在使用费模态对话框的时候要注意的地方
// CTestDlg dlg;
CTestDlg *pDlg=new CTestDlg();
pDlg->Create(IDD_DIALOG1,this);
//调用ShowWindow将这个对话框显示出来
pDlg->ShowWindow(SW_SHOW);
}
3.动态创建按钮:
“按钮的单击”属于通告消息
//方法一
void CTestDlg::OnBtnAdd()
{
// TODO: Add your control notification handler code here
/*方法一:
不能让它多次创建,因为它已经和一个窗口绑定在一起了,当我们已经判断它和一个
窗口绑定在一起的时候我们需要将它的窗口先把它销毁了,当它再一次点击的时候
我们再去创建它。在这个地方我们可以设置一个变量.
当m_bIsCreate==FALSE,说明Button还没有创建,然后我们就去创建它
*/
if(m_bIsCreate==FALSE)
{
m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
CRect(0,0,100,100),this,123);
m_bIsCreate=TRUE;
}
//否则我们要销毁这个窗口
else
{
m_btn.DestroyWindow();
m_bIsCreate=FALSE;
}
}
//方法二:
void CTestDlg::OnBtnAdd()
{
// TODO: Add your control notification handler code here
//如果我想通过定义一个局部的变量来判断可不可以呢
//为了让它在我们点击这个Button按钮的时候,它不再进行初始化,
//那么我们可以讲一个局部的变量设置为一个静态的局部变量
//一个静态的变量,当函数进入的时候,当它完成第一次初始化之后,
//以后再进入的时候,这个变量就不会再重新构造了。
//因为当你第一次进入OnBtnAdd这个函数的时候,已经为这个静态的变量
//分配了内存空间了,以后就不会再重新分配了。
static BOOL bIsCreate=FALSE;
if(bIsCreate==FALSE)
{
m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
CRect(0,0,100,100),this,123);
bIsCreate=TRUE;
void CMyboleView::OnDialog()
{
// TODO: Add your command handler code here
CTestDlg dlg;
//DoModal本来就有显示对话框的作用
dlg.DoModal();
//当程序执行到这,就不再继续往下执行,知道我们点击“OK”或者“Cancel”
//我们就可以执行程序中的其他功能
}
2.非模态对话框的创建:
void CMyboleView::OnDialog()
{
// TODO: Add your command handler code here
//非模态对话框
//我们在创建非模态对话框的时候,将dlg定义成一个局部变量是不可以的
//有两种方式去解决:1.将dlg定义成View类的成员变量;
//2.定义指针,在堆上分配一个内存,在堆上所分配的内存和我们整个程序的生命周期是一致的
//当我们在创建非模态对话框的时候它会顺序往下执行,程序的执行并不会停顿在某条语句的
//执行上,也就是我们的OnDialog这个函数执行完成了,它就可以执行其他的任务了
//当然这里有一个问题,我们定义的指针变量本身就是一个局部变量
//当它的生命周期结束的时候,它所保存的内存地址也就丢失了,他所指向的这块内存
//我们就没有办法再引用到了。这里我们可以将它变成成员变量,然后在我们的析构函数当中
//去释放这个指针所指向的内存。以上就是在使用费模态对话框的时候要注意的地方
// CTestDlg dlg;
CTestDlg *pDlg=new CTestDlg();
pDlg->Create(IDD_DIALOG1,this);
//调用ShowWindow将这个对话框显示出来
pDlg->ShowWindow(SW_SHOW);
}
3.动态创建按钮:
“按钮的单击”属于通告消息
//方法一
void CTestDlg::OnBtnAdd()
{
// TODO: Add your control notification handler code here
/*方法一:
不能让它多次创建,因为它已经和一个窗口绑定在一起了,当我们已经判断它和一个
窗口绑定在一起的时候我们需要将它的窗口先把它销毁了,当它再一次点击的时候
我们再去创建它。在这个地方我们可以设置一个变量.
当m_bIsCreate==FALSE,说明Button还没有创建,然后我们就去创建它
*/
if(m_bIsCreate==FALSE)
{
m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
CRect(0,0,100,100),this,123);
m_bIsCreate=TRUE;
}
//否则我们要销毁这个窗口
else
{
m_btn.DestroyWindow();
m_bIsCreate=FALSE;
}
}
//方法二:
void CTestDlg::OnBtnAdd()
{
// TODO: Add your control notification handler code here
//如果我想通过定义一个局部的变量来判断可不可以呢
//为了让它在我们点击这个Button按钮的时候,它不再进行初始化,
//那么我们可以讲一个局部的变量设置为一个静态的局部变量
//一个静态的变量,当函数进入的时候,当它完成第一次初始化之后,
//以后再进入的时候,这个变量就不会再重新构造了。
//因为当你第一次进入OnBtnAdd这个函数的时候,已经为这个静态的变量
//分配了内存空间了,以后就不会再重新分配了。
static BOOL bIsCreate=FALSE;
if(bIsCreate==FALSE)
{
m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
CRect(0,0,100,100),this,123);
bIsCreate=TRUE;