Win32 MessageBox切断文本

G.谁

当试图使用MessageBox函数显示Win32对话框时,文本似乎被截断了,但是奇怪的是,这种情况仅在构建发行版时才会发生,这使我完全困惑。

发生这种情况的代码:

wchar_t filepath[ MAX_PATH ];
GetModuleFileName( NULL, filepath, MAX_PATH );

wchar_t* fnp = PathFindFileName(filepath);

wchar_t filename[MAX_PATH];
swprintf(filename, MAX_PATH, L"%ls", fnp);
printf("%ls", filename);
wchar_t* pwc;
pwc = wcsstr(filename,L".exe");
wcsncpy(pwc,L"_real.exe\0",10);

if(!file_exists(filename)){
    wchar_t buff[] = L"unable to start because %ls cannot be found.";
    wchar_t say[MAX_PATH+sizeof(buff)-3];
    swprintf(say, wcslen(say), buff, filename);
    MessageBoxW(NULL, say, L"Error", MB_OK | MB_ICONERROR);
    return 0;
}
戴维·赫弗南

主要的问题是在哪里写wcslen(say)在您编写该文件时,say尚未初始化,因此将wcslen(say)调用UB。你打算写sizeof(say)/sizeof(wchar_t)

最重要的是,单位sizeof(buff)大小char但是数组有wchar_t单位。这样的代码是错误的。

您想要这样的东西:

wchar_t buff[] = L"unable to start because %ls cannot be found.";
wchar_t say[MAX_PATH + sizeof(buff)/sizeof(wchar_t) - 3];
swprintf(say, sizeof(say)/sizeof(wchar_t), buff, filename);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改按钮WIN32上的文本颜色

来自分类Dev

win32列表视图缩写文本

来自分类Dev

使用JNA从Win32 ListView检索项目文本

来自分类Dev

Win32滚动条剪辑文本

来自分类Dev

如何使屏幕阅读器阅读WPF消息的方式类似于阅读Win32 MessageBox?

来自分类Dev

C ++如何使用Win32 API通过线程从文本框中获取文本

来自分类Dev

使用C ++ Win32 GUI在窗口中显示文本

来自分类Dev

win32 GUI在窗口中显示char数组变量中的文本

来自分类Dev

Win32 API:如何在编辑控件中更改部分文本的颜色

来自分类Dev

如何使用WIN32 API for C ++更改文本的颜色和大小?

来自分类Dev

使用自定义绘图在Win32 API中设置按钮文本颜色

来自分类Dev

如何在不显示文本的情况下分配Win32 EDIT控件的窗口名称?

来自分类Dev

如何刷新图像显示白色保持相同的文本Win32?

来自分类Dev

Win32 API:如何在编辑控件中更改部分文本的颜色

来自分类Dev

使用Win32 C ++和钩子从应用程序中的按钮获取文本

来自分类Dev

Win32:使用cchTextMax在树形视图中设置文本长度

来自分类Dev

在 Win32 API ListView 中添加带换行符的文本

来自分类Dev

EditText切断文本

来自分类Dev

EditText切断文本

来自分类Dev

Win32的Cortana

来自分类Dev

Win32线程

来自分类Dev

win32 ExportAsFixedFormat

来自分类Dev

我的Visual C ++ Win32中有一个无法关闭的MessageBox!到底是怎么回事?

来自分类Dev

如何在Win32上的WS_EX_CLIENTEDGE“编辑”文本字段上断开文本行

来自分类Dev

使用Perl和Win32 :: OLE,如何将Word文档中的编号列表转换为纯文本?

来自分类Dev

Win32 API GetMenuItemInfo仅返回项目文本的第一个字符

来自分类Dev

如何在编辑框中显示/添加文件路径(或任何文本)?(C ++ Win32 API)

来自分类Dev

Win32 mkdir与_mkdir

来自分类Dev

Python Win32:错误

Related 相关文章

  1. 1

    更改按钮WIN32上的文本颜色

  2. 2

    win32列表视图缩写文本

  3. 3

    使用JNA从Win32 ListView检索项目文本

  4. 4

    Win32滚动条剪辑文本

  5. 5

    如何使屏幕阅读器阅读WPF消息的方式类似于阅读Win32 MessageBox?

  6. 6

    C ++如何使用Win32 API通过线程从文本框中获取文本

  7. 7

    使用C ++ Win32 GUI在窗口中显示文本

  8. 8

    win32 GUI在窗口中显示char数组变量中的文本

  9. 9

    Win32 API:如何在编辑控件中更改部分文本的颜色

  10. 10

    如何使用WIN32 API for C ++更改文本的颜色和大小?

  11. 11

    使用自定义绘图在Win32 API中设置按钮文本颜色

  12. 12

    如何在不显示文本的情况下分配Win32 EDIT控件的窗口名称?

  13. 13

    如何刷新图像显示白色保持相同的文本Win32?

  14. 14

    Win32 API:如何在编辑控件中更改部分文本的颜色

  15. 15

    使用Win32 C ++和钩子从应用程序中的按钮获取文本

  16. 16

    Win32:使用cchTextMax在树形视图中设置文本长度

  17. 17

    在 Win32 API ListView 中添加带换行符的文本

  18. 18

    EditText切断文本

  19. 19

    EditText切断文本

  20. 20

    Win32的Cortana

  21. 21

    Win32线程

  22. 22

    win32 ExportAsFixedFormat

  23. 23

    我的Visual C ++ Win32中有一个无法关闭的MessageBox!到底是怎么回事?

  24. 24

    如何在Win32上的WS_EX_CLIENTEDGE“编辑”文本字段上断开文本行

  25. 25

    使用Perl和Win32 :: OLE,如何将Word文档中的编号列表转换为纯文本?

  26. 26

    Win32 API GetMenuItemInfo仅返回项目文本的第一个字符

  27. 27

    如何在编辑框中显示/添加文件路径(或任何文本)?(C ++ Win32 API)

  28. 28

    Win32 mkdir与_mkdir

  29. 29

    Python Win32:错误

热门标签

归档