PDA

View Full Version : [VB] form sempre in primo piano


albySR
20-07-2008, 20:22
salve, mi servirebbe aiuto per un programma che sto realizzando. Sono riuscito a mettere il form in primo piano su qualunque tipo di finestra windows però il progetto era stato progettato per restare "on top" in qualunque circostanza cosa che non accade se apro un gioco a tutto schermo che credo che usi direct3d. Come posso fare per metterlo SEMPRE in primo piano???

Ho trovato questo però trovo un errore vicino a: SetParent(Form1.hwnd, mhwnd)

http://forums.msdn.microsoft.com/pt-BR/vbgeneral/thread/37d31233-eaa2-4472-9eec-aa404853eecd/

mi aiutate?

albySR
20-07-2008, 21:19
un aiutino??? è tutto il giorno che ci sto dietro...

© Rocky
21-07-2008, 03:34
Probabilmente nel programma del gioco c'è impostata una funzione che lo fa rimanere sempre in primo piano e mi pare logico, altrimenti il gioco verrebbe nascosto da chissà quante finestre e non avrebbe senso. :D

Non saprei proprio come aiutarti :)

albySR
31-07-2008, 15:53
risolto :D Grazie mille

© Rocky
02-08-2008, 13:21
risolto :D Grazie mille
Sarebbe interessante sapere in che modo hai risolto, questo al fine di aiutare altri utenti con lo stesso problema. :D

Ciao ;)

albySR
02-08-2008, 15:10
Ho utilizzato delle api. Cioè le api mi mettono il form in primo piano su qualunque tipo di finestra (persino sul task manager :eek: ) però nn sul gioco. Allora per sisolvere ho avviato il gioco in modalità finestra.

in un modulo:

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1

nel form questo (credo, nn ricordo bene):

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2


Private Sub Check1_Click()
If Check1.Value = True Then
Timer1.Enabled = True
ElseIf Check1.Value = False Then
res& = SetWindowPos(Me.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
Timer1.Enabled = False
End If
End Sub

Private Sub Timer1_Timer()
res& = SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
End Sub