Глюки в DirectX7
(или наблюдения, которые спасут вам много нервов)
1.)
Бывает такое вы запускаете свой проект под DX7 в режиме
Call dd.SetCooperativeLevel(Form1.hWnd, DDSCL_EXCLUSIVE
Or DDSCL_FULLSCREEN Or _
DDSCL_ALLOWREBOOT)
Call dd.SetDisplayMode(Screen.Width, _
Screen.Height, _
Screen.Depth, _
0, _
DDSDM_DEFAULT)
Всё вроде идёт нормально, но только вы кликаете мышой как ваша форма теряет
фокус(несмотря на вышеперечисленные параметры) Такое случается если разрешение
вашего проекта в запущеном(Run) виде равняется разрешению Рабочего Стола( и
не только). Что бы избежать этого сделайте так Допустим разрешение Desktop'а
равно 1024x768x16, и вам для вашего проекта тоже надо 1024x768x16, поэтому перед
тем как ставить строчку (2) поставьте строчку (3)
1 Call dd.SetCooperativeLevel(Form1.hWnd,
_
DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN Or
DDSCL_ALLOWREBOOT)
3 Call dd.SetDisplayMode(640,
_
480, _
8, _
0, _
DDSDM_DEFAULT)
2 Call dd.SetDisplayMode(1024,
_
768, _
16, _
0, _
DDSDM_DEFAULT)
Не думайте так мол "Нафиг мне лишний код" или "Разрешения моего
проекта и Desktop'а не совпадают". Но строчка это не так уж много и вдруг
вы своим проектом решите поделиться с другом, у которого они совпадут.
У кого монитор "щелкает" при переключении разрешения попробуйте запустить
тот же Diablo II, вы услышите два идущих подряд щелчка.
2.)
Если вы в вашем проекте используете свой курсор и убиваете Системный
Старайтесь заменить эти две строки
Win32.ShowCursor False 'Убить системный курсор
Win32.ShowCursor True 'Восстанавливаем курсор
На следующее
Dim lRet As Long, lSystemCursor As Long 'Это
Private Enum Const_SC 'поместите
SC_Hide = -1 'в
SC_Show = 1 'раздел
End Enum 'Declarations
Private Sub Form_Load()
Call SystemCursor(SC_Hide) 'Убить системный курсор
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call SystemCursor(SC_Show) 'Восстанавливаем курсор
Set frmKB3 = Nothing
End
End Sub
Private Sub SystemCursor(SysCursor As Const_SC)
If SysCursor Then
Do
lSystemCursor = lSystemCursor + 1
lRet = ShowCursor(lSystemCursor)
Loop Until lRet >= 0
Else
Do
lSystemCursor = lSystemCursor - 1
lRet = ShowCursor(lSystemCursor)
Loop Until lRet < 0
End If
End Sub
Если вы знаете что нибудь ещё пишите
Дмитрий (LordSatan@mail.ru).
Posted: 22.01.2k1
Autor: Дмитрий Дещенко
<lordsatan@mail.ru>
|