好久没写对话框程序了都忘光了总结下

 首先是创建模态对话框和非模态对话框

模态对话框:CDialog  dlg;

                       dlg.DoModal();

非模态对话框:CDialog *dlg;

                         dlg->Create(IDC_Dialog1,this);

                         dlg->ShowWindow(SW_SHOW);

如何给EDIT框一个单击事件:

首先建立类向导里插入PreTranslateMessage(MSG* pMsg) 函数

BOOL CKeyboardDlg::PreTranslateMessage(MSG* pMsg)

{

CWnd   *   pWnd1   =   GetDlgItem(IDC_EDIT1);
if(GetFocus()==pWnd1)// 
 if(pMsg-> message   ==   WM_LBUTTONDOWN ) 
 { 
   
  m_key.Create(IDD_DIALOG1,this);
  m_key.ShowWindow(SW_SHOW);
   
 }

return CDialog::PreTranslateMessage(pMsg);

}

 

当EDIT框获得光标时候弹出对话框时我们需要注意的东西

当弹出对话框后其实光标还是在编辑框里面,只是当前活动窗口变成了子窗口,等你一关闭子窗口后会又回到当前的编辑框里,相当于形成了一个死循环,

所以我们一定要在关闭子对话框的时候同时不要把光标落在当前的编辑框里(不能用 ::DestroyCaret(); 销毁光标,那个只是销毁了光标,实际上还是

在当前编辑框里),要用SetFocus()把它移动到其他的控件上,不能在EDIT的OnSetfocus里设置,必须得在关闭子对话框的函数里把活动控件移到其他

控件上。

 

 

子对话框如何调用父对话框函数

在子对话框中先添加父对话框的头文件

然后定义:CDialog *dlg=(CDialog *)GetParent();就可以调用了。

 

如何不让对话框程序不一按回车键和ESC键就退出程序:

原因:回车键和ESC键默认调用的是程序的原有的OnOK();

所以直接重载下OnOK();就可以了,重载的方法,重新定义一个函数名一样的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值