Показать сообщение отдельно
Старый 15.01.2008, 13:16   #10
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Ответ: "FastImage"+"Alt+Tab"="MAV"

Ну установи тогда на окно блица коллбэк и делай его поверх всех (HWND_TOPMOST) с помощью WINAPI - SetWindowPos. Заодно можешь отправлять приложение поспать когда оно теряет фокус.
Исходник на PureBasic:
Global BlitzWindow.l
Global BlitzCallback.l
Global BlitzActived.b

Procedure WindowCallback(Window, Message, WParam, LParam)
      Select Message
            Case #WM_KILLFOCUS
                  BlitzActived = 0
                  SetWindowPos_(Window, #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOMOVE|#SWP_NOSIZE)
                  
            Case #WM_SETFOCUS
                  BlitzActived = 1
                  
            Case #WM_ACTIVATE
                  BlitzActived = WParam & 1
                  
      EndSelect
      ProcedureReturn CallWindowProc_(BlitzCallback, Window, Message, WParam, LParam)
EndProcedure

ProcedureDLL DetachProcess(Instance)
      SetWindowLong_(BlitzWindow, #GWL_WNDPROC, BlitzCallback)
EndProcedure

ProcedureDLL SetCallback(Window)
      BlitzWindow = Window
      BlitzCallback = SetWindowLong_(Window, #GWL_WNDPROC, @WindowCallback())
      SetWindowPos_(Window, #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOMOVE|#SWP_NOSIZE)
      BlitzActived = 1
EndProcedure

ProcedureDLL IsActived()
      ProcedureReturn BlitzActived
EndProcedure
Юзать на блице так
Graphics3D(800, 600, 32, 2)
SetBuffer(BackBuffer())

SetCallback(SystemProperty("AppHWND"))

Camera = CreateCamera()

Repeat
	If IsActived()
		RenderWorld() 
		Flip()
	Else
		Delay(20)
	EndIf
Until KeyDown(1)
End
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Platon за это полезное сообщение:
avel (15.01.2008), HolyDel (15.01.2008), sSwSs (15.01.2008), tormoz (15.01.2008)