很奇怪呀,应该release下的是最完善的版本呀,怎么反过来了?

解决方案 »

  1.   

    这个问题比较复杂,举例来说,
    xx(WPARAM,   LPARAM);如果自定义消息函数中这两个参数不加的话,在debug版中没问题,可到了release版中就会出错  
      

  2.   

    那是因为程序Debug下调用的库和Release下调用的不太一样。所以有可能么DEBUG下的可执行文件能运行,而RELEASE下的可执行文件却运行不了的情况。
      

  3.   

    又帮你搜到一个答案:(摘自pgood(没看过海))
    最终在高手的指点下找出来了,   
      原程序大意:   
      CString   str="this   is   test";   
      GetActiveView()->SendMessage(WM_MYINFO,(WPARAM   )&str);   
      ......   
      MyView.cpp   
      用函数test响应WM_MYINFO消息   
      void   MyView::Test(WPARAM   wParam)   
      {   
      CString   *pStr=(CString   *)wParam;   
      MessageBox(*pStr);   
      }   
      .....   
      程序在98下无任何问题,在2000下Release下出错,因为WPARAM是一个WORD,而指针是一个LONG,所以就为越界访问错误(不知这种说法是否准确),正确的做法是用LPARAM传递指针参数,如:   
        
      CString   str="this   is   test";   
      GetActiveView()->SendMessage(WM_MYINFO,NULL,(LPARAM   )&str);   
      ......   
      MyView.cpp   
      用函数test响应WM_MYINFO消息   
      void   MyView::Test(WPARAM   /*wParam*/,LPARAM   lParam)   
      {   
      CString   *pStr=(CString   *)lParam;   
      MessageBox(*pStr);   
      }   
      

  4.   

    建议你去看看Debug和Release的差别吧,差别还是蛮大的