我开发计算器应用程序作为作业,我检查按下哪个数字:
if (LOWORD(wParam) == buttonDigit0) {
writeToOperand(L"0");
}
else if (LOWORD(wParam) == buttonDigit1) {
writeToOperand(L"1");
}
else if (LOWORD(wParam) == buttonDigit2) {
writeToOperand(L"2");
}
// ...
writeToOperand
为void writeToOperand(const wchar_t* digit);
我想这样缩小它:
if (LOWORD(wParam) >= 100 && LOWORD(wParam) <= 109) {
writeToOperand(LOWORD(wParam));
}
其中100
是按钮#define buttonDigit0 100
的ID,109
是#define buttonDigit9 109
。
但我无法关注如何将LOWORD(wParam)
转换为const wchar_t*
writeToOperand
功能。
答案 0 :(得分:2)
您只需使用本地wchar_t
数组变量来存储计算数字:
wchar_t digit[2] = {0}; // reserve place for terminating null...
if (LOWORD(wParam) >= 100 && LOWORD(wParam) <= 109) {
digit[0] = static_cast<wchar_t>('0' + LOWORD(wParam) - 100); // explicit cast to avoid a warning
writeToOperand(digit);
}
但是你必须计算实际值并将其存储到本地数组中才能将地址传递给writeToOperand