将LOWORD(wParam)转换为const wchar_t *

时间:2016-03-23 08:35:54

标签: c++ winapi visual-c++

我开发计算器应用程序作为作业,我检查按下哪个数字:

if (LOWORD(wParam) == buttonDigit0) {
    writeToOperand(L"0");
}
else if (LOWORD(wParam) == buttonDigit1) {
    writeToOperand(L"1");
}
else if (LOWORD(wParam) == buttonDigit2) {
    writeToOperand(L"2");
}
// ...

writeToOperandvoid 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功能。

1 个答案:

答案 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