我有一个期待LPCTSTR的课程。

当我打电话时:
 新的CFileImageLoader(_T(“ Splash02.png”))
要么
 新的CFileImageLoader(“ Splash02.png”)

两者都不起作用。
为什么呢
我是cpp的新手...
谢谢
乔纳森(d。

最佳答案

此问题是C ++问题和Windows特定问题的组合。

C ++定义了两种类型的字符串,常规字符串和宽字符串。常规字符串如下所示:

const char *str = "regular string";


而宽字符串看起来像:

const wchar_t *wstr = L"wide string";


仅使用标准C ++,您就必须决定何时编写库是使用常规字符串还是宽字符串。

Windows已定义了一个伪类,称为tchar。使用tchar,您可以编写如下内容:

LPCTSTR tstr = _T("regular or wide string");


这实际上是常规(char *)还是宽(wchar_t *)字符串取决于您是否为Unicode编译代码。

由于该函数被指定为采用LPCTSTR,因此需要使用适当的类型来调用该函数以进行编译。

如果您知道将仅在支持或不支持Unicode的情况下进行构建,则可以跳过所有TCHAR内容并分别直接使用wchar_t或char。

由于CFileImageLoader("Splash02.png")不起作用,因此必须在启用Unicode支持的情况下进行编译。您可以将其更改为CFileImageLoader(L"Splash02.png")并始终使用Unicode进行提交,也可以将其更改为CFileImageLoader(_T("Splash02.png"))并由宏魔术来完成。

关于c++ - CFileImageLoader(LPCTSTR lpszFileName);,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/415854/

10-11 20:22