2014-12-03 3 views
-2

Я возился с некоторыми вещами в winapi, и я пытаюсь получить позицию курсора с GetCursorPos(POINT) и сохранить x и y в списке. Список, который у меня есть, составляет:C++ winapi LONG to std double

double cursor[2]; 

Таким образом, вы уже можете видеть, что мне нужно. POINT'sx и y значения: winapi LONGS. Я могу бросить им, чтобы std long легко только с

POINT cPos; 
(long) cPos.x; 

, но я не могу бросить его в два раза. Мне нужно, чтобы он был в двойном формате из-за математики, которую я собираюсь применить к ней, чтобы все было в порядке.

В основном то, что я получаю, когда литье это просто дает мне 0

Может кто-нибудь помочь мне?

+0

Что происходит, когда вы пытаетесь применить его к двойному? –

+0

'cursor [0] = (double) cPos.x;' - ошибка в компиляции или не работает? Вы видели значения после GetCursorPos()? – i486

+0

«Я не могу бросить его в двойник» - почему бы и нет? Что пошло не так? –

ответ

0

Вам не нужно бросать от LONG до double. Вы можете просто написать:

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

Хорошо, это на самом деле действительно работал. Это немного странно. Большое спасибо! –

+0

'(long) cPos.x' тоже хорошо, хотя и ненужный. Я думаю, мы могли бы объяснить странность, если бы увидели исходный код. Тем не менее, правильный способ написать это по моему ответу. –

0

Нет необходимости выполнять промежуточную заливку. То есть используйте (double) cPos.x и (double) cPos.y в своем математическом выражении без этого массива cursor[2].

+0

Когда я это делаю, просто дает мне 0. –

+0

Вы отлаживали целочисленное значение cPos.x и что было? Возможно, другой аргумент в выражении является причиной 0 результата. – i486

+0

Я буквально просто распечатываю значение cPos.x. без броска он печатает 364. с ним, он печатает 0 –

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