点击edit控件弹出对话框,焦点不在该对话框上时,对话框摧毁

原创 2012年03月25日 14:32:00
前面一大部分都是参考某位同学的,具体哪位记不清了,在此声明一下。
 
点击edit控件出现对话框:
1,首先捕获鼠标信息:
    添加一个消息传递,重载函数PreTranslateMessage(MSG* pMsg),可以在wizard中添加PreTranslateMessage即可。
重载的代码:
if( pMsg->message == WM_LBUTTONUP )//消息为鼠标左键升起,不能为down,不知道原因。down的话按在任何地方都会调用对话框
{  
  if ( GetDlgItem(IDC_EDIT1)->GetSafeHwnd() == pMsg->hwnd )//判断句柄为edit
  {
 jisuan*m_pDlg;//非模态显示对话框。如果用模态的话,鼠标会变成光标的样子,什么都做不了
 m_pDlg = new jisuan;
        m_pDlg->Create(IDD_DIALOG1, this);
 m_pDlg->ShowWindow(SW_SHOW);
  }
}
这样就会调用对话框
2.传值:
  要把被调用对话框里的值传给edit控件。在被调用对话框里的ok控件被按下的函数里添加如下代码:
 CString aa;
 CWnd*cwnd=AfxGetMainWnd();//获得父窗口句柄,在此即为调用对话框的edit控件所在的对话框
 if (GetDlgItemText(IDC_EDIT_NEW,aa))//读取被调用对话框里edit控件的值,存在aa里,返回的值为aa的长度,没有值的时候返回为0
 {
  cwnd->SetDlgItemText(IDC_EDIT1,aa);//把aa的值放在edit控件里
 }
 UpdateData(false);
3.销毁被调用的对话框:因为非模态显示的对话框在关闭后没有销毁,只是最小化,看不到了,所以要手动销毁。模态显示的对话框在ok关闭的时候就销毁了,无须收到销毁。
  在wizard里,添加一个消息:PostNcDestory,在函数PostNcDestory()里添加代码:
 delete this;
ok 了!!
在调试程序的时候,我删除了无用的控件,因此出现问题“试图执行系统不支持的操作”,搜了一下原因,引例如下:
试图执行系统不支持的操作:
开发平台:VS.NET 2003。
出现错误:试图执行系统不支持的操作。
错误原因:a)删除了对话框控件,但是没有删除相应控件代码;
          b)修改了资源ID,资源ID对不上号;
          c)将MFC程序做成打包软件,安装在没有VC的机器上,出现错误,在有VC环境的机器上运行则没有这个错误。
       解决办法:对于前面两种情况,删除相应控件或资源代码即可;第三种情况在无VC环境的机器上,注册程序中使用的控件即可。

以上是通过按钮调用摧毁对话框的函数,,当焦点不在对话框上直接关闭对话框的时候,加载以下函数:
在CWnd::OnActivate消息中处理:
if(nState   ==   WA_INACTIVE)
{
      PostNcDestory()  //失去焦点了,摧毁对话框
}
这样当窗口不是当前窗口时,关闭该窗口。。。。

相关文章推荐

mfc非模态对话框Child窗口CEdit控件获取不到焦点问题

遇到的问题就是创建一个非模态的子窗口。发现子窗口上的edit控件总是不能被激活,开始担心自己工程出问题了,于是新建了一个sdi,如图问题依然存在,既然如此那就在新工程中找问题,先设置对话框style,...

点击新增按钮,弹出对话框,并且对话框加载另外一个页面的内容的具体实现

今天在做一个功能的时候,我要实现:点击新增按钮,弹出对话框,并且对话框加载另外一个页面的内容 具体实现如下: 1、新增按钮的实现代码(js部分): //弹出框跳转页面 function toP...

点击edit控件出现对话框

  • 2008年07月08日 10:55
  • 2KB
  • 下载

每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码

2013-9-15 1.    CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在A...

动态库dll中生成对话框,若包括ActiveX控件,创建对话框失败时,要在InitInstance()中加上: OleInitialize(NULL) & AfxEnableControlContai

MFC的一个bug,没耐心看,就看看结论好了 发信站: 饮水思源 (2003年10月25日21:20:37 星期六), 站内信件 MFC的一个bug 1,问题的提出 (1)Dll的创建 是这样的...
  • lionzl
  • lionzl
  • 2012年02月07日 00:51
  • 2788

MFC基于对话框的程序添加菜单&点击菜单弹出一个新的对话框

基于对话框的应用程序默认是没有菜单的,如果我们想为它添加菜单, 可按以下方法来做: 1.在资源视图中制作菜单对象,并将ID设为IDR_MENU 具体方法是资源视图中右击-->Inse...

android 实现点击输入框弹出日期选择对话框(DatePickerDialog)

前言 这里我们实现一个功能,点击日期输入框(EditText),即可弹出日期选择对话框(DatePickerDialog),等用户选择日期后,将用户选择的日期显示在日期输入框。 1.activit...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:点击edit控件弹出对话框,焦点不在该对话框上时,对话框摧毁
举报原因:
原因补充:

(最多只允许输入30个字)