C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 68 - Смена иконы с SetClassLong / Диалоговые окна / Visual C++

Шаг 68 - Смена иконы с SetClassLong

Совсем кардинальный способ, который меняет икону связанную с классом окна. Мы вставим этот код в функцию перехвата OnSetIcon():

void CTestDialog::OnSetIcon(WPARAM w, LPARAM i)
{
	SetClassLong(this->m_hWnd , GCL_HICON, i);
}

Вот и все. Можно запускать все будет работать. Даже икона меняться при нажатии на кнопку.

68_1.gif (3791 b)

Только теперь все окна в программе будут с данной иконой.

68_2.gif (3941 b)

Плохо это или хорошо не знаю. Но при желании можно все сделать. При запуске диалога сохранять икону класса.

BOOL CTestDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	dwIcon=GetClassLong(this->m_hWnd , GCL_HICON);
......
};

А при закрытии диалога восстанавливать:

void CTestDialog::OnDestroy() 
{
	CDialog::OnDestroy();
	SetClassLong(this->m_hWnd , GCL_HICON, dwIcon);
}

Это легко проверить по окну About. Если в первом случаем после закрытия диалога икона видна.

68_3.gif (7448 b)

То при восстановлении нет.

68_4.gif (6912 b)


| |
Автор Каев Артем.
[AD]