在一DLL的导出函数中建立一对话框,如果点击OK,函数返回了对话框的一个成员变量,如果不是,则返回500,当点OK时是正常的,但是如果直接按ESC或者按“叉”关掉对话框,则得到了一个极大的值,这是怎么回事情?

解决方案 »

  1.   

    的确是这个变量没有初始化,我把它初始化成零,结果就传0过去了。
    那么对话框默认按ESC返回的是什么?
      

  2.   

    但是我把它初始化成零,按ESC也传0,我的本意是如果按ESC就取消,不要再把这个值往回传了,但实际效果按ESC和OK好象一样了啊。
      

  3.   

    哦?我是这么写的。不过对话框我是用的默认的,把取消按钮给删除了,修改了一下。int  fun()
    {
        int a;
        DLG  dlg;
        a=dlg.DoMadal();
     if(a=IDOK)
        return   dlg.var;
     else
        return    100;}
      

  4.   

    你的 dlg.DoMadal 在前面当然有问题,应该先判断在显示
      

  5.   

    不明白,按ESC传0和按ok传0,意义本来就不一样,既然已经定义了变量,自然会有返回值了,如果按esc不希望是0,赋值就是了。
      

  6.   

    啊?我需要的是对话框上输入框的返回值啊,我的意思是按OK,把这个值返回,不是按OK,返回100,我就认为是取消了,就不做什么。但问题是,程序就不走ELSE这边,按ESC走的也是if(a=IDOK)这边啊。
      

  7.   

    int  fun()
    {
        int a;
        DLG  dlg;
        a=dlg.DoMadal();
     if(a=IDOK)
        return   dlg.var;
     else
        return    100;}
    应该是if(a==IDOK)看出来没有