将LOWORD(wParam)转换为常量wchar_t*

Convert LOWORD(wParam) to const wchar_t*

本文关键字:wchar 常量 转换 LOWORD wParam      更新时间:2023-10-16

我开发计算器应用程序作为家庭作业,并检查按下的数字如下:

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函数。

您只需要使用本地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