2016-03-23 34 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"); 
} 
// ... 

哪裏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函數。

+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

相關問題