我正試圖從我的Strin Table中加載一個字符串來處理我正在處理的DLL文件。這是應該加載字符串到std::wstring
函數(因爲我的項目使用Unicode字符集)。LoadString()方法在C++中不起作用
void ErrorHandler::load_error_string()
{
m_hInst = AfxGetInstanceHandle();
wchar_t buffer[1024] = { '\0' };
std::size_t string_length = LoadStringW(this->m_hInst, this->m_error_id, buffer, 1024);
this->m_raw_content = std::wstring(buffer, string_length);
CStringW output;
output.Format(L"%d", m_raw_content.length());
AfxMessageBox(output);
}
我創建了最後三行診斷方法。 AfxMessageBox()
的輸出是0
。
我在哪裏錯了?
請記住,'string_length'可以表示'std :: wstring'的大小,而'std :: wstring'具有'wchar_t',對於實例2字節可以是'wchar_t'。所以有一個機會,你必須做一個'字節轉換'...像m_raw_content.length()* sizeof(wchar_t),當然取決於你的'output.Format'實現。 –
'output'變量僅用於診斷。我已經寫了,因爲這種方法不起作用。 – Victor
字符串資源是否嵌入在DLL中? – benjymous