MousePointer::Hand

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

MousePointer::Hand

Сообщение AlexBlack » 12.08.2005 (Пт) 16:46

Всё таки интересно почему нет в MousePointer вариант Hand.
Неужели VB такой старый? :)
И как эту самую ручку изобразить при движении на Label-е?
Спасибо за внимание.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 12.08.2005 (Пт) 22:20

А кто тебе мешает у Label'а установить в свойстве MousePointer значение Custom (99) и в свойстве MouseIcon указать ту же ручку в виде файлика (ico or cur)?
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 13.08.2005 (Сб) 22:06

Отлично! Легко и просто. Как выковырять ИКО с ручкой из системы? Причем не ручку по умолчанию, а установленную?

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 14.08.2005 (Вс) 18:14

AlexBlack писал(а):Отлично! Легко и просто. Как выковырять ИКО с ручкой из системы? Причем не ручку по умолчанию, а установленную?

Выковырять можно, видимо, там же где и все (в том числе системные) - %Windir%\Cursors . Если там нет - тогда можно применить хорошую прожку ArtCursor и нарисовать свой. :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 14.08.2005 (Вс) 19:08

... а установленную!

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 14.08.2005 (Вс) 19:09

... а установленную!

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 14.08.2005 (Вс) 19:12

Редактор ресурсов.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.08.2005 (Пн) 1:46

Код: Выделить всё
Option Explicit

Private Declare Function LoadImage Lib "user32.dll" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
Private Declare Function OleCreatePictureIndirect Lib "oleaut32" (ByRef lpPictDesc As PicBmp, riid As GUID, ByVal fOwn As Long, ByRef lplpvObj As Any) As Long

Private Type GUID
  Data1 As Long
  Data2 As Integer
  Data3 As Integer
  Data4(0 To 7) As Byte
End Type

Private Type PicBmp
  Size As Long
  Type As PictureTypeConstants
  hBmp As Long
  hPal As Long
  Reserved As Long
End Type

Private Const IMAGE_CURSOR As Long = 2
Private Const OCR_HAND As Long = 32649
Private Const LR_DEFAULTSIZE As Long = &H40
Private Const LR_SHARED As Long = &H8000

Private Sub Form_Load()
  Me.MousePointer = vbCustom
  Set Me.MouseIcon = GetPictureFromHandle(LoadImage(0, OCR_HAND, IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE Or LR_SHARED), vbPicTypeIcon)
End Sub

Public Function GetPictureFromHandle(ByVal Handle As Long, ByVal PictureType As PictureTypeConstants) As IPictureDisp
  Dim p As PicBmp, g As GUID
   
  With p
    .hBmp = Handle
    .Size = Len(p)
    .Type = PictureType
  End With
   
  'IDispatch
  With g
    .Data1 = &H20400
    .Data4(0) = &HC0
    .Data4(7) = &H46
  End With
   
  OleCreatePictureIndirect p, g, 0, GetPictureFromHandle
End Function


Примечание.
fOwn = 0 только потому, что используется LR_SHARED. Вообще там 1 обычно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 15.08.2005 (Пн) 20:55

Вот это я хотел видеть.
Спасибо вам огромное, GSerg.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 137

    TopList