С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
tantal

Загрузка курсора из Win32 ресурса

15.02.2011, 12:26. Показов 3970. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дорогой All

Есть проблема для которой не нашел решения. Суть в слудущем:
так как .Net платформа не держивает цветные курсоры, гружу их через:
C#
1
2
3
4
5
6
using System.Runtime.InteropServices;
 
[DllImport('user32.dll', EntryPoint='LoadCursorFromFile')]
public static extern int LoadCursorFromFile(String FileName);
 
private Cursor cursorDrag = = new Cursor(new IntPtr(LoadCursorFromFile(@'ColorCursor.cur')));
Всё прекрасно работает, но в данном случае ColorCursor есть внешний файл - что ни есть красиво. Ок. Мы можем поместить его в Win32 ресурс, но тогда встает вопрос как его от туда вытащить. Может кто либо имеет красивое решение?

С уважение, Лёха.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2011, 12:26
Ответы с готовыми решениями:

Загрузка курсора из файла ресурса
загрузить из файла я нашел как IntPtr colorCursorHandleNo = LoadCursorFromFile( Patch +"//NO.cur"); ...

Загрузка курсора из ресурсов
Добрый день, срочно нужен ваш опытный взгляд со стороны. В приложении Windows Forms, Visual Studio 2008, нужно установить свой курсор. ...

Загрузка и использование собственного курсора
Народ а как загрузить курсор из своего солюшена? this.Cursor = new Cursor(@"C:\Documents and Settings\zexell\Рабочий...

13
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
15.02.2011, 13:25
Красивого решения предложить не могу, но для загрузки курсора из ресурсов есть API функция LoadCursor
0
tantal
15.02.2011, 13:36
Видел такую, но как применить в конкретном случае? Пока не знаю.
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
15.02.2011, 17:00
Все проще оказалось - можнои без API обойтись.
Добавляем в проект файл с курсором. Затем в его свойствах (в Solution Explorer) ставим в BuildAction - Embedded Resource. В коде изменения курсора пишем:
C#
1
2
3
4
private void Form1_Load(object sender, System.EventArgs e)
{
    this.Cursor = new Cursor(GetType(), 'Cursor1.cur');
}
Cursor1.cur это имя нашего файла с курсором. Для простоты поддержки можно сделать это имя константой.
0
tantal
15.02.2011, 17:44
К сожалению, опять мимо.. Данный метод работает, но только с Black&White курсорами. А ты думаешь почему мне пришлось изголяться через API.
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
15.02.2011, 17:48
У меня цветной курсор отображался.
Конфигурация такая - Visual Studio 2003 c .NET Framework 1.1 под Win2003.

Может у тебя .NET 1.0 и его надо обновить до 1.1?
0
tantal
16.02.2011, 10:38
Странно, очень странно.. У меня тоже VS 2003 & Framework 1.1 только WinXP SP2. Попробовал, указал проекту компилиться только под 1.1 - результат тот же. Вопрос: какой формат курсора ты пробовал (кол-во цветов). Тут попробовал грузить XP формат с уровнем прозначности, так она ругнулась на стадии загрузки (cursorDrag = new Cursor(GetType(), 'colorCursor.cur') Через API этот же курсор грузит без вопросов - что и не удивительно.
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
16.02.2011, 10:52
Я пробовал 16 и 256 цветные курсоры, но без прозрачности. Похоже класс Cursor не поддерживает именно курсоры с прозначностью.
0
tantal
17.02.2011, 11:30
Спасибо за обсуждение, было интересно, но нужный результат я так и не получил, к сожалению. Ладно будет время на это - займусь поплотнее.

P.S. В MSDN ясно по нашему по английски написано:
Code
1
Note   The Cursor class does not support animated cursors (.ani files) or cursors with colors other than black and white.
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
17.02.2011, 13:31
Ну цветные курсоры он поддерживает. Тут явная ошибка. Можещь прислать мне курсор который у тебя не грузится?
bazile(at)inel.ru
0
tantal
21.02.2011, 12:22
в принципе я тут разобрался - если изначально создавать курсор внути VS, это работает.
Если пытаться использовать внеше созданные курсоры (в Microangelo или просто системные) - это не работает.

Ну да ладно, впринципе с этим можно жить.
Несколько слов о создании курсоров в VS:
Невозможно задать Hot spot. Это known баг VS, по моим ощущениям, мы создаем не курсор, а стандартную иконку.
Как это победить? Создаем 64Х64 курсор, и данном случае hot spotом будет являться центр.

Спасибо, за участие.
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
21.02.2011, 16:06
Хот-спот почему-то задается только у черно-белых курсоров.

А ты знаешь как подключить к .NET проекту win32 ресурс? У меня никак не получается

Во-первых, .rc файл приходится создавать вручную, а во-вторых непонятно как указать VS чтобы он включил .res файл в исполняемый файл. У C# и VB.NET есть переключатель командной строки /win32res, но в настройках проекта нет способа указать доп. переключатель командной строки. Хочу все-таки добить использование функции LoadCursor.
0
tantal
22.02.2011, 11:56
Вот что у меня есть на сегодняшний день, я сам еще этим не занимался в плотную.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cscomp/html/vclrfwin32resimportwin32resourcefile.asp

Ты кстати HTMLEditor контролом не баловался?
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
22.02.2011, 12:05
Так написано что из Visual Studio нельзя добавить перекелючатель win32res
Похожн единственный выход в создании сателитной сборки с windows ресурсом, которая компилируется вручную.

HTMLEditor контролом пользоваться мне не приходилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2011, 12:05
Помогаю со студенческими работами здесь

Загрузка из ресурса файла
char *pchResType = "RT_RCDATA"; TResourceStream* ptRes = new TResourceStream((int)HInstance, "DATA", pchResType); //Это не цель, но...

Загрузка dll из ресурса
Всем добрый день, вечер. Вот я использую Windows Forms и базу данных MySql из хостинга всё вроде работает нормально, но когда я хочу...

Загрузка bmp из ресурса
Помогите, пожалуйста. Задача вроде несложная, но чего-то не получается. Пытался загрузить картинку bmp из ресурса в структуру: ...

Загрузка изображения из ресурса
Объясните пожалуйста, как загрузить изображение из ресурса в программу (и как его залить туда правильно, если я делаю не так, среда Visual...

Передвижение курсора в консоли Win32 и Linux
Привет форумчане, подскажите пожалуйска апишку для движения(управлением положения) курсора в консоли в Win32 и Linux.


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru