2014-12-03 79 views
-2

我搞亂了winapi中的一些東西,我試圖讓光標位置爲GetCursorPos(POINT),並將xy存儲在一個列表中。我有的名單是:C++ winapi長到標準雙倍

double cursor[2]; 

所以你可能已經看到我需要什麼。 POINT'sxy的值是winapi LONGS。我可以投EM到std long容易只是

POINT cPos; 
(long) cPos.x; 

,但我不能將它轉換爲雙。我需要它是雙格式的,因爲我要應用它的數學,以便一切正常。

基本上我所得到的鑄造時,它只是給我0

任何人都可以幫我嗎?

+0

當你試圖將它強制轉換爲雙精度時會發生什麼? – 2014-12-03 15:52:47

+0

'cursor [0] =(double)cPos.x;' - 編譯時出錯或不起作用?你看過GetCursorPos()之後的值嗎? – i486 2014-12-03 15:55:40

+0

「我不能把它變成雙倍」 - 爲什麼不呢?出了什麼問題? – 2014-12-03 15:56:00

回答

0

你不需要從LONG投到double。你可以簡單地寫:

cursor[0] = cPos.x; 
cursor[1] = cPos.y; 
+0

好吧,這實際上工作。這有點奇怪。非常感謝! – 2014-12-03 16:09:42

+0

'(長)cPos.x'也可以,儘管不必要。如果我們看到原始代碼,我想我們可以解釋這個奇怪的問題。也就是說,寫這個的正確方法是根據我的答案。 – 2014-12-03 16:11:10

0

沒有必要做中間演員。即在您的數學表達式中使用(double)cPos.x和(double)cPos.y,而不使用此cursor[2]數組。

+0

當我這樣做只是給了我0 – 2014-12-03 15:58:27

+0

你調試過的cPos.x的整數值是什麼?表達式中的其他操作數可能是0結果的原因。 – i486 2014-12-03 15:59:34

+0

我簡直就是打印出cPos.x的值。沒有投它打印364.與它,它打印0 – 2014-12-03 16:04:10