Показать полную графическую версию : Win32 API | Игры с DeferWindowPos
1. можно ли естественным образом отменить DeferWindowPos? Я раскладываю окна и вдруг решил их переразложить, так и не доделав операцию (заканчивать её - пустая трата времени). Конечно, можно загнать заранее неверные параметры в DeferWindowPos, но хочется сделать это более культурно.
2. Что если в цикл с DeferWindowPos два раза засунуть одно и то же окно с разными параметрами? Будет две операции, последняя или неизвестно, какая?
hasherfrog
19-03-2005, 21:05
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(
Если вдруг надумаете попробовать - расскажите о результатах, ок?
Пример задачи неверных параметров:
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%, началось с того, что я такой глюк заметил.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC