MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 基于对话框的MFC AppWizard[exe]工程中,通过响应对

基于对话框的MFC AppWizard[exe]工程中,通过响应对话框上得按钮,动态建立一个新的对话框,怎么响应这个新的对话框上得按钮

www.myexceptions.net  网友分享于:2013-04-10  浏览:14次
基于对话框的MFC AppWizard[exe]工程中,通过响应对话框上得按钮,动态建立一个新的对话框,如何响应这个新的对话框上得按钮?
第一步:建立基于对话框的MFC AppWizard[exe]工程MyDialog
 
第二步:在对话框上放置按钮,点击该按钮可打开新的对话框,该按钮的响应函数如下:
void CMyDialogDlg::OnOpendialog() 
{
// TODO: Add your control notification handler code here
}
第三步:插入新的对话框资源CTestDialog,新对话框对应的类命名为CTestDialog
第四步:新对话框上放置各种编辑框和按钮:
第五步:响应原对话框上的“打开对话框”按钮,显示新对话框
void CMyDialogDlg::OnOpendialog() 
{
// TODO: Add your control notification handler code here
CTestDialog dlg;
dlg.DoModal();
}
第五步:响应新对话框的各种操作,例如新对话框上得按钮,代码如下
void CTestDialog::OnLButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
//打开文件对话框
char szPath[MAX_PATH];     //存放选择的目录路径 
    CString str;

    ZeroMemory(szPath, sizeof(szPath));   

    BROWSEINFO bi;   
    bi.hwndOwner = m_hWnd;   
    bi.pidlRoot = NULL;   
    bi.pszDisplayName = szPath;   
    bi.lpszTitle = "请选择需要打包的目录:";   
    bi.ulFlags = 0;   
    bi.lpfn = NULL;   
    bi.lParam = 0;   
    bi.iImage = 0;   
    //弹出选择目录对话框
    LPITEMIDLIST lp = SHBrowseForFolder(&bi);   

    if(lp && SHGetPathFromIDList(lp, szPath))   
    {
        str.Format("选择的目录为 %s",  szPath);
        AfxMessageBox(str); 
GetDlgItem(IDC_ESigDir)->SetWindowText(szPath);
strcpy(sig_direct,szPath);

        
    }
    else   
        AfxMessageBox("无效的目录,请重新选择");  

CDialog::OnLButtonDown(nFlags, point);
}
问题:运行程序,出现原对话框,单击原对话框上“打开对话框”按钮,出现新对话框,但第五步中无法响应动态生成的新对话框上得按钮?请问各位前辈怎么解决?

------解决方案--------------------
void CTestDialog::OnLButtonDown(UINT nFlags, CPoint point); 你这响应的是鼠标左键按下消息,又不是按钮的消息。
------解决方案--------------------
LS正解
要用按钮事件才行呀

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有