Стандартное диалоговое окно Windows не имеет иконки при минимизации. Однако, диалоговое окно можно заставить показывать иконку путём замены стандартного класса диалогового окна своим классом.
В стандартном классе диалогового окна в поле hIcon структуры WNDCLASS указано значение NULL. Поэтому при минимизации диалога иконка не рисуется.
Иконку можно указать заставив диалог использовать другой класс:
- Регистрируем наш класс.
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.
- Заставляем диалоговое окно использовать наш класс.
В шаблоне диалога используем выражение CLASS, чтобы заставить его использовать наш класс:IDD_MYDIALOG DIALOG 0, 0, 186, 92
CLASS "MyDlgClass"
: - Создаём диалоговое окно при помощи DialogBox() или CreateDialog().
DialogBox (hinst,
MAKEINTRESOURCE (IDD_MYDIALOG),
NULL,
(DLGPROC)MyDlgFunc);MyDlgFunc() это диалоговая функция, которая присутствует в приложении. Когда диалог минимизируется, то он начинает использовать иконку, указанную в нашем классе.