我使用messagebox时的第一次机会异常

时间:2014-05-22 09:02:11

标签: exception visual-c++ messagebox

每当我使用MessageBox函数时,我都会获得第一次机会异常。我的留言箱就是这样。

MessageBox(NULL, (LPCWSTR)L"testing", (LPCWSTR)L"SOFTSAFETY", MB_OKCANCEL | MB_ICONWARNING);

如果我调试,我得到了这个

First-chance exception at 0x76267A24 (user32.dll) in Thread Message BOX.exe: 0xC0000005: Access violation reading location 0x001629D0.

First-chance exception at 0x76267A24 (user32.dll) in Thread Message BOX.exe: 0xC0000005: Access violation reading location 0x001629D0.

First-chance exception at 0x76267A24 (user32.dll) in Thread Message BOX.exe: 0xC0000005: Access violation reading location 0x001629D0.

First-chance exception at 0x76267A24 (user32.dll) in Thread Message BOX.exe: 0xC0000005: Access violation reading location 0x001629D0.

如何删除这些例外?由于这个例外,我的程序没有被暂停,它只是在输出窗口中显示。所以我可以忽略这些。请指导我。

1 个答案:

答案 0 :(得分:1)

也许看一下MSDN对你有帮助吗? MessageBox函数具有以下原型:

int WINAPI MessageBox(
  _In_opt_  HWND hWnd,
  _In_opt_  LPCTSTR lpText,
  _In_opt_  LPCTSTR lpCaption,
  _In_      UINT uType
);

LPCTSTR是指向TCHAR的指针,并不一定是宽字符。在wtypes.h中,您会找到:

const TCHAR *LPCTSTR

TCHAR可以是wchar_tchar,具体取决于您的项目设置。你的问题几乎可以肯定是你强迫(通过演员阵容)广泛的字符,预期常规字符。

您可以尝试使用_T()宏,根据项目的配置生成常规或宽字符串文字。