在Dll(由其他Dll调用)中创建了一主Dialog,点击其上一按钮后,又DoModal出一对话框,该对话框有一Edit控件,与一UINT变量相关,在Class Winzard 中设定范围(1--100)。问题如下:
  当DoModal出该对话框后,在Edit中随意键入一字母后,点击哦OK后出现ASSERT失败(Debug下)对框,忽略后弹出一空MessageBox(实际上面应显示Please enter a positive integer).

解决方案 »

  1.   

    不要紧,编译一个release版本的可能就不会出现这个问题。
      

  2.   

    release版本的弹出一空MessageBox(实际上面应显示Please enter a positive integer).我追踪过是因为DDX_Text(...)中上述语句资源id对的但是loadstring错误 。在dll中如何获得系统的资源呢?望高手指点。
      

  3.   

    那你是通过什么方式获得的“Please enter a positive integer”?要想获得“Please enter a positive integer”,可以直接使用CString::LoadString(AFX_IDP_PARSE_UINT);
      

  4.   

    Edit控件与UINT变量相关,如果输入值mfc用DDX_Text(...)检验如果类型不符则弹出MessageBox上面显示Please enter a positive integer.我的对话框是
    dll中的,且该dll由别的dll调用。程序运行时Edit控件输入类型不符的值,则弹出assert错误。我追踪进入发现DDX_Text(...)中上述语句资源id对的但是loadstring错误。我猜想是资源句柄不对。
    AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
    可以将资源切换到dll,我如何才能解决这个问题呢?望高手指点。
      

  5.   

    出现上面的问题,很可能是Dll中对全局资源的使用上除了问题。因为在做DDX或DDV时如果输入的不符合程序要求,会调到全局字符串资源来Show一个MessageBox.如果这个字符串load不到,就会弹出空对话框。用AFX_MANAGE_STATE(AfxGetStaticModuleState( ))也不一定能解决。很有可能重建工程才能正确。
      

  6.   

    改为 Extension DLL 试试?