我有以下代码:
wchar_t recordsText[64] = L"Records: ";
std::wstringstream ss2;
ss2 << c;
wcsncat_s(recordsText, ss2.str().c_str(), sizeof(ss2.str().c_str()));
((CButton*)GetDlgItem(IDC_RECORDS))->SetWindowTextW(recordsText);
它工作得很好,但我想把它放到一个函数中......我想没有什么比这更容易了。但我得到一个愚蠢的错误。
我的功能是这个:
BOOL refreshTextField(CButton* item, wchar_t* label, long long* number){
std::wstringstream ss;
ss << number;
wcsncat_s(label, ss.str().c_str(), sizeof(ss.str().c_str()));
item->SetWindowTextW(label);
return true;
}
但是 wcsncat_s 不喜欢我的“标签”,因为它是一个数组,并且函数的调用方式如下:
refreshTextField(((CButton*)GetDlgItem(IDC_SENT_PACKAGES)), L"Packages send: ", &sentPackages);
(顺便说一句:我知道它不应该被转换为 CButton 因为它是一个编辑字段 :-D ,但目前这并不重要。)
问题是 wchar_t 数组,我不知道如何正确地将它放入我的函数中。希望你能给我一个退出的答案。
我已经试过了:
BOOL refreshTextField(CButton* item, wchar_t** label, long long* number){
//...
wcsncat_s(*label, sizeof(*label), ss.str().c_str(), sizeof(ss.str().c_str()));
//....
}
和这个:
BOOL refreshTextField(CButton* item, wchar_t* label, long long* number){
//...
wcsncat_s(label, sizeof(*label), ss.str().c_str(), sizeof(ss.str().c_str()));
//....
}
编辑:
所以解决方案是这样的:
称呼:
refreshTextField(mySelectedUIItem, L"testlabel", sizeof(L"testlabel"), 4);
功能:
BOOL refreshTextField(CButton* item, wchar_t* label, size_t lableSize, long long* number)
{
std::wstringstream ss;
ss << number;
wcsncat_s(label, labelSize, ss.str().c_str(), ss.str().length());
//...
}