如何将C Savefilediolog信息转换为LPCTSTR



我一直在使用C 应用程序。我想出了如何从savefiledialog中获取目录名称,并将其与文本相结合以将一堆文件保存到同一文件文件夹,但是当我尝试将新的fileWithPathname转换为lpctstr时,代码最终未分配。

我在这个网站上搜索了,似乎找不到一个非常清楚的示例。如果有人可以将我引导到一个清楚的链接,或者告诉我我在做什么错,那将是很棒的。; - )

            FileInfo^ fi = gcnew FileInfo(saveFileDialog1->FileName);
            String^ fileNameWithPath = gcnew String(fi->DirectoryName) + "newName.txt";
            //LPCWSTR lfileNameWithPath = (LPCWSTR)(pfileNameWithPath[0]);  // get temporary LPSTR // fails to get initialized
            //LPCTSTR lfileNameWithPath = (LPCTSTR)(Marshal::StringToHGlobalAnsi(fileNameWithPath)).ToPointer(); // data returned like Chinese characters. epic fail

有几种不同的方法可以进行转换。您可以使用:

#include <msclr/marshal.h>
using namespace msclr::interop;
using namespace System;
String^ fileNameWithPath = gcnew String(fi->DirectoryName) + "newName.txt";
marshal_context context;
LPCTSTR lfileNameWithPath = context.marshal_as<LPCTSTR>(fileNameWithPath);

更多这里

最新更新