对话框1

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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值