Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Как заставить диалог использовать иконку при минимизации

Стандартное диалоговое окно Windows не имеет иконки при минимизации. Однако, диалоговое окно можно заставить показывать иконку путём замены стандартного класса диалогового окна своим классом.

В стандартном классе диалогового окна в поле hIcon структуры WNDCLASS указано значение NULL. Поэтому при минимизации диалога иконка не рисуется.

Иконку можно указать заставив диалог использовать другой класс:

  1. Регистрируем наш класс.
          WNDCLASS wc;
     
           wc.style = CS_DBLCLKS | CS_SAVEBITS | CS_BYTEALIGNWINDOW;
           wc.lpfnWndProc = DefDlgProc;
           wc.cbClsExtra = 0;
           wc.cbWndExtra = DLGWINDOWEXTRA;
           wc.hInstance = hinst;
           wc.hIcon = LoadIcon(hinst, "DialogIcon");
           wc.hCursor = LoadCursor(NULL, IDC_ARROW);
           wc.hbrBackground = COLOR_WINDOW + 1;
           wc.lpszMenuName = NULL;
           wc.lpszClassName = "MyDlgClass";
           RegisterClass(&wc); 

    ЗАМЕЧАНИЕ: Заданная по умолчанию процедура диалогового окна DefDlgProc(), используется как оконная процедура класса. Это заставляет окна этого класса вести себя как стандартные диалоги. Поле cbWndExtra должно указывать на DLGWINDOWEXTRA - в этих дополнительных байтах диалоговое окно хранит информацию о состоянии. Иконка, которая будет отображаться при минимизации диалогового окна, указывается в поле hIncon.

  2. Заставляем диалоговое окно использовать наш класс.

    В шаблоне диалога используем выражение CLASS, чтобы заставить его использовать наш класс:
          IDD_MYDIALOG DIALOG 0, 0, 186, 92
           CLASS "MyDlgClass"
           : 
  3. Создаём диалоговое окно при помощи DialogBox() или CreateDialog().
          DialogBox (hinst,
                      MAKEINTRESOURCE (IDD_MYDIALOG),
                      NULL,
                     (DLGPROC)MyDlgFunc); 

    MyDlgFunc() это диалоговая функция, которая присутствует в приложении. Когда диалог минимизируется, то он начинает использовать иконку, указанную в нашем классе.

 

 

 





<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU Проект ReactOS