OLE 拖放:是否使用宽字符?
OLE Drag and Drop: use wide char or not?
实施 IDropSource 需要创建并填充 DROPFILES 结构。
fWide 成员指定是否应使用宽字符串。
由于我正在将文件拖放到 Windows 文件系统中,我应该在什么时候使用宽字符?
我知道从 文件资源管理器中拖动文件 会产生 fWide==TRUE,至少在我的 Windows 10(多语言)上是这样。然而,这在其他 Windows 口味上可能有所不同。我如何确定使用哪个?
相反,我应该在什么时候实现 IDropTarget 时期望 fWide==TRUE?
宽 (Unicode) 可以保证正确存储字符串,窄字符串 ("ANSI") 则不能。
当您收到此数据时,您应该支持这两种格式。 DragQueryFileW
会为您做这件事。
当您自己手动构造此结构时,通常应使用宽字符串。
您的数据有 3 个可能的接收者:
基于 NT 的 Windows 版本(过去 20 年发布的任何版本)。本机字符串类型是宽字符串,但也支持窄字符串。
Windows 95/98/ME 使用窄字符串作为它们的原生字符串类型,不要指望大多数地方都支持宽字符串。您不太可能关心这些 Windows 版本。
Third-party 软件。不可能提前知道他们支持什么。你只需要抱最好的希望并使用宽字符串。
理想情况下,您的数据对象还包含 CFSTR_SHELLIDLIST
格式,这应该可以避免大多数字符串问题。
实施 IDropSource 需要创建并填充 DROPFILES 结构。 fWide 成员指定是否应使用宽字符串。
由于我正在将文件拖放到 Windows 文件系统中,我应该在什么时候使用宽字符? 我知道从 文件资源管理器中拖动文件 会产生 fWide==TRUE,至少在我的 Windows 10(多语言)上是这样。然而,这在其他 Windows 口味上可能有所不同。我如何确定使用哪个?
相反,我应该在什么时候实现 IDropTarget 时期望 fWide==TRUE?
宽 (Unicode) 可以保证正确存储字符串,窄字符串 ("ANSI") 则不能。
当您收到此数据时,您应该支持这两种格式。 DragQueryFileW
会为您做这件事。
当您自己手动构造此结构时,通常应使用宽字符串。
您的数据有 3 个可能的接收者:
基于 NT 的 Windows 版本(过去 20 年发布的任何版本)。本机字符串类型是宽字符串,但也支持窄字符串。
Windows 95/98/ME 使用窄字符串作为它们的原生字符串类型,不要指望大多数地方都支持宽字符串。您不太可能关心这些 Windows 版本。
Third-party 软件。不可能提前知道他们支持什么。你只需要抱最好的希望并使用宽字符串。
理想情况下,您的数据对象还包含 CFSTR_SHELLIDLIST
格式,这应该可以避免大多数字符串问题。