2014-12-03 49 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