基于对话框的应用程序
在主对话框上有一个按钮,我想做到:单击该按钮就打开另外一个对话框。
另外一个对话框对应的类CSelectRules只是简单的从CDialog继承的,我只在另外一个对话框上面又加了几个按牛、树行控件,把大小也变大了...在主对话框上的按钮on_click函数如下:
void C主Dlg::OnBNS这个按钮() 
{
CSelectRules   dlgSelectRules;
int nRetCode=dlgSelectRules.DoModal();
if(nRetCode==IDOK)
{...}
else
{...}
}运行的时候,我在int nRetCode=dlgSelectRules.DoModal();前面设断点,然后向下运行,我发现这一行运行以后,nRetCode==-1 !于是,我改为CSelectRules   dlgSelectRules(this);
nRetCode仍然==-1 !我又改为CSelectRules   dlgSelectRules((GetDlgItem(IDD_主对话框));
nRetCode仍然==-1 !我之所以这样改,因为我一直认为问题出在
CDialog::CDialog( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );
我一直认为我的pParentWnd 参数有问题,是不是这样呢?
如果是这样,我该如何得到pParentWnd ?

解决方案 »

  1.   

    你的问题不在这里。
    常见的情况是,因为RICHEDIT没有初始化,在DLL里调用对话框之前先使用一个宏。
      

  2.   

    你为你的那个对话框建一个成员变量(mDialog),在Click事件中 mDialog.DoModal,是一下,看是否可以
      

  3.   

    正常情况下你的做法是对的,使用默认构造函数就可以了。。在中CSelectRules加覆盖DoModal()试试int CSelectRules::DoModal()
    {
        CDialog::DoModal();
    }
      

  4.   

    可能是你resource.h中的资源有冲突吧
      

  5.   

    刚才我用 liuruxin(刘如心) 推荐的方法进行了实验
    还是不行
    跟以前一样
    我调试的时候,查看所用的hWnd=0x00000000
    这对吗?
      

  6.   

    刚才我用 xiaohyy(醉大饿极) ( ) 推荐的方法进行了实验
    不行!
      

  7.   

    fingerfox(狐狸.兄弟会) ( ) :高手!对,我在子对话框中还加了RICHEDIT!刚才我实验了
    是的,去掉RICHEDIT,就没有问题了!!!