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

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

24.08.2014, 13:45. Показов 1668. Ответов 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru