大概的代码如下:
try
{
//...
}
catch(Exception &e)
{
    SendNotifyMessage(pView->m_hWnd, WM_ERRMSG, (WPARAM)MB_ICONSTOP, (LPARAM)e.info());
}
这里想把错误信息发送给View,但在View接收到lparam时可能e已经被释放,这时lparam就是乱码。
我该如何传递e.info()?
难道要在catch里,动态new一个字符串,然后在View中delete?

解决方案 »

  1.   

    考虑到e的变量生存周期,不妨用static字符串
      

  2.   

    e.info()前加LPCTSTR试试(LPCTSTR)e.info()
      

  3.   

    可否用一个局部变量 再SendMessage???
      

  4.   

    用static的话,会不会内存不被释放,直到程序退出才释放。
    也就是说static的变量的生存周期是整个程序?
      

  5.   

    LocalAlloc一块内存,把信息拷贝进去,将句柄放在消息中传递。
    接收方收到消息处理完成后释放掉。