![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильное востановление окна [Delphi, Windows]
Zak3D[@Tm] © (2004-07-24 22:15:00)Мне необходимо востановить окно (сознанное на API), после его сворачивания. На окне выводится сцена на DirectDraw, как это правильно сделать? Знаю, что нужно узать ф-цию (RestoreALL) и в ней востанавливать все объекты, но где эту замую ф-цию обрабатывать? В какой обработчик её поместить?
Zak3D[@Tm] (2004-07-24 23:26:00) [21]Даже не так, а WM_SHOWWINDOW
Zak3D[@Tm] (2004-07-24 23:23:00) [22]cyborg
Тогда уж WM_SHOW... ( Я же сказал API)
cyborg (2004-07-24 23:15:00) [23]Если форма Дельфи, то OnShow.
Zak3D[@Tm] (2004-07-24 22:58:00) [24]Спасибо, но я немного не то просил, вот какая проблеам, куда вообще поместить обработчик этого события??? Нажал я alt+tab, окно свернулось, а как его востановить???
cyborg (2004-07-24 22:41:00) [25]
> Достаточно один раз в начале. Освобождения я не делал. Ну
> вроде глюков не было, не только у меня не было :)
Просто столкнуллся с проблемой, что в некоторых случаях экранное разрешение не восстанавливается, плюнул на всё и сделал переинициализацию.
Белый Крыс (2004-07-24 22:36:00) [26]Достаточно один раз в начале. Освобождения я не делал. Ну вроде глюков не было, не только у меня не было :)
Белый Крыс (2004-07-24 22:30:00) [27]Скажем, в начале рендера, или вообще при рендери проверяй результат функций. Пример:
hRet : HRESULT;
...
hRet := FBackGround.BltFast(0, 0, FBack, @Rec, DDBLTFAST_WAIT);
if hRet = DDERR_SURFACELOST then //то восстанавливаем
FPrimarySurface._Restore;
FSurface1 := DDLoadBitmap(FDirectDraw, 'objs.bmp', 0, 0);
DDSetColorKey(FObjs, rgb(255, 0, 255));
FSurface := CreateSurf(FDirectDraw, ScrWidth, ScrHeight);
...
cyborg (2004-07-24 22:28:00) [28]Я длеаю освобождение граф ресурсов и инициализацию заново, так надёжнее :), а без этого глюки всякие, в которых, скорей всего я виноват.