Runtime Error 5 при вызове BltFast (DirectDraw) - VB

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

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

Добрый день. Выдает ошибку "Invalid procedure call or argument" на строке
Листинг программы
  1. ddsBack.BltFast CartToIsoX(dx, dy, W), CartToIsoY(dx, dy, H), Tiles(TileNo).Surface, Tiles(TileNo).TRect, DDBLTFAST_SRCCOLORKEY
Не могу догадаться, в чем дело, как будто бы все правильно. Наверняка что-нибудь тривиальное. Вот код класса:
Листинг программы
  1. Option Explicit
  2. 'размер карты в тайлах
  3. Private mvarWidth As Integer, mvarHeight As Integer
  4. 'структура тайла. поверхность, ректангл
  5. Private Type Tile
  6. Surface As DirectDrawSurface7
  7. TRect As RECT
  8. End Type
  9. 'габариты тайла
  10. Private mvarTileWidth As Integer, mvarTileHeight As Integer
  11. 'массив используемых на карте тайлов
  12. Private Tiles() As Tile
  13. 'двухмерный массив карты тайлов
  14. Private TileMap() As Integer
  15. 'количество используемых типов тайлов
  16. Private mvarTilesQuantity As Integer
  17. Public Property Let Height(ByVal vData As Integer)
  18. mvarHeight = vData
  19. End Property
  20. Public Property Get Height() As Integer
  21. Height = mvarHeight
  22. End Property
  23. Public Property Let Width(ByVal vData As Integer)
  24. mvarWidth = vData
  25. End Property
  26. Public Property Get Width() As Integer
  27. Width = mvarWidth
  28. End Property
  29.  
  30. Private Sub LoadTiles(MapFile As String)
  31. SetConfigurationFile MapFile
  32. SetSection "Tiles"
  33. mvarTilesQuantity = Int(LoadValue("Quantity"))
  34. mvarTileWidth = Int(LoadValue("Width"))
  35. mvarTileHeight = Int(LoadValue("Heigh"))
  36. Dim i As Integer, j As Integer
  37. ReDim Tiles(mvarTilesQuantity)
  38. For i = 0 To mvarTilesQuantity - 1
  39. Set Tiles(i).Surface = CreateDDSFromFile(App.Path + LoadValue("Tile" + CStr(i + 1)))
  40. SetRect Tiles(i).TRect, 0, 0, mvarTileWidth, mvarTileHeight
  41. Next i
  42. ReDim TileMap(mvarWidth, mvarHeight)
  43. Dim S As String
  44. SetSection "TileMap"
  45. 'i - y; j - x
  46. For i = 0 To mvarHeight - 1
  47. S = LoadValue("Y" + CStr(i + 1))
  48. For j = 0 To mvarWidth - 1
  49. TileMap(j, i) = Int(Left(S, 1))
  50. S = Right(S, mvarWidth - j - 1)
  51. Next j
  52. Next i
  53. End Sub
  54. Public Sub LoadMap(MapFile As String)
  55. SetConfigurationFile MapFile
  56. SetSection "Size"
  57. mvarWidth = Int(LoadValue("Width"))
  58. mvarHeight = Int(LoadValue("Height"))
  59. LoadTiles (MapFile)
  60. End Sub
  61. Public Sub DrawMap()
  62. DrawTiles
  63. End Sub
  64. Private Sub DrawTiles()
  65. Dim i As Integer, j As Integer
  66. For i = 0 To mvarWidth - 1
  67. For j = 0 To mvarWidth - 1
  68. 'DrawTile i, j, Tiles(TileNo).Surface, Tiles(TileNo).TRect, mvarTileWidth, mvarTileHeight
  69. DrawTile i, j
  70. Next j
  71. Next i
  72. End Sub
  73. Private Sub DrawTile(X As Integer, Y As Integer)
  74. Dim TileNo As Integer
  75. TileNo = TileMap(X, Y)
  76. Dim dx As Long, dy As Long, W As Long, H As Long
  77. dx = CLng(X)
  78. dy = CLng(Y)
  79. W = CLng(mvarTileWidth)
  80. H = CLng(mvarTileHeight)
  81. ddsBack.BltFast CartToIsoX(dx, dy, W), CartToIsoY(dx, dy, H), Tiles(TileNo).Surface, Tiles(TileNo).TRect, DDBLTFAST_SRCCOLORKEY
  82. End Sub

Решение задачи: «Runtime Error 5 при вызове BltFast (DirectDraw)»

textual
Листинг программы
  1. ?App.Path + LoadValue("Tile" + CStr(i + 1))
  2. E:\_Workspace\game\data\tiles\tile1.gif

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


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

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

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

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

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

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