2016-03-23 3 views
0

Я разрабатываю приложение калькулятор в качестве домашнего задания и я проверить, какая цифра будет нажата, как это:Преобразовать LOWORD (WPARAM) на константные wchar_t *

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 и 109 является #define buttonDigit9 109. Но я не понимаю, как я могу преобразовать LOWORD(wParam) в const wchar_t* для моей функции writeToOperand.

+2

'std :: to_wstring()' –

+0

LOWORD - это младшие 16 бит, как это может быть 32/64-разрядный адрес? Он должен преобразовать значение в строку –

+0

@JonathanPotter спасибо! – rel1x

ответ

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

+0

Большое вам спасибо! – rel1x

Смежные вопросы