Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870

AnimateWindow и регион

24.08.2011, 03:13. Показов 2715. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
создаю медлено появляющееся и закрывающееся окно на основе региона
открывается так
C++
1
2
3
4
5
6
7
8
9
10
11
if(!(flagWin&flAnimateOpen))
  {
   ShowWindow(SW_SHOW);
  }
  else
  {
    AnimateWindow(5000,AW_BLEND);
  }
 if(Time)
     SetTimer(1,Time,NULL);
  UpdateWindow();
закрывается так
C++
1
2
3
4
5
6
7
8
9
if(!(flagWin&flAnimateClose))
  {
   ShowWindow(SW_HIDE);
  }
 else
 {
      AnimateWindow(500,AW_BLEND |AW_HIDE);
 }
 this->DestroyWindow();
проблема в том что при открытии пока не отработает
AnimateWindow(5000,AW_BLEND);
нет региона показывается полное окно
как только отработает все в порядке
при закрытии работает как надо

интернет старательно говорит
Функция завершится ошибкой в нижеследующих ситуациях:
Если окно использует регион окна. Windows XP: Это обстоятельство не заставляет функцию завершаться ошибкой.
но ведь закрывает нормально без косяков
и есть куча программ где этот эффект используется
окно создаю так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
WNDCLASSEX wndClass;
   wndClass.cbClsExtra=0;
    wndClass.cbSize=sizeof(wndClass);
    wndClass.cbWndExtra=0;
    wndClass.hbrBackground=GetSysColorBrush(COLOR_WINDOW);
    wndClass.hCursor=LoadCursor(NULL, IDC_ARROW);
    wndClass.hIcon=NULL;
    wndClass.hIconSm=NULL;
    wndClass.hInstance=AfxGetInstanceHandle();
    wndClass.lpfnWndProc=AfxWndProc;
    wndClass.lpszClassName=_T( "SplashScreenExClass");
    wndClass.lpszMenuName=NULL;
    wndClass.style= CS_DBLCLKS | CS_SAVEBITS;
    if(!RegisterClassEx(&wndClass))
        return FALSE;
 
    if(! CWnd::CreateEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW,_T( "SplashScreenExClass"),
        NULL, WS_POPUP, CRect(0,0,0,0),NULL,NULL,NULL))
         return FALSE;
    bmp.LoadBitmap(id_Bitmap);
    
    BITMAP bmap;
    bmp.GetObject(sizeof(BITMAP),&bmap);
    sizeBmp.cy=bmap.bmHeight;
    sizeBmp.cx=bmap.bmWidth;
    ptBmp.x=(GetSystemMetrics(SM_CXFULLSCREEN)-sizeBmp.cx)/2;   
    ptBmp.y=(GetSystemMetrics(SM_CYFULLSCREEN)-sizeBmp.cy)/2;   
    
    this->SetWindowPos(NULL,ptBmp.x,ptBmp.y,sizeBmp.cx,sizeBmp.cy,
                   SWP_NOZORDER//Сохраняет текущую  Z-последовательность (игнорирует параметр hWndInsertAfter)
                   |SWP_NOACTIVATE //Не активизирует окно.
                   |SWP_NOOWNERZORDER/*Не изменяет позицию окна владельца в Z-последовательности.*/
                   );
что в консерватории подправить
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.08.2011, 03:13
Ответы с готовыми решениями:

Дан массив студентов ВУЗа: ФИО, возраст, регион, факультет. Вывести на экран результирующую таблицу: регион, количество студентов из этого региона
"Дан массив студентов некоторого ВУЗа: ФИО, возраст, регион, факультет. Вывести на экран результирующую таблицу: регион, количество...

AnimateWindow
Создаю постепенное появление формы через AnimateWindow, возникло 2 проблемы 1. Хочу чтоб форма появлялась по центру, но она сначала...

AnimateWindow пропадает текст в Edit
Здравствуйте. Почему при использованию функции AnimateWindow(Handle, 100, AW_CENTER or AW_BLEND) пропадает текст на форме во всех edit? ...

15
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 07:09
AW_ACTIVATE | AW_BLEND при открытии?

Добавлено через 1 минуту
Да и если возвращает FALSE, то вызови GetLAstError.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
24.08.2011, 08:41  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
Да и если возвращает FALSE, то вызови GetLAstError.
в том то и дело что возвращает TRUE
пойду попробую на другой машине

Добавлено через 1 минуту
Цитата Сообщение от Deviaphan Посмотреть сообщение
AW_ACTIVATE | AW_BLEND при открытии?
ты это предлагаешь или спрашиваешь?
пробовал и так и так


Добавлено через 7 минут
и возвращает AnimateWindow значение
после того как отработала
у меня через 5 секунд
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 08:44
Цитата Сообщение от ValeryS Посмотреть сообщение
не сначала было AW_BLEND
Это я предложил попробовать сделать с AW_ACTIVATE | AW_BLEND.)
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
24.08.2011, 08:45  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это я предложил попробовать сделать с AW_ACTIVATE | AW_BLEND.)
перечитай я поправил сообщение
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 08:46
Цитата Сообщение от ValeryS Посмотреть сообщение
я поправил сообщение
Это я предложил попробовать.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
24.08.2011, 09:01  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это я предложил попробовать.
отвечаю
Цитата Сообщение от ValeryS Посмотреть сообщение
пробовал и так и так
результат одинаков

Добавлено через 11 минут
вот еще что
в визарде (VS2008) нет сообщения WM_PRINTCLIENT
писал ручками может здесь накосячил
C++
1
2
3
4
5
6
7
8
9
10
BEGIN_MESSAGE_MAP(CSplashScreenEx, CWnd)
    ON_WM_PAINT()
    ON_WM_TIMER()
 
{ WM_PRINTCLIENT, 0, 0, 0, AfxSig_l_w_l, \
                
        (AFX_PMSG)(AFX_PMSGW)  \
        (static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM , LPARAM) > (&OnPrintClient )) },
 
END_MESSAGE_MAP()
C++
1
2
3
4
5
6
7
8
 LRESULT CSplashScreenEx::OnPrintClient(WPARAM wParam, LPARAM lParam)
{
    CDC * dc=CDC::FromHandle((HDC)wParam);
        OnDraw(dc);
    
 
    return 0;//пробовал и return 1;
}
что пердается в lParam может здесь собака порылась
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 09:11
А зачем PRINTCLIENT для СплэшСкрина? О_о
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
24.08.2011, 09:19  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
А зачем PRINTCLIENT для СплэшСкрина?
а чего ему ????
WM_PAINT не рисует
WM_PRINT одни рекомендуют другие отвергают(а даже и не знаю зачем это сообщение)
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 10:50
Цитата Сообщение от ValeryS Посмотреть сообщение
а чего ему ????
WM_PRINTCLIENT для ПЕЧАТИ НА ПРИНТЕР, ОМГ!
MSDN не из прихоти же придуман.)

Если не рисует WM_PAINT, значит где-то косячишь. Именно в нём окна и рисуются. Или в OnDraw.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
24.08.2011, 16:11  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
WM_PRINTCLIENT для ПЕЧАТИ НА ПРИНТЕР, ОМГ!
MSDN не из прихоти же придуман.)
Неправда ваша,дяденька
смотрим что пишет MSDN
The window procedures for the window and its child windows should handle any WM_PRINT or WM_PRINTCLIENT messages. Dialog boxes, controls, and common controls already handle WM_PRINTCLIENT. The default window procedure already handles WM_PRINT.

If a child window is displayed partially clipped, when it is animated it will have holes where it is clipped.

AnimateWindow supports RTL windows.
ms-help://MS.MSDNQTR.v90.ru/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/animatewindow.htm
но самое смешное не это
только что проверил на XP все работает идеально
на 7 не хочет
сейчас проверю на другой машине с 7
может дело в видеокарте ????
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 16:13
http://msdn.microsoft.com/en-u... 85%29.aspx

The WM_PRINTCLIENT message is sent to a window to request that it draw its client area in the specified device context, most commonly in a printer device context.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
24.08.2011, 16:34  [ТС]
на другой машине где 7 профешенел все робит
на ноуте где 7 максимальная выпендривается

Добавлено через 6 минут
Цитата Сообщение от Deviaphan Посмотреть сообщение
The WM_PRINTCLIENT message is sent to a window to request that it draw its client area in the specified device context, most commonly in a printer device context.
а снизу сылочка смотри также AnimateWindow
http://msdn.microsoft.com/en-u... s.85).aspx
The window procedures for the window and its child windows should handle any WM_PRINT or WM_PRINTCLIENT messages. Dialog boxes, controls, and common controls already handle WM_PRINTCLIENT. The default window procedure already handles WM_PRINT.
ну не поддерживает AnimateWindow WM_PAINT

Добавлено через 5 минут
Ключевое слово

Цитата Сообщение от Deviaphan Посмотреть сообщение
specified device context
а только потом может быть и принтер
Цитата Сообщение от Deviaphan Посмотреть сообщение
most commonly in a printer device context.
чаще всего но не всегда
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 18:58
Цитата Сообщение от ValeryS Посмотреть сообщение
ну не поддерживает AnimateWindow WM_PAINT
Ой, да. Извиняюсь.

BeginPaint и EndPint не вызываешь ведь?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
24.08.2011, 19:51  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
BeginPaint и EndPint не вызываешь ведь?
в mfc то они зачем ???
проблема локализовалась О_о
возникают сие неприятности только на 7 в которой
установлена тема Aero
как убрал так все заработало О_о
закончу класс выброшу сюда
Поможешь протестить?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 19:51
Возможно.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.08.2011, 19:51
Помогаю со студенческими работами здесь

AnimateWindow Плавное передвижение при клике
Не могу сделать плавное появление при нажатие на кнопки, должно появиться окошко GroupBox (их несколько штук 3) 1 в состояние...

регион IP
Доброго времени суток всем! Очередной раз вылетел в никуда по поиску &quot;в регионе Москва&quot; на сайте явно указан телефон с префиксом...

ME Регион
Всем привет Ноутбук: Dell Inspirion 5520 История такова Ноутбук отдавался в сервисный центр для отключения дискретного...

Регион сайта
Всем привет! Проверяют ли яндексоиды достоверность региона после его присвоения. Есть один клиент который сидит в одном регионе, а клиенты...

пропал регион
Добрый день! существует проблема такого плана. Сайту несколько лет (пара). В топе по многим запросам, в ЯКе есть, в Яндекс.Адресах....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru