Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > LoadIcon() как загрузить иконку ?


Автор: softrix 2.3.2008, 22:20
Народ, только начал С изучать. Скажите как загрузить свою иконку например из файла my.ico
Где не ищу ни где не написано толком, все пишут что можно загружать свои иконки с помощью функции LoadIcon(), а как это делать, ни где не написано. Не могли бы мне помочь, и написать пример загрузки своей иконки по адресу например c:/windows/

Автор: bsa 2.3.2008, 23:29
Чтобы воспользоваться этой функцией нужно сначала создать файл ресурсов с иконкой (*.rc) и прилинковать к программе. Затем нужно вызвать LoadIcon() передав ей в качестве параметров:
hInstance - идентификатор модуля (читай - первый параметр WinMain() )
идентификатор иконки, созданный с помощью MAKEINTRESOURCE(ID_MyIcon), где ID_MyIcon - это название (номер), которое ты присвоил иконке в редакторе ресурсов.
Вот здесь об этом достаточно понятно написано: http://msdn2.microsoft.com/en-us/library/ms648072(VS.85).aspx

Автор: dizel003 3.3.2008, 11:53
Вот тема по этому написана только на VС++!
http://forum.vingrad.ru/forum/topic-196592.html

Автор: Andrey44 4.3.2008, 09:28
Для загрузки иконки лучше использовать LoadImage(.............) smile 

Автор: Dronchik 6.3.2008, 13:43
Andrey44, Почему ты так решил. Каждая функция используеться для своих нужд. И если существует функция загрузки иконки, то это означает что функция специально сделана, подоготовленна и оптимизирована под данную задачу. имхо.

softrix, делай так, как сказал bsa.

Автор: 586 6.3.2008, 14:00
Цитата(Dronchik @  6.3.2008,  13:43 Найти цитируемый пост)
Andrey44, Почему ты так решил. Каждая функция используеться для своих нужд. И если существует функция загрузки иконки, то это означает что функция специально сделана, подоготовленна и оптимизирована под данную задачу. имхо.

LoadImage позволяет загрузить иконку из файла, что автору темы и нужно.
Цитата
Не могли бы мне помочь, и написать пример загрузки своей иконки по адресу например c:/windows/

Код
HICON icon = (HICON)LoadImage(NULL, "C:\\ico.ico", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
HDC hdc = GetDC(hWnd);
DrawIcon(hdc, 5, 5, icon);
ReleaseDC(hWnd, hdc);
DestroyIcon(icon);

Автор: Dronchik 6.3.2008, 14:07
586, LoadImage предназначен для загрузки рисунка. А LoadIcon для загрузки иконки. 

Автор: 586 6.3.2008, 14:11
Цитата(Dronchik @  6.3.2008,  14:07 Найти цитируемый пост)
А LoadIcon для загрузки иконки. 

из ресурсов

Автор: Dronchik 6.3.2008, 14:21
586, спасибо что дополнил 

Автор: Andrey44 7.3.2008, 08:32
Dronchik,  Из MSDN

Цитата

LoadImage This function loads an icon, cursor, or bitmap.



Автор: Dronchik 7.3.2008, 11:03
Andrey44, я это знаю. Я не отрицаю что LoadImage можно использовать для загрузки иконки. Но зачем тогда функция LoadIcon? Ведь можно использовать LoadImage. А? Зачем же? Если она есть значит она предназначена для загрузки иконки. И существование этой функции говорит о том что она подстроена и оптимизированна под эту задачу. Это как сравнивать qt и Windows GUI. qt кросплатформенна, но работает медленее чем Windows GUI. Потому что Win GUI построенны специально для Винды. А QT для нескольких систем. Сейчас у нас анологичная ситуация.

Автор: Andrey44 7.3.2008, 12:22
Dronchik, согласен каждая функция под свою задачу
Цитата

LoadIcon - This function can only load an icon whose size conforms to the SM_CXICON and SM_CYICON system metric values. Use the LoadImage function to load icons of other sizes.

Автор: Dronchik 7.3.2008, 13:59
Andrey44, если автору тему требуеться загружать иконку стандартных размеров то лучше воспользоваться функцией LoadIcon, если же нужно загрузить иконку нестандартных размеров то - LoadImage. Такой вывод я делаю из нашего обсуждения.

Автор: Andrey44 7.3.2008, 14:05
Dronchik,  smile согласен, тему можно закрывать smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)