Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: IsIconic()  (Прочитано 7602 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 02-04-2005 12:25 » 

кто знает практическое применение следующим кускам кода ( их вставляет визард, но сколько бы точек останова я там не ставил - туда никогда не попадаю Улыбаюсь)) )

void CConnectDlg::OnPaint()
{
   if (IsIconic())
   {
      CPaintDC dc(this); // device context for painting

      SendMessage(WM_ICONERASEBKGND, (WPARAM)

dc.GetSafeHdc(), 0);

      // Center icon in client rectangle
      int cxIcon = GetSystemMetrics(SM_CXICON);
      int cyIcon = GetSystemMetrics(SM_CYICON);
      CRect rect;
      GetClientRect(&rect);
      int x = (rect.Width() - cxIcon + 1) / 2;
      int y = (rect.Height() - cyIcon + 1) / 2;

      // Draw the icon
      dc.DrawIcon(x, y, m_hIcon);
      dc.FillSolidRect(x,y,15,15,RGB(255,0,0));
   }

   else
   {
      CDialog::OnPaint();
   }
}

// The system calls this to obtain the cursor to display while the user

drags
//  the minimized window.

HCURSOR CConnectDlg::OnQueryDragIcon()
{
   return (HCURSOR) IDC_SIZEWE;//m_hIcon;
}


ну так и? Улыбаюсь
Записан

Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 04-04-2005 03:35 » 

Это код для Windows NT 3.51 (м.б. Windows 3.1). Там когда окно свернуто, оно рисовалось в виде иконки в program manager. Эту иконку можно было перетаскивать - OnQueryDragIcon().
Можно и сейчас попробовать это:
c:\windows\system32\progman.exe
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 05-04-2005 10:58 » 

а почему не говорится - что сейчас это не поддерживается?
Записан

Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 06-04-2005 02:37 » 

Оно не то, чтобы совсем не используется. Это можно использовать тем же progman.exe. Просто мало (очень) людей, кто им пользуется.
А разработчики MFC видимо хотели этим кодом обеспечить корректную работу приложения во всех версиях Windows.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 17-04-2006 20:05 » 

встречал-таки Улыбаюсь . К примеру в классе CMyView:CView имеется член-указатель на диалог m_pDlg.
Если создать диалог в OnInitialUpdate(), то этот диалог не будет иметь кнопку на панели задач. При минимизации будет маленькое плавающее окошко с частью заголовка. В этот момент IsIconic() возвращает истину.
Код:
[nobbc]
void CGuard2View::OnInitialUpdate()
{
m_pDlg=new CDialog(this);
m_pDlg->Create(MyID,this);
m_pDlg->ShowWindow(SW_MINIMIZE);
}
[/nobbc]
Причём абсолютно тот же код создания диалога, будучи помещён в конструктор вьюшки, создаст диалог, который будет иметь кнопу на панели задач, и IsIconic() всегда вернёт лжу Улыбаюсь

Кстати, в чём прикол?
« Последнее редактирование: 16-05-2006 20:15 от Алексей1153 » Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines