我已将字符串移动到资源中,幸运的是我有 LPCTSTR 运算符可以方便地实例化字符串,例如:
CString str( (LPCSTR) IDS_MY_STRING);
现在我想用 MessageBox() 做类似的类型转换,所以它也从资源中加载字符串,所以我这样做:
MessageBox( hWnd, (LPCTSTR) IDS_MY_STRING ,"Error", MB_RETRYCANCEL);
但这不起作用,它编译但在运行时崩溃。现在以下工作:
MessageBox( hWnd, (CString) (LPCTSTR) IDS_MY_STRING ,"Error", MB_RETRYCANCEL);
我的问题是 MessageBox() 无论如何都将 LPCTSTR 作为第二个参数,那么为什么我们必须另外从 LPCTSTR 类型转换为 CString 才能使其工作?