私は次のコードを持っていました:
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());
//...
}