Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 2009
-
1 nov. 2005 à 15:35
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
1 nov. 2005 à 16:27
Bonjour tout le monde,
J'essaye de faire un programme permettant de dessiner sur le wallpaper
(afin de, par exemple diffuser une vidéo ou pleins d'autres choses, mon
but n'est pas de modifier l'écran de fond, avec SetEnvironnement ou
qque chose du genre, c'était trop lent...). J'utilise donc l'API
GetDesktopWindow comme paramètre de GetWindowDC pour récupérer le hDC
du bureau. Jusque là, je n'ai pas de problèmes, la fonction me retourne
un long ressemblant tout à fait à un hDC, j'imagine que c'est le bon.
Lorsque j'essaye de dessiner dessus avec bitblt ou ellipse, rien ne se
passe. Elles me renvoient 1 mais rien n'est dessiner. J'ai essayer
d'actualiser le bureau, d'appeler UpdateWindow, rien n'y fait.
Quelqu'un peut m'aider ?
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 1 nov. 2005 à 16:07
Voila, j'ai ceci dans un module :
Public Declare Function GetDesktopWindow Lib "user32" () As Long
Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Public Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function UpdateWindow Lib "user32" (ByVal hWnd As Long) As Long
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 nov. 2005 à 16:10
ok, je teste ton code.
voici en attendant un exemple de Guid-Api.
çà peut aider....
'This Project needs
'- two timers, interval=100
'- a button
'in general section
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Sub Form_Load()
Timer1.Interval = 100
Timer1.Enabled = True
Timer2.Interval = 100
Timer2.Enabled = True
Command1.Caption = "Draw Text"
End Sub
'This will draw an Ellipse on the active window
Sub Timer1_Timer()
Dim Position As POINTAPI
'Get the cursor position
GetCursorPos Position
'Draw the Ellipse on the Screen's DC
Ellipse GetWindowDC(0), Position.x - 5, Position.y - 5, Position.x + 5, Position.y + 5
End Sub
Sub Command1_Click()
'KPD-Team 1998
'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net
Dim intCount As Integer, strString As String
strString = "Cool, text on screen !"
For intCount = 0 To 30
'Draw the text on the screen
TextOut GetWindowDC(0), intCount * 20, intCount * 20, strString, Len(strString)
Next intCount
End Sub
Private Sub Timer2_Timer()
'Draw the text to the active window
TextOut GetWindowDC(GetActiveWindow), 50, 50, "This is a form", 14
End Sub
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 1 nov. 2005 à 16:14
Oui en fait manifestement, DC(0) retourne une sortie graphique sur
l'écran au dessus de tout, c'est bien mais c'est pas encore ce qu'il me
faut,.. Merci quand même...
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 nov. 2005 à 16:27
çà, c'est sûr que si tu confonds le bureau et le fond d'écran, tu ne pourras avoir que des réponses
impliquant un vieux "merci quand même..."
le bureau est le parent de toutes les fenêtres.
peindre le bureau revient à peindre également les fenêtres qu'il contient.
tu peux lister toutes les fenêtres visibles pour les réduire, mais compare aux jeux qui détruisent le bureau (mitrailleuse, etc...)
les fenêtres visibles sont aussi altérées.
le screensaver... la sphère qui déforme le bureau, c'est pareil. la sphère ne passe pas derrière les fenêtres.