Стандартное диалоговое окно 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() это диалоговая функция, которая присутствует в приложении. Когда диалог минимизируется, то он начинает использовать иконку, указанную в нашем классе.