关于将字符串传递给win32 api函数
Regarding passing strings to win32 api functions
我想知道使用string
数据类型而不是字符数组或简单的字符串是否有任何优势(仅适用于较短的字符串),例如:
TextOut(hDC, 10, 10, "Hello", sizeof("HEllO") - 1)
在实践中,这一点都不重要。
也就是说,Win32 api需要LPSTR
s或LPWSTR
s,所以任何不是"其中之一"的东西首先必须转换为适当的char*
类型,因此需要非常小的一点额外的工作。
我想说,更大的考虑是使用方便/熟悉/易于使用的数据类型。
字符串数据类型和您在上面使用的内联字符串之间的一个区别是,使用单独的命名引用(无论类型是字符串还是字符数组)可以防止更改字符串但忘记更改sizeof()内部副本的常见错误。如果新字符串的长度不同,则会产生不希望看到的结果。有一个地方可以让你同时更新两者,无论是通过const char*还是字符串数据类型,这是一个更好的做法。
const TCHAR TEXTOUT_TEXT[] = _T("Hello");
TextOut( hDC, 10, 10, TEXTOUT_TEXT, sizeof(TEXTOUT_TEXT) / sizeof(TEXTOUT_TEXT[0]) - 1 );
相关文章:
- C++win32 API创建多个类似视口的窗口
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- Win32 API 控制台光标在 WriteConsole 后不移动
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- 调用 Win32 API 函数时未定义的引用
- Visual C++ Win32 API 代码来拦截某个击键
- 消息框在WM_COMMAND内不起作用!(WIN32 API)
- 使用WIN32 API的击球平均计算器
- 在使用 c++ 的 win32 api 中,我想跟踪双击和三次单击等
- SDL2 + Win32 API 菜单栏单击事件不起作用
- WM_PAINT和鼠标事件.MFC/WIN32 API.
- 我可以在没有C++的情况下学习 Win32 API(仅使用 C)吗?
- 如何检查 win32 exe 文件是否已运行?(使用 win32 API 代码)
- 在 Win32 API 中使用多线程
- 如何使用 Win32 API 从 Excel VBA 中的非"Single-Threaded Apartment"线程调用 InternetGetProxyInfo
- 引发访问冲突的 Win32 API 调用
- C Win32 API在按钮区域内通知鼠标
- 删除并清除组合框 Win32 API 中的所有项目
- 如何使用Win32 API阻止来自透明窗口的鼠标输入?
- 如何将选项卡添加到我的选项卡控件(WIN32 API C++ GUI)