Точка получается не в центре - VB

Узнай цену своей работы

Формулировка задачи:

У меня такая проблема, есть код
Листинг программы
  1. Option Explicit
  2. Private Declare Function GetDesktopWindow Lib "User32" () As Long
  3. Private Declare Function GetWindowDC Lib "User32" (ByVal hwnd As Long) As Long
  4. Private Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  5. Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
  6. Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
  7. Private Declare Function ReleaseDC Lib "User32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
  8. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  9. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  10. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Long) As Integer
  11. Private Const PS_SOLID = 0
  12. Private Const PS_INSIDEFRAME = 6
  13. Const VK_Q = &H51
  14. Private Sub Command1_Click()
  15. Timer1.Interval = 1
  16. End Sub
  17. Private Sub Command2_Click()
  18. Timer1.Interval = 0
  19. End Sub
  20. Private Sub Command3_Click()
  21. End
  22. End Sub
  23.  
  24. Private Sub Form_Load()
  25. 'If GetAsyncKeyState(VK_Q) Then Command1 = True
  26. End Sub
  27. Private Sub Timer1_Timer()
  28. Dim DC As Long, hwnd As Long
  29. Dim oBr As Long, Br As Long, oPn As Long, Pn As Long
  30. Dim Color As Long ' Цвет
  31. Dim X As Long, Y As Long, pWidth As Long ' Координаты толщина
  32. Dim eX As Long, eY As Long
  33. Color = vbRed
  34. hwnd = GetDesktopWindow
  35. DC = GetWindowDC(hwnd)
  36. Br = CreateSolidBrush(Color)
  37. Pn = CreatePen(PS_SOLID Or PS_INSIDEFRAME, 1, Color)
  38. oBr = SelectObject(DC, Br)
  39. oPn = SelectObject(DC, Pn)
  40. ' Задаем координаты и толщину
  41. X = (Screen.Width / Screen.TwipsPerPixelX) / 2
  42. Y = (Screen.Height / Screen.TwipsPerPixelY) / 2
  43. pWidth = 4
  44. eX = X - (pWidth / 2)
  45. eY = Y - (pWidth / 2)
  46. Ellipse DC, eX, eY, eX + pWidth, eY + pWidth
  47. SelectObject DC, oPn
  48. SelectObject DC, oBr
  49. DeleteObject Br
  50. DeleteObject Pn
  51. ReleaseDC hwnd, DC
  52. End Sub
  53. Private Sub Timer2_Timer()
  54. If GetAsyncKeyState(VK_Q) Then Command1 = True
  55. End Sub
Но когда я запускаю игру, и после этого программу, у меня получается, что точка смещается....... Что можно сделать?

Решение задачи: «Точка получается не в центре»

textual
Листинг программы
  1. X = (Screen.Width / Screen.TwipsPerPixelX) / 2
  2. Y = (Screen.Height / Screen.TwipsPerPixelY) / 2

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы