加上括号就行了
case 0:

Cdialog1 dlg1;
dlg1.DoModual();

解决方案 »

  1.   

    you may try this:void Function1()
    {
       CDialog1 dlg1;
       dlg1.DoModal();
    }void Function2()
    {
       CDialog2 dlg2;
       dlg2.DoModal();
    }
    case 1:
       Function1();
       break;
    case 2:
       Function2();
       break;
      

  2.   

    在CASE后面的定义都会被忽略掉,所以编译出错.你可以用IF-ELSE来替代SWITCH-CASE
      

  3.   

    CDialog *pDlg = NULL;
    switch (m_ListSelection)
    {
    case 0:
    pDlg = (CDialog*) new Cdialog1();
    pDlg->DoModal();
    delete pDlg;
    break;
    case 1:
    pDlg = (CDialog*) new Cdialog1();
    pDlg->DoModal();
    delete pDlg;
    break;
    case 2:


    …orCDialog *pDlg = NULL;
    switch (m_ListSelection)
    {
    case 0:
    pDlg = (CDialog*) new Cdialog1();
    break;
    case 1:
    pDlg = (CDialog*) new Cdialog1();
    break;
    case 2:



    }
    pDlg->DoModal();
    delete pDlg;
      

  4.   

    還是頂樓 pzone(见分眼红) 的方法比較簡便吧.
      

  5.   

    其实上面都是对的,只要你在对话在Switch外面申明就可以了。
    而且其它的类型也是一样的
      

  6.   

    楼上的方法都可以,但是从Code的角度来看,zhq2000(俗子) 的方法比较好!
      

  7.   

    zhq2000的说的比较好,是挺好的解决这类问题的方法,一般都是用指针比较好的,君不见很多好的代码都是如此的吗?
      

  8.   

    111222(www.mozilla.org)的思想很好!
    独立成函数,可以很方便的修改程序,可读性又好!!简单的实现的话加上括号就行了
    case 0:

    Cdialog1 dlg1;
    dlg1.DoModual();

      

  9.   

    CDialog *thePointer;
    switch(m_ListSelection)
    {
    case 1:
    thePointer=new Dialog1;
    break;
    case 2:
    thePointer=new Dialog1;
    break;
    default:
    thePointer=NULL;
    }
    if(thePointer) thePointer->DoModal();
      

  10.   

    自己做一个通用的Dialog,把里面的能改变的全作成参数传过去
    我就是这么干的,方便我想你的Dialog不会太复杂吧,不然让我自己做,也想不出那么多
      

  11.   

    1、用无模式对话框
    2、构建一个类似MFC的映射处理体,这样就可以把你的对话框ID号与具体的处理关联。
      

  12.   

    pZone的方法是最好的,因为代码很简单。。简单就是好,管它效率高不高。