Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 248

Создать свой курсор с прозрачным фоном

24.08.2014, 13:45. Показов 1618. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане. Мне надо сделать курсор с прозрачным фоном. Я знаю, что мене скажут, что VB не работает с альфа-каналом, но я находил в инете иконки с прозрачным фоном и VB их прекрасно ел, но при попытке сделать свою иконку мне пишет Invalid Picture. Что делать?
P.S.
Я знаю, что VB воспринимает только 24 битные картинки для иконок и курсоров.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.08.2014, 13:45
Ответы с готовыми решениями:

Создать правило для абзаца с собственным фоном, прозрачным фоном
Подскажите пожалуйста, как нужно выполнить задание?

Создать image с прозрачным фоном
соб-но нужен второй слой на котором будут выводиться прорисвоки (не битмапы) независимо от точно-такого же image лежащего под ним.

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

6
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
24.08.2014, 18:19
Лучший ответ Сообщение было отмечено MorfixProton как решение

Решение

Нужно перехватывать сообщение WM_SETCURSOR и устанавливать значок.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileW" (ByVal lpsz As Long) As Long
Private Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Long) As Long
Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
 
Private Const WM_SETCURSOR As Long = &H20
 
Dim hCursor As Long
Dim WithEvents subPic As clsTrickSubclass
 
Private Sub Form_Load()
    Set subPic = New clsTrickSubclass
    subPic.Hook picTest.hwnd
    hCursor = LoadCursorFromFile(StrPtr(App.Path & "\Select.cur"))
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    DestroyCursor hCursor
End Sub
 
Private Sub subPic_WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long, Ret As Long, DefCall As Boolean)
    Select Case Msg
    Case WM_SETCURSOR: SetCursor hCursor
    Case Else: DefCall = True
    End Select
End Sub
Вложения
Тип файла: rar Cursors.rar (25.6 Кб, 27 просмотров)
3
3 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 248
24.08.2014, 22:03  [ТС]
А если надо тоже самое, но для иконки для формы?
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
24.08.2014, 22:05
Заменить 12 строчку
Visual Basic
1
subPic.Hook Me.hwnd
А вообще, если тебе нужен только один прозрачный цвет, то тебе достаточно 24-битных иконок, которые будут работать и с родным свойством MouseIcon
2
0 / 0 / 0
Регистрация: 26.12.2014
Сообщений: 24
28.12.2014, 02:49
а как задать курсор массиву элементов? никак не разберусь.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
28.12.2014, 12:03
Цитата Сообщение от to0freak Посмотреть сообщение
а как задать курсор массиву элементов? никак не разберусь.
Не используй тот код, можно сделать проще без всяких сабклассингов:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileW" (ByVal lpsz As Long) As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As Any, RefIID As Any, ByVal fPictureOwnsHandle As Long, IPic As Object) As Long
 
Private Sub Form_Load()
    Dim picPtr  As StdPicture
    
    Set picPtr = VBLoadCursor(App.Path & "\Select.cur")
    
    Set picTest(0).MouseIcon = picPtr
    Set picTest(1).MouseIcon = picPtr
    
End Sub
 
Private Function VBLoadCursor(FileName As String) As StdPicture
    Dim hCursor As Long
    Dim IID(3)  As Long
    Dim pic(4)  As Long
    
    hCursor = LoadCursorFromFile(StrPtr(FileName))
    
    IID(0) = &H20400:   IID(2) = &HC0:          IID(3) = &H46000000
    pic(0) = 20:        pic(1) = vbPicTypeIcon: pic(2) = hCursor
    
    OleCreatePictureIndirect pic(0), IID(0), 1, VBLoadCursor
    
End Function
Вложения
Тип файла: rar Cursor.rar (8.0 Кб, 19 просмотров)
3
0 / 0 / 0
Регистрация: 26.12.2014
Сообщений: 24
28.12.2014, 14:16
То что нужно, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2014, 14:16
Помогаю со студенческими работами здесь

Как создать слайдер с прозрачным фоном?
Приветствую. Народ, такой вопрос: подскажите пожалуйста, как правильно создавать слайдер с прозрачным фоном. Пробовал ставить ему стиль...

создать рисунок с alpha blending (с прозрачным фоном)
как это сделать и показать в window wpf-application

Конвертировать png c прозрачным фоном на jpg с "x" фоном
Ситуация такая. Обработал в фотошопе около 500 фото. Удалял фон (сделал прозрачным). Выложил фото на сайт... Сайт не работает с png и...

Создать свой курсор
Помогите пожалуйста, пробую сделать курсор в приложении, но ничего не получается. Я уже не смотрю на то, что настоящий курсор можно чем то...

Создать свой курсор из файла
Доброго времени суток. Здесь нашёл, как загрузить курсор из стороннего файла. Есть ли альтернативная функция, которая позволит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru