问题标签 [tchar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
636 浏览

winapi - 为什么是 TTN_NEEDTEXTW 而不是 TTN_NEEDTEXTA?

这是一个我从未想过的老问题 - 想知道这里是否有人碰巧知道你脑海中的答案......

在我们软件的某些部分 (MFC/Win32/MBCS) 我的代码只会收到

TTN_NEEDTEXTW

在我们软件的其他部分,我会收到 MBCS 正确消息

TTN_NEEDTEXTA

对我来说完全是无稽之谈。

我知道我们的软件可以编译为 Unicode 或不编译(我们设置为使用多字节字符集)。我有一个模糊的回忆,每个窗口都可以构造成 Unicode 或不构造,虽然这是一个模糊的记忆,没有什么具体的。

有谁知道为什么我们会在代码中的某些地方得到宽版本消息,尽管被编译为多字节?

笔记:

  • 我们绝对不会发送此消息 - 大概是 ToolTip 控件。
  • 我们肯定只在某些地方接收到 (W) 消息,而在其他地方肯定只接收到 (A) 消息。
  • 我确定所有编译模块都使用 MBCS,而不是 Unicode,并且构建目标都指定 MBCS 而不是 Unicode。
  • 这似乎只发生在 CMainFrame 托管的窗口和控件上。即主框架之外的窗口可以使用窄版本(比如在对话框中)。
0 投票
3 回答
2547 浏览

c++ - `cout << argv[0]` 返回十六进制值?

可能重复:
无法在 VC++ 中使用 std::cout 打印出 argv[] 值

代码:

如您所见,一个标准的 Win32 控制台应用程序。
令人困惑的部分是, 的值argv[0]输出为00035B88
这是(AFAIK)在没有命令行选项的情况下运行的,因此argv[]应该还没有值。(或者这是问题所在?)

但是,argv[]被声明为指针 ( _TCHAR*),我听说它cout会打印指针的地址。是这样吗?如果是这样,我如何打印/使用 的值argv

0 投票
2 回答
16868 浏览

c++ - 比较具有相同值的两个 TCHAR 的结果为 false

我正在尝试检查我的应用程序路径,如果它不是指定路径,则移动它。我觉得我的代码很可靠,但它不能正常工作。

即使文件位于新路径中,它仍然会导致 pCheck != xPath

我从来没有收到“新位置”消息框。当显示前两个消息框时,路径是相等的......

0 投票
2 回答
851 浏览

c++ - 如何在 Visual Studio 中禁用微软对 tchar.h 的装饰?

默认情况下,Microsoft 的 Visual Studio 使用<tchar.h>并定义mainint _tmain(int argc, _TCHAR* argv[]). 这可能很有用,但并非总是如此。

如何在默认的新项目中禁用此功能?

更新

我想用简单main的s创建空项目...

0 投票
1 回答
88 浏览

windows - 有没有办法在宏中“有条件地”使用 _T/TEXT?

这个问题特定于 Visual C++(您可以假设 Visual C++ 2005 及更高版本)。

我想为来自 unixoid 系统(特别是 FreeBSD)的程序创建粘合代码,以便在 Win32 上构建和运行,而对原始.c文件的更改最少。现在,大部分内容都很简单,但现在我遇到了一个问题。我正在使用tchar.h标头和TCHAR/ _TCHAR,并且需要在原始代码中为erranderrx调用创建粘合代码(请参阅 参考资料)。err(3)请耐心等待,即使您不同意tchar.h仍应编写代码 using。

调用errerrx大致采取两种形式,这就是问题发生的地方:

后者将输出存储在errno(使用strerror)中的错误。

现在,问题是,有没有办法编写一个可以同时NULL接受字符串文字的通用宏?我不必(也不会)关心作为第二个参数传递的变量NULL,只有和文字字符串。

当然,我天真的初始方法没有考虑fmt传递为NULL(使用可变参数宏!):

现在我不知道如何使用宏来实现这一点,因为它需要一种我目前无法想象的编译时和运行时条件的混合。因此,我正在寻找一个权威的答案,无论这是否可以想象。

我现在采用的方法 - 缺乏更好的方法 - 是编写一个接受的包装函数,就像errand errx, a ( const)char *然后将其转换为wchar_t *if 编译时_UNICODE定义。这应该可以工作,假设调用者在后面传递了一个_TCHAR*变量参数的字符串fmt(在我的上下文中这是一个理智的假设)。否则,我还必须转换%s%hs格式字符串内部,以处理 MS 所称的“ANSI”字符串。

0 投票
1 回答
2327 浏览

winapi - _T("") 宏,用于非 MFC、Win32 项目

我正在创建一个 Win32 项目,并且我正在尝试在TCHAR任何地方使用。但由于它是一个非 MFC 项目,我没有_T定义。

我如何在我的项目中获得它?

0 投票
1 回答
1964 浏览

c - 尝试制作 tchar 时从非宽字符串初始化的 int-array

我正在尝试像这样在这里创建一个 tchar 数组: TCHAR c_wText[100] = _T("string here");

但是在编译时我收到一条错误消息:int-array initialized from non-wide string

我错过了什么?

0 投票
1 回答
3183 浏览

c++ - 将 wstring 转换为 TCHAR 的问题

我对编程很陌生,我正在尝试编写一个程序,用户输入一个日期,然后将该日期添加到文件目录名称中,然后搜索该文件目录。

下面是我正在使用的内容。我有很多功能可以做到这一点。我在网上搜索并尝试用几种不同的方式进行转换,但我只是不理解它......所以我离开了(我知道的是不正确的)a静态转换。

也许我只是没有做正确的转换......基本上这会将它扔回使用 WINAPI 处理程序的函数。我能否让它发挥作用是一个完全不同的故事......在此先感谢您的帮助!

0 投票
1 回答
355 浏览

c++ - C++ 到 vb.net TCHAR 数组使用转换

我不是 c++ 程序员,我需要将此 c++ 代码转换为 vb.net:

我不太明白,我只知道这是从 Int 到 TCHAR 数组的转换。

我想知道如果

会工作还是我会错过什么?

任何帮助都将不胜感激!谢谢 :)

0 投票
1 回答
215 浏览

c - 检测 Visual C++ 中存在哪个版本的 vswprintf()

我有一个项目,它使用_vscwprintf()/ vswprintf()(通过_vsctprintf()/ _vstprintf())在malloc()ed 缓冲区中创建任意长度的格式化字符串。

当我在 Visual C++ 2008 下启动项目时,_vstprintf()取了三个参数:

但是在离开我的项目一段时间后,当我使用 Visual C++ 2012 回到它时,我发现 MS 已将函数更改为采用四个参数:

我希望我的代码可以在 Visual C++ 2008、2010 和 2012 下构建(它也可以移植到 Linux 和 Solaris)。

是否有一些符号可以检查,#ifdef以便我可以使用函数的 3 参数或 4 参数版本正确构建?

我假设有一个符号告诉我我正在编译哪个版本的 Visual C++,但这是正确的方法吗?例如,较新的编译器是否有可能使用较旧的 C 库或运行时构建,反之亦然?

我的代码实际上是使用 C 而不是 C++,如果这有所不同的话。