И снова LoadIcon

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

И снова LoadIcon

Сообщение NIC » 18.01.2008 (Пт) 0:52

Я "прикрутил" к проекту ресурс файл с иконкой 32 бита.
А как её теперь достать оттуда.Т.е. загрузить и получить хэндл.
Пробовал так:
Код: Выделить всё
hIcon = LoadIcon(App.hInstance, "101")

и так
Код: Выделить всё
hIcon = LoadIcon(App.hInstance, 101)

хотя в MSDN написано
Pointer to a null-terminated string that contains the name of the icon resource to be loaded


Через LoadImage-тоже пробовал.Ни как не получаеться. :( Возвращает 0.

В файле ресурса иконка имеет имя 101.
Она там одна.
Вложения
123.rar
Ресурс с иконкой
(9.72 Кб) Скачиваний: 68

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.01.2008 (Пт) 8:26

Что-то у меня сомнения насчет правильности размещения топика.

Но для начала покажи декларации.
Lasciate ogni speranza, voi ch'entrate.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 18.01.2008 (Пт) 10:46

hIcon = LoadIcon(App.hInstance, "#101") - так правильно

А вобще это вопрос новичка, а не профи

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 18.01.2008 (Пт) 14:42

alibek сорри :oops: ,был в трезвом уме когда размещал.
Может по запарке в этот раздел "закинул",случайно.
Невнимательность с моей стороны.
Наверно нужно перенести.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.01.2008 (Пт) 14:49

Ок, тогда переношу.

NIC, tag_warning
Lasciate ogni speranza, voi ch'entrate.

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 18.01.2008 (Пт) 15:03

jangle всё равно hIcon=0
GetLastError тоже 0

Код: Выделить всё
hIcon = LoadIcon(App.hInstance, "#101")

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 18.01.2008 (Пт) 17:35

Декларируй так:

Код: Выделить всё
Public Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long) As Long


Используй так:

Код: Выделить всё
hIcon = LoadIcon(App.hInstance, 101)

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 18.01.2008 (Пт) 17:56

Декларирую
Код: Выделить всё
lpIconName As Long


Использую 101 не получаеться.
И 1 пробовал,короче по всякому.
Как будто заколдованная иконка :D
:(

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 18.01.2008 (Пт) 18:26

После компиляции будет работать.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 18.01.2008 (Пт) 18:42

NIC писал(а):В файле ресурса иконка имеет имя 101.
Она там одна.


я наверное делаю что-то не так:
скачал и распаковал
запустил ВБ6 и стандартный проект
добавил распакованный файл, пытаюсь посмотреть редактором ресурсов что там, а он пустой! Она там есть эта иконка???

добавил на форму пикчербокс, в рес-файл - иконку и заменил лоадикон на:
Код: Выделить всё
Set Picture1.Picture = LoadResPicture(101, vbResIcon)

в боксе появилась иконка
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 18.01.2008 (Пт) 18:54

Я скачал файл.
Распаковал.
Открыл ресторатором. Имя ресурса 123.res
Иконка на месте. (6 32-х битных иконок)

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 18.01.2008 (Пт) 19:00

HiSER
Да,после компиляции работает. :wink:
Наверное ресурс добавляеться только после компиляции.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 18.01.2008 (Пт) 19:07

я смотрел Visual Basic 6 Resource Editor'ом
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 18.01.2008 (Пт) 19:14

Он его не загружает.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 18.01.2008 (Пт) 19:22

а LoadIcon будет работать со скомпилированной программой
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 18.01.2008 (Пт) 22:53

NIC писал(а):jangle всё равно hIcon=0
GetLastError тоже 0

Код: Выделить всё
hIcon = LoadIcon(App.hInstance, "#101")


Учи матчасть и тогда все будет получаться

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 18.01.2008 (Пт) 23:03

Параметр задекларирован как Long.Соответственно я ему и передаю номер идентификатора в младшем слове двойного слова.И всё работает.
Jangle а где можно почитать про этот параметр.
А то "каша" получаеться.
MSDN - описание параметра прочёл.В декларации MSDN этот параметр вроде как строковый. В API вьювере он ANY.
Насколько я понимаю можно передавать и строку,указав,что это номер
#101 (как String),либо просто ID номер 101 (как Long).
Я правильно мыслю? :roll:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.01.2008 (Пн) 10:28

Во-первых, покажи наконец декларацию функции.
Во-вторых, покажи, как ты устанавливаешь загруженную иконку.
Lasciate ogni speranza, voi ch'entrate.

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 21.01.2008 (Пн) 17:29

После компиляции иконка отображаеться.
(я уже постил)

Код: Выделить всё
Private Declare Function LoadIcon Lib "user32.dll" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long) As Long


Код: Выделить всё
Set Tray = New TrayIconAndBalloon
Tray.hwnd = hwnd
hIcon = LoadIcon(App.hInstance, 101)
Tray.Icon = hIcon
Tray.add

+класс работы с иконкой TrayIconAndBalloon

pancer
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 22.01.2008 (Вт) 20:57

Сообщение pancer » 28.01.2008 (Пн) 20:23

Почему-то не работает... Даже без трея - просто в заголовок окна не загружается.

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

hIcon = LoadIcon(App.hInstance, 101)
MsgBox hIcon
Me.Icon = hIcon


Msgbox показывает цифру (не ноль).
Сразу после этого выдаёт run-time error '424'
Object required.

Что я делаю не правильно?

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 28.01.2008 (Пн) 20:34

Object Browser (F2) писал(а):Property Icon As StdPicture

А LoadIcon у нас что возвращает? Правильно, Long. Вот и вылетает ошибка...
Вот почитай: Корректная установка иконки приложения
Подпись проходит рефакторинг

pancer
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 22.01.2008 (Вт) 20:57

Сообщение pancer » 29.01.2008 (Вт) 22:11

Угу... Спасибо, вопрос снят.


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 122

    TopList