Win32 中的数组<byte>^
Array<byte>^ in Win32
我有一个为 Metro 风格编写的 DirectX 11.1 程序,我想将它转换为 Win32 应用程序。我使用了很多 WinRT 库,其中大部分都是为 HWND 创建的。但我还有一个问题:
在 Metro Style 应用程序上,对于使用 HLSL 文件,这是我使用的:
inline Platform::Array<byte>^ ReadFile(Platform::String^ path)
{
using namespace Platform;
Array<byte>^ bytes = nullptr;
FILE* f = nullptr;
_wfopen_s(&f, path->Data(), L"rb");
if (f == nullptr)
{
throw ref new Exception(0, "Could not open file on following path : " + path);
}
else
{
fseek(f, 0, SEEK_END);
auto pos = ftell(f);
bytes = ref new Array<byte>(pos);
fseek(f, 0, SEEK_SET);
// read data into the prepared buffer
if (pos > 0)
{
fread(&bytes[0], 1, pos, f);
}
// close the file
fclose(f);
}
return bytes;
}
但我不知道 Array Array<byte>^
对 Win32 (hwnd) 样式应用程序的等价物。
非常感谢任何指南
我们可以使用 std::vector<unsigned char>
代替 :
std::vector<unsigned char> ReadFile(std::wstring path)
{
std::vector<unsigned char> bytes;
...
_wfopen_s(&f, path.c_str(), L"rb");
...
bytes.resize(pos);
...
fread(bytes.data(), 1, pos, f);
...
return bytes;
}
我有一个为 Metro 风格编写的 DirectX 11.1 程序,我想将它转换为 Win32 应用程序。我使用了很多 WinRT 库,其中大部分都是为 HWND 创建的。但我还有一个问题:
在 Metro Style 应用程序上,对于使用 HLSL 文件,这是我使用的:
inline Platform::Array<byte>^ ReadFile(Platform::String^ path)
{
using namespace Platform;
Array<byte>^ bytes = nullptr;
FILE* f = nullptr;
_wfopen_s(&f, path->Data(), L"rb");
if (f == nullptr)
{
throw ref new Exception(0, "Could not open file on following path : " + path);
}
else
{
fseek(f, 0, SEEK_END);
auto pos = ftell(f);
bytes = ref new Array<byte>(pos);
fseek(f, 0, SEEK_SET);
// read data into the prepared buffer
if (pos > 0)
{
fread(&bytes[0], 1, pos, f);
}
// close the file
fclose(f);
}
return bytes;
}
但我不知道 Array Array<byte>^
对 Win32 (hwnd) 样式应用程序的等价物。
非常感谢任何指南
我们可以使用 std::vector<unsigned char>
代替 :
std::vector<unsigned char> ReadFile(std::wstring path)
{
std::vector<unsigned char> bytes;
...
_wfopen_s(&f, path.c_str(), L"rb");
...
bytes.resize(pos);
...
fread(bytes.data(), 1, pos, f);
...
return bytes;
}