[VB6] Forme des form (jeux de mot de haut niveau je sais :D )

Forme des form (jeux de mot de haut niveau je sais :D ) [VB6] - VB/VBA/VBS - Programmation

Marsh Posté le 09-01-2004 à 00:12:56    

Bijour , c'était pour savoir si il était possible de créer des formes autres que rectangulaire , ou tout du moins un espace de travail sur lequel on puisse poser des controles ? un truc qui puisse etre ovale par exemple  
 
merci d avance \o/

Reply

Marsh Posté le 09-01-2004 à 00:12:56   

Reply

Marsh Posté le 11-01-2004 à 17:59:28    

nan, je crois pas ...
enfin si je me trompe ...

Reply

Marsh Posté le 11-01-2004 à 19:43:19    

apone a écrit :

Bijour , c'était pour savoir si il était possible de créer des formes autres que rectangulaire , ou tout du moins un espace de travail sur lequel on puisse poser des controles ? un truc qui puisse etre ovale par exemple  
 
merci d avance \o/


 
C'est possible, en jouant avec l'API Windows (en tous cas, j'ai lu ça dans un "Programmez!" il y a fort longtemps).


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 11-01-2004 à 19:49:43    

printf a écrit :


 
C'est possible, en jouant avec l'API Windows (en tous cas, j'ai lu ça dans un "Programmez!" il y a fort longtemps).


oui !
C'est pas tres compliqué à mettre en oeuvre. Va voir sur des sites comme vbfrance.com pour avoir des explications et des exemples...


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 11-01-2004 à 19:51:19    

TotalRecall a écrit :


oui !
C'est pas tres compliqué à mettre en oeuvre. Va voir sur des sites comme vbfrance.com pour avoir des explications et des exemples...


 
Et ici : http://www.c2i.fr/code.aspx?IDCode=478 :D


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 11-01-2004 à 23:55:40    

Merciiiiiiiiiiiiiii beaucoup !

Reply

Marsh Posté le 12-01-2004 à 00:05:05    

rha c'est sous vb.net apparement :/

Reply

Marsh Posté le 12-01-2004 à 00:10:58    

apone a écrit :

rha c'est sous vb.net apparement :/  


 
Effectivement.
Mais c'est faisable avec VB6 (ça j'en suis sûr et certain). Tu devrais pouvoir trouver comment faire avec MSDN Library ou le site web indiqué par TotalRecall.


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 12-01-2004 à 01:16:33    

Code :
  1. Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
  2. Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
  3. Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  4. Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  5. Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  6. Public Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Coord, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
  7. Public Declare Function CreatePolyPolygonRgn Lib "gdi32" (lpPoint As Coord, lpPolyCounts As Long, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
  8. Dim CurRgn, TempRgn As Long  ' Region variables
  9. Private Const RGN_DIFF = 4
  10. Public Function AutoFormShape(bg As Form, transColor)
  11. Dim X, Y As Integer
  12. Dim success As Long
  13. CurRgn = CreateRectRgn(0, 0, bg.ScaleWidth, bg.ScaleHeight)
  14. While Y <= bg.ScaleHeight
  15.     While X <= bg.ScaleWidth
  16.         If GetPixel(bg.hdc, X, Y) = transColor Then
  17.             TempRgn = CreateRectRgn(X, Y, X + 1, Y + 1)
  18.             success = CombineRgn(CurRgn, CurRgn, TempRgn, RGN_DIFF)
  19.             DeleteObject (TempRgn)
  20.         End If
  21.         X = X + 1
  22.     Wend
  23.         Y = Y + 1
  24.         X = 0
  25. Wend
  26. success = SetWindowRgn(bg.hwnd, CurRgn, True)
  27. DeleteObject (CurRgn)
  28. End Function
  29. ' Utilisation (dans le form)
  30. ' Call AutoFormShape(Me, RGB(255, 0, 255))

Reply

Marsh Posté le 12-01-2004 à 01:16:48    

c'est possible sous VB6, je l'a déjà fait.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed