Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API | Игры с DeferWindowPos

Ответить
Настройки темы
Win32 API | Игры с DeferWindowPos
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


1. можно ли естественным образом отменить DeferWindowPos? Я раскладываю окна и вдруг решил их переразложить, так и не доделав операцию (заканчивать её - пустая трата времени). Конечно, можно загнать заранее неверные параметры в DeferWindowPos, но хочется сделать это более культурно.

2. Что если в цикл с DeferWindowPos два раза засунуть одно и то же окно с разными параметрами? Будет две операции, последняя или неизвестно, какая?

Отправлено: 13:46, 18-03-2005

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


1. Имхо, нет. Даже просто "оборвать посылкой некорректных параметров" - и то неизвестно, как сделать. Судя по документации, память будет утекать и утекать.
2. Последняя, имхо. Если Вы дадите SWP_NOZORDER, то первый засыл не будет иметь для системы смысла. Если не укажите - то
Цитата:
If SWP_NOZORDER is not specified, the system places the window identified by the hWnd parameter in the position following the window identified by the hWndInsertAfter parameter. If hWndInsertAfter is NULL or HWND_TOP, the system places the hWnd window at the top of the Z order. If hWndInsertAfter is set to HWND_BOTTOM, the system places the hWnd window at the bottom of the Z order.
Хотя кто их там знает, чуваков из mS. Можно попробовать милион раз поочерёдно запихивать два онка в одно дерево и посмотреть, есть в конце концов "оборвется" DeferWindowPos - значит, оптимизации там нет 8(
Если вдруг надумаете попробовать - расскажите о результатах, ок?

Отправлено: 21:05, 19-03-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Пример задачи неверных параметров:
Код: Выделить весь код
HWND parent = CreateWindow(..., GetDesktopWindow(), ...);
HWND child = CreateWindow(..., child, ...);

...
HDWP hdwp = BeginDeferWindowPos(...);

hdwp = DeferWindowPos(hdwp, parent, 0, 0, 0, 400, 300, SWP_NOZORDER|SWP_NOMOVE);
hdwp = DeferWindowPos(hdwp, child, 0, 0, 0, 100, 25, SWP_NOZORDER);
// hdwp is always 0 here

...
EndDeferWindowPos(hdwp);
в месте, помеченном комментарием, следуя SDK нужно забыть об hdwp и больше его не использовать. Это работает 100%, началось с того, что я такой глюк заметил.

Отправлено: 10:29, 22-03-2005 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API | Игры с DeferWindowPos

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Win32 API | Hint в StatusBar Ryjka Программирование и базы данных 2 30-07-2006 22:17
Win32 API | Нужна помошь по API функциям! vasika_hk Программирование и базы данных 2 23-05-2006 09:51
Win32 API | Дозвон XCodeR Программирование и базы данных 5 08-04-2006 12:26
Win32 API | Неизвестные функции Savant Программирование и базы данных 9 02-03-2005 10:18
Win32 API | Как разделить радиокнопки? Savant Программирование и базы данных 2 01-03-2005 10:37




 
Переход