Форум программистов, компьютерный форум CyberForum.ru

Не появляется иконка на узлах дерева - C++

Восстановить пароль Регистрация
 
danhost
0 / 0 / 0
Регистрация: 30.09.2006
Сообщений: 269
05.03.2008, 18:29     Не появляется иконка на узлах дерева #1
Vot kod
Kto mojet podskajite!
Vipolneaetsea normalino, no ikonki na uzlah dereva netu

C++
1
2
3
4
5
6
7
8
9
10
11
CImageList imgl;
imgl.Create(32, 32,FALSE, 1, 0);
    
HICON hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURC(IDI_ICON2));
 
    
 imgl.Add(hIcon);
  
m_MyTree.SetImageList(&imgl,TVSIL_NORMAL);
 
HTREEITEM hWA = m_MyTree.InsertItem('hi',0,0,TVI_ROOT,TVI_LAST); HTREEITEM hWB = m_MyTree.InsertItem('hi1',0,0,hWA,TVI_LAST);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2008, 18:29     Не появляется иконка на узлах дерева
Посмотрите здесь:

Не прикрепляется иконка при компиляции C++
Иконка для консоли C++
C++ Иконка для .exe
C++ Иконка
Иконка для консольного приложения C++
Не появляется диалоговое окно C++
Реализовать двусвязный список. В разных узлах одного списка может быть любой объект одного из допустимых типов (своих знаний не хватает) C++
Иконка в .exe C++
C++ Не появляется понель ошибок
C++ Иконка для консольного приложения
C++ Своя иконка для приложения
Иконка для exe файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
05.03.2008, 18:56     Не появляется иконка на узлах дерева #2
Приведенный Вами код идеально работает с некоторыми поправками с моей стороны:

1) CImageList imgl; становиться переменной класса, а не локальной переменной (Все локальные переменные после окончания работы функции уничтожаются). Инициализацию image list я вставил в метод OnInitDialog(), но можно найти и другое подходящее место.
2) MAKEINTRESOURCE(IDI_ICON2)
3) Просто для справки, фон иконки залил белым и на нем нарисовал синюю закорючку - ее я и увидел как иконку. Использование 'прозрачного' фона выводило в моем случае полностью черную иконку. Надо внимательнее посмотреть параметры создания CImageList или LoadIcon, помниться там где-то есть возможность определить прозрачный пиксель.

Удачи, Владимир.
Snork
Сообщений: n/a
06.03.2008, 09:10     Не появляется иконка на узлах дерева #3
Такая же ситуация со всеми остальными ресурсами. Например шрифт (CFont), который устванавливается для окна тоже должен быть или членом класса окна, или динамической переменной. Экземпляры любого класса, который хранит ресурсные хэндлы, не должны быть стековыми.
danhost
0 / 0 / 0
Регистрация: 30.09.2006
Сообщений: 269
06.03.2008, 15:33  [ТС]     Не появляется иконка на узлах дерева #4
Ne rabotaet !
Privoju polnii tekst
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
BOOL CMyDialog::OnInitDialog() 
{
    CDialog::OnInitDialog();
 
        CImageList imgl;
    imgl.Create(32, 32,FALSE, 1, 0);
    
    HICON hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE  (IDI_ICON2));
 
    
    imgl.Add(hIcon);
  
    m_MyTree.SetImageList(&imgl,TVSIL_NORMAL);
 
    // zdesi vstavleaiu uzli v derevo
    HTREEITEM hWA = m_MyTree.InsertItem('hi',0,0,TVI_ROOT,TVI_LAST); 
    HTREEITEM hWB = m_MyTree.InsertItem('hi1',0,0,hWA,TVI_LAST);
    m_MyTree.EnsureVisible(hWB);
 
    // TODO: Add extra initialization here
    
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}
Spasibo!
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
06.03.2008, 19:10     Не появляется иконка на узлах дерева #5
Ну я же просил сделать CImageList переменной класса, а нелокальной переменной в методе CMyDialog::OnInitDialog().
Напиши в MyDialog.h файле
C++
1
2
3
4
5
6
class CMyDialog : public CDialog
{
...
CImageList m_imgl;
...
}
а в инициализаторе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
BOOL CMyDialog::OnInitDialog() 
{
CDialog::OnInitDialog();
 
m_imgl.Create(32, 32,FALSE, 1, 0);
 
HICON hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE (IDI_ICON2));
 
m_imgl.Add(hIcon);
 
m_MyTree.SetImageList(&m_imgl,TVSIL_NORMAL);
 
// zdesi vstavleaiu uzli v derevo
HTREEITEM hWA = m_MyTree.InsertItem('hi',0,0,TVI_ROOT,TVI_LAST); 
HTREEITEM hWB = m_MyTree.InsertItem('hi1',0,0,hWA,TVI_LAST);
m_MyTree.EnsureVisible(hWB);
 
// TODO: Add extra initialization here
 
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
и все должно работать...

Удачи, Владимир
Yandex
Объявления
06.03.2008, 19:10     Не появляется иконка на узлах дерева
Ответ Создать тему
Опции темы

Текущее время: 02:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru