Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Сглаживание и курсоры Добавлено: 13.04.06 07:20  

Автор вопроса:  ChemistN1 | Web-сайт: snurs.narod.ru
У меня тут скопилось 3 вопроса:
1) Какой командой задается сглаживание текстур в DirectX8? В DirectX7 это .SetTextureQuality, в 8ом же как ни искал, не нашел.
2) Как сделать нормальные полноценные курсоры. Если файл .cur, то он становится черно-белым, если ico - то точка нажимания (hot spot) у нее посередине.
3) :( Почему когда я нажимаю "Поиск" в форуме, у меня либо дисконнект, либо ошибка загрузки? Ничего найти невозможно :[.

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #1
Добавлено: 14.04.06 22:42
1. ?

Each type of texture filtering has advantages and disadvantages. For instance, linear texture filtering can produce jagged edges or a chunky appearance in the final image. However, it is a computationally low-overhead method of texture filtering. Filtering with mipmaps usually produces the best results, especially when combined with anisotropic filtering. However, it requires the most memory of the techniques that Direct3D supports.

Microsoft® Visual Basic® applications should set the current texture filtering method by calling the Direct3DDevice8.SetTextureStageState method. Set the value of the first parameter to the integer index number (0-7) of the texture for which you are selecting a texture filtering method. Pass CONST_D3DTEXTUREMAGFILTER, CONST_D3DTEXTUREMINFILTER, or CONST_D3DTEXTUREMIPFILTER for the second parameter to set the magnification, minification, or mipmapping filter. Set the third parameter to the value from
CONST_D3DTEXTUREFILTERTYPE to set the magnification, minification, or mipmapping filter.

 
' Setup our texture. Using textures introduces the texture stage states,
    ' which govern how textures get blended together (in the case of multiple
    ' textures) and lighting information. In this case, we are modulating
    ' (blending) our texture with the diffuse color of the vertices.
    g_D3DDevice.SetTexture 0, g_Texture
    g_D3DDevice.SetTextureStageState 0, D3DTSS_COLOROP, D3DTOP_MODULATE
    g_D3DDevice.SetTextureStageState 0, D3DTSS_COLORARG1, D3DTA_TEXTURE
    g_D3DDevice.SetTextureStageState 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE
    g_D3DDevice.SetTextureStageState 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE


2. Фиг знает, у меня таких проблем нет.

3. Сайт модернизируется, не все еше работает.

Ответить

Номер ответа: 2
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #2 Добавлено: 14.04.06 23:04
1. Понятия не имею.
2. Если нужно нарисовать обычного типа цветную стрелку, только с дизайном, то я решал эту проблему так: я рисовал айкон 16х16 а потом втыкал его в нижний правый угол стандартного размера 32х32, получалось, что центральный хот-спот попадает как-раз на конец стрелки... Но вообще хорошо, если кто расскажет решение этой проблемы...
3. У самого ошибки - терпеть и больше ничего...

Ответить

Номер ответа: 3
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #3
Добавлено: 14.04.06 23:45
1. Ну я же написал:))

Если вольно перевести.

Каждый тип фильтрации текстуры имеет преимущества и недостатки. Например, линейная фильтрация текстуры может привести к зубчатым граням...

Фильтрация с mipmaps обычно дает лучшие результаты, особенно когда объединена с анизотропной фильтрацией. Однако, это требует больше памяти ...


Режимы фильтрации текстуры устанавливаются вызывая метод Direct3DDevice8. SetTextureStageStat. Установите значение первого параметра от 0 до 7 с параметром CONST_D3DTEXTUREMAGFILTER , CONST_D3DTEXTUREMINFILTER, или CONST_D3DTEXTUREMIPFILTER для второго параметра,
чтобы установить улучшение качества, minification, или фильтр mipmapping.

Установите третий параметр в значение CONST_D3DTEXTUREFILTERTYPE, чтобы установить улучшение качества, minification, или фильтр mipmapping.

Ответить

Номер ответа: 4
Автор ответа:
 ChemistN1



Вопросов: 7
Ответов: 43
 Web-сайт: snurs.narod.ru
 Профиль | | #4
Добавлено: 16.04.06 07:52
To Vito:
Ладно, буду разбираться, но по-моему, тут все команды для мультитекстурированных объектов, а мипмапинг мне вообще не нужен - у меня все обьекты на известной фиксированной дальности находятся, поэтому в ухудшении текстур с расстоянием не нуждаются (на них уже оптимальная текстура натянута).

To Nj:
Сам так раньше делал, проблема в том, что 16х16 - это не курсор, а издевательство - его практически не видно. По-моему, единственное рациональное решение проблемы - делать собственный курсор (то бишь перехватывать, итд), но это геморрой страшный, делать ужас как не хочется.

А вообще эта проблема с курсором настолько меня задолбала - надоело каждый раз придумывать способы ее решения - то курсор черно-белым сделаешь, внутри черным, по краям - инвертированным, довольно красиво получается, то ico нарисуешь в виде прицела - чтоб хотспот был посередине, то ico 20x20 в нижнем правом углу. По-моему, это одно из самых слабых мест бейсика - мелочь, а бесит страшно.

Ответить

Номер ответа: 5
Автор ответа:
 ChemistN1



Вопросов: 7
Ответов: 43
 Web-сайт: snurs.narod.ru
 Профиль | | #5
Добавлено: 16.04.06 13:39
УРААА! НАШЕЛ!

g_D3DDevice.SetTextureStageState 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR
g_D3DDevice.SetTextureStageState 0, D3DTSS_MINFILTER, D3DTEXF_LINEAR
g_D3DDevice.SetTextureStageState 0, D3DTSS_MIPFILTER, D3DTEXF_POINT

Ответить

Номер ответа: 6
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 16.04.06 13:40
По-моему, это одно из самых слабых мест бейсика


Если это VB.NET, то что тебе мешает курсор сделать из png или gif'a ?

Ответить

Номер ответа: 7
Автор ответа:
 ChemistN1



Вопросов: 7
Ответов: 43
 Web-сайт: snurs.narod.ru
 Профиль | | #7
Добавлено: 16.04.06 14:15
Это VB6, и ничто не убедит перейти с него на .NET.

Ответить

Номер ответа: 8
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #8 Добавлено: 16.04.06 17:40
Это VB6

Из содержания топика и вопроса не совсем понятно, о каком из языков шла речь. Вот я и высказал свое предположение
и ничто не убедит перейти с него на .NET

А тебя кто то убеждал или уговаривал? Наслаждайся всемиуважаемым и горячолюбимым VB6!! В том числе и работой с курсорами.. :-)))

Ответить

Номер ответа: 9
Автор ответа:
 ChemistN1



Вопросов: 7
Ответов: 43
 Web-сайт: snurs.narod.ru
 Профиль | | #9
Добавлено: 16.04.06 20:35
А тебя кто то убеждал или уговаривал? Наслаждайся всемиуважаемым и горячолюбимым VB6!! В том числе и работой с курсорами.. :-)))

Угу, зато проги весят 20 кило вместо 2 метров, не требуют кучу библиотек и запускаются на любом компьютере. Но это к слову.

В общем, проблема решена, жаль что тут опять мне не помогли. Вот на вбстритс форум так форум - там чуть что не слишком сложное спросишь, все, бан обеспечен.

Ответить

Номер ответа: 10
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #10 Добавлено: 17.04.06 00:03
Насчет курсора - я в больших проектах делаю полностью свой графический интерфейс, отображая картинку на форму через байтовый массив. И курсор тоже через него делаю, задав в качестве MouseIcon пустую иконку, чтобы скрыть системный курсор мыши. А со своим возможностей куда больше - можно и размер любой сделать, и цвета любые, и эффекты вроде сглаживания с линейной интерполяцией перемещения. Область применения такого подхода, правда, довольно ограничена.

Ответить

Номер ответа: 11
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #11 Добавлено: 17.04.06 23:15
В общем, проблема решена, жаль что тут опять мне не помогли.

эээ, слушай, дай ссылку туда (на тему твою), если не сложно, или опиши вкратце - ты решил, а я нет!

2 Страшный Сон
Нет ли у тебя примера кода (ну если не жалко (если жалко - пойму)) про отображения курсора через байтовый массив. Или ссылка, где почиатать-посмотреть.

Ответить

Номер ответа: 12
Автор ответа:
 ChemistN1



Вопросов: 7
Ответов: 43
 Web-сайт: snurs.narod.ru
 Профиль | | #12
Добавлено: 18.04.06 19:38
В общем, проблема решена, жаль что тут опять мне не помогли.

эээ, слушай, дай ссылку туда (на тему твою), если не сложно, или опиши вкратце - ты решил, а я нет!

Ну как сказать, что решена... Просто плюнул на все и сделал 21х16 курсор - вполне приличного размера, но хотспот у него на 4 пикселя ниже - в принципе, незаметно. И геморроя с байтовыми массивами нет.

Ответить

Номер ответа: 13
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #13 Добавлено: 19.04.06 20:56
но хотспот у него на 4 пикселя ниже

Четыре пикселя - это слишком много...

Нет ли у тебя примера кода

Могу выдрать кусок. Но никто, кроме меня, ничего в нем не поймет. Вот главная процедура отображения курсора (подпроцедуры придержу у себя):

Private Sub DrawCursorState()
Dim Buf&;(1), Papi As POINTAPI, I&
If lebopt_MOUSEINTERPOLATION Then
  Buf(1) = Int(Sqr((PMP.X - MP.X) * (PMP.X - MP.X) + (PMP.Y - MP.Y) * (PMP.Y - MP.Y)))
Else
  Buf(1) = 0
End If
If lebCURSORMODE = 4 Then ' Cursor Wrapping
  GetCursorPos Papi
  If FULLSCREEN Then
    If MP.Y >= 599 Then
      SetCursorPos Papi.X, 598
      lebPPOINTERY = lebPPOINTERY - 598
      GetCursorPos MP
      MP.X = MP.X - LEBuildW.Left / Screen.TwipsPerPixelX
      MP.Y = 599 - (MP.Y - LEBuildW.Top / Screen.TwipsPerPixelY)
      PMP.Y = MP.Y
    End If
    If MP.Y <= 0 Then
      SetCursorPos Papi.X, 1
      lebPPOINTERY = lebPPOINTERY + 598
      GetCursorPos MP
      MP.X = MP.X - LEBuildW.Left / Screen.TwipsPerPixelX
      MP.Y = 599 - (MP.Y - LEBuildW.Top / Screen.TwipsPerPixelY)
      PMP.Y = MP.Y
    End If
  Else
    If Papi.Y <= 0 Then
      SetCursorPos Papi.X, Int(Screen.Height / Screen.TwipsPerPixelY) - 2
      lebPPOINTERY = lebPPOINTERY - Int(Screen.Height / Screen.TwipsPerPixelY) + 2
      GetCursorPos MP
      MP.X = MP.X - LEBuildW.Left / Screen.TwipsPerPixelX
      MP.Y = 599 - (MP.Y - LEBuildW.Top / Screen.TwipsPerPixelY)
      PMP.Y = MP.Y
    End If
    If Papi.Y >= Int(Screen.Height / Screen.TwipsPerPixelY) - 1 Then
      SetCursorPos Papi.X, 1
      lebPPOINTERY = lebPPOINTERY + Int(Screen.Height / Screen.TwipsPerPixelY) - 2
      GetCursorPos MP
      MP.X = MP.X - LEBuildW.Left / Screen.TwipsPerPixelX
      MP.Y = 599 - (MP.Y - LEBuildW.Top / Screen.TwipsPerPixelY)
      PMP.Y = MP.Y
    End If
  End If
End If
Select Case lebCURSORMODE
Case 0
  If lebopt_MOUSEPOINTERSHADOW Then DisplayShadow MP.X + 3, MP.Y - 26, 0, 488, 17, 24
  'Buf(1) = Int(Sqr((PMP.X - MP.X) * (PMP.X - MP.X) + (PMP.Y - MP.Y) * (PMP.Y - MP.Y)))
  If Buf(1) = 0 Then
    ;DisplayPict MP.X, MP.Y - 23, 0, 488, 17, 24, lebCURSORCOL
  Else
    Select Case Buf(1)
    Case 1 To 4
      Buf(0) = 3
    Case 5 To 32
      Buf(0) = 2
    Case Else
      Buf(0) = 1
    End Select
    For I = 0 To Buf(1) Step 4
      ;DisplayPictT Int(NumPerc(PMP.X, MP.X, I / Buf(1))), Int(NumPerc(PMP.Y, MP.Y, I / Buf(1))) - 23, 0, 488, 17, 24, lebCURSORCOL, Buf(0)
    Next I
  End If
Case 1
  Buf(0) = 0
  Select Case lebCurrentTool
  Case 17 To 19
    '
  Case Else
    If SpriteSel > -1 And lebSELECTIONMODE = 0 Then
      If lebSelectedSPRITES(SpriteSel) Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      End If
    ElseIf VertexSel > -1 And lebSELECTIONMODE = 1 Then
      If lebSelectedVERTICES(VertexSel) Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      End If
    ElseIf SectorSel > -1 And lebSELECTIONMODE = 3 Then
      If lebSelectedSECTORS(SectorSel) Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      End If
    ElseIf WallSel > -1 And lebSELECTIONMODE = 4 Then
      If lebSelectedWALLS(WallSel) Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      End If
    ElseIf lebSELECTIONMODE = 5 Then
      If VertexSel > -1 Then
        If lebSelectedVERTICES(VertexSel) Then
          Select Case lebGENERICEDITMODE
          Case 1
            Buf(0) = 1
          Case 2
            Buf(0) = 2
          Case 3
            Buf(0) = 3
          End Select
        End If
      ElseIf SpriteSel > -1 Then
        If lebSelectedSPRITES(SpriteSel) Then
          Select Case lebGENERICEDITMODE
          Case 1
            Buf(0) = 1
          Case 2
            Buf(0) = 2
          Case 3
            Buf(0) = 3
          End Select
        End If
      End If
    End If
    If lebkCTRL Then
      If lebSELECTIONMODE = 0 And lebSelectCntSPRITES <> 0 Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      ElseIf lebSELECTIONMODE = 1 And lebSelectCntVERTICES <> 0 Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      ElseIf lebSELECTIONMODE = 3 And lebSelectCntSECTORS <> 0 Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      ElseIf lebSELECTIONMODE = 4 And lebSelectCntLOOPS <> 0 Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      ElseIf lebSELECTIONMODE = 5 And (lebSelectCntVERTICES <> 0 Or lebSelectCntSPRITES <> 0) Then
        Select Case lebGENERICEDITMODE
        Case 1
          Buf(0) = 1
        Case 2
          Buf(0) = 2
        Case 3
          Buf(0) = 3
        End Select
      End If
    End If
  End Select
  Select Case Buf(0)
  Case 0
    If lebopt_MOUSEPOINTERSHADOW Then DisplayShadow MP.X - 9, MP.Y - 15, 18, 487, 25, 25
    If Buf(1) = 0 Then
      ;DisplayPict MP.X - 12, MP.Y - 12, 18, 487, 25, 25, lebCURSORCOL
    Else
      Select Case Buf(1)
      Case 1 To 4
        Buf(0) = 3
      Case 5 To 32
        Buf(0) = 2
      Case Else
        Buf(0) = 1
      End Select
      For I = 0 To Buf(1) Step 4
        ;DisplayPictT Int(NumPerc(PMP.X, MP.X, I / Buf(1))) - 12, Int(NumPerc(PMP.Y, MP.Y, I / Buf(1))) - 12, 18, 487, 25, 25, lebCURSORCOL, Buf(0)
      Next I
    End If
  Case 1
    If lebopt_MOUSEPOINTERSHADOW Then DisplayShadow MP.X - 9, MP.Y - 15, 18, 461, 25, 25
    'Buf(1) = Int(Sqr((PMP.X - MP.X) * (PMP.X - MP.X) + (PMP.Y - MP.Y) * (PMP.Y - MP.Y)))
    If Buf(1) = 0 Then
      ;DisplayPict MP.X - 12, MP.Y - 12, 18, 461, 25, 25, lebCURSORCOL
    Else
      Select Case Buf(1)
      Case 1 To 4
        Buf(0) = 3
      Case 5 To 32
        Buf(0) = 2
      Case Else
        Buf(0) = 1
      End Select
      For I = 0 To Buf(1) Step 4
        ;DisplayPictT Int(NumPerc(PMP.X, MP.X, I / Buf(1))) - 12, Int(NumPerc(PMP.Y, MP.Y, I / Buf(1))) - 12, 18, 461, 25, 25, lebCURSORCOL, Buf(0)
      Next I
    End If
  Case 2
    If lebopt_MOUSEPOINTERSHADOW Then DisplayShadow MP.X - 9, MP.Y - 12, 18, 441, 25, 19
    'Buf(1) = Int(Sqr((PMP.X - MP.X) * (PMP.X - MP.X) + (PMP.Y - MP.Y) * (PMP.Y - MP.Y)))
    If Buf(1) = 0 Then
      ;DisplayPict MP.X - 12, MP.Y - 9, 18, 441, 25, 19, lebCURSORCOL
    Else
      Select Case Buf(1)
      Case 1 To 4
        Buf(0) = 3
      Case 5 To 32
        Buf(0) = 2
      Case Else
        Buf(0) = 1
      End Select
      For I = 0 To Buf(1) Step 4
        ;DisplayPictT Int(NumPerc(PMP.X, MP.X, I / Buf(1))) - 12, Int(NumPerc(PMP.Y, MP.Y, I / Buf(1))) - 9, 18, 441, 25, 19, lebCURSORCOL, Buf(0)
      Next I
    End If
  Case 3
    If lebopt_MOUSEPOINTERSHADOW Then DisplayShadow MP.X - 9, MP.Y - 15, 18, 415, 25, 25
    'Buf(1) = Int(Sqr((PMP.X - MP.X) * (PMP.X - MP.X) + (PMP.Y - MP.Y) * (PMP.Y - MP.Y)))
    If Buf(1) = 0 Then
      ;DisplayPict MP.X - 12, MP.Y - 12, 18, 415, 25, 25, lebCURSORCOL
    Else
      Select Case Buf(1)
      Case 1 To 4
        Buf(0) = 3
      Case 5 To 32
        Buf(0) = 2
      Case Else
        Buf(0) = 1
      End Select
      For I = 0 To Buf(1) Step 4
        ;DisplayPictT Int(NumPerc(PMP.X, MP.X, I / Buf(1))) - 12, Int(NumPerc(PMP.Y, MP.Y, I / Buf(1))) - 12, 18, 415, 25, 25, lebCURSORCOL, Buf(0)
      Next I
    End If
  End Select
Case 2
  If lebopt_MOUSEPOINTERSHADOW Then DisplayShadow MP.X + 3, MP.Y - 26, 44, 488, 21, 24
  'Buf(1) = Int(Sqr((PMP.X - MP.X) * (PMP.X - MP.X) + (PMP.Y - MP.Y) * (PMP.Y - MP.Y)))
  If Buf(1) = 0 Then
    ;DisplayPict MP.X, MP.Y - 23, 44, 488, 21, 24, lebCURSORCOL
  Else
    Select Case Buf(1)
    Case 1 To 4
      Buf(0) = 3
    Case 5 To 32
      Buf(0) = 2
    Case Else
      Buf(0) = 1
    End Select
    For I = 0 To Buf(1) Step 4
      ;DisplayPictT Int(NumPerc(PMP.X, MP.X, I / Buf(1))), Int(NumPerc(PMP.Y, MP.Y, I / Buf(1))) - 23, 44, 488, 21, 24, lebCURSORCOL, Buf(0)
    Next I
  End If
Case 3
  If lebopt_MOUSEPOINTERSHADOW Then DisplayShadow MP.X, MP.Y - 11, 0, 470, 7, 17
  'Buf(1) = Int(Sqr((PMP.X - MP.X) * (PMP.X - MP.X) + (PMP.Y - MP.Y) * (PMP.Y - MP.Y)))
  If Buf(1) = 0 Then
    ;DisplayPict MP.X - 3, MP.Y - 8, 0, 470, 7, 17, lebCURSORCOL
  Else
    Select Case Buf(1)
    Case 1 To 4
      Buf(0) = 3
    Case 5 To 32
      Buf(0) = 2
    Case Else
      Buf(0) = 1
    End Select
    For I = 0 To Buf(1) Step 4
      ;DisplayPictT Int(NumPerc(PMP.X, MP.X, I / Buf(1))) - 3, Int(NumPerc(PMP.Y, MP.Y, I / Buf(1))) - 8, 0, 470, 7, 17, lebCURSORCOL, Buf(0)
    Next I
  End If
Case 4
  If lebopt_MOUSEPOINTERSHADOW Then DisplayShadow MP.X, MP.Y - 11, 0, 470, 7, 17
  'Buf(1) = Int(Sqr((PMP.X - MP.X) * (PMP.X - MP.X) + (PMP.Y - MP.Y) * (PMP.Y - MP.Y)))
  If Buf(1) = 0 Then
    ;DisplayPict MP.X - 8, MP.Y - 8, 0, 452, 17, 17, lebCURSORCOL
  Else
    Select Case Buf(1)
    Case 1 To 4
      Buf(0) = 3
    Case 5 To 32
      Buf(0) = 2
    Case Else
      Buf(0) = 1
    End Select
    For I = 0 To Buf(1) Step 4
      ;DisplayPictT Int(NumPerc(PMP.X, MP.X, I / Buf(1))) - 8, Int(NumPerc(PMP.Y, MP.Y, I / Buf(1))) - 8, 0, 452, 17, 17, lebCURSORCOL, Buf(0)
    Next I
  End If
End Select
End Sub

Ответить

Номер ответа: 14
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #14
Добавлено: 21.04.06 18:30
2.
API рулят.
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GCL_HCURSOR = (-12)
Option Explicit

Private Sub Command1_Click()
SetCursor "C:\WINDOWS\Cursors\3dgarro.cur"
End Sub

Private Sub SetCursor(ByRef FileName As String)
Dim hCursor As Long
hCursor = LoadCursorFromFile(FileName)
SetClassLong Me.hwnd, GCL_HCURSOR, hCursor
End Sub

Private Sub Command2_Click()
SetCursor "C:\WINDOWS\Cursors\wagtail.ani"
End Sub

Ответить

Номер ответа: 15
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #15 Добавлено: 24.04.06 13:13
2 Страшный Сон - сэнкс, видно что ты старался для своей программы :), код можно было бы разобрать, если бы стало ясно откуда что берется - имена типов, функций и процедур (которые ты придержал :) - уважаю авторское право) - Один вопрос - эта процедурка когда вызывается? при движении курсора или еще когда?
2 Victor сэнкс, очень интересно, буду использовать, если разберусь :)
2 ChemistN1 - попробуй что сказал Victor

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам