Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - form con angoliarrotondati
Forum - Visual Basic 6 - form con angoliarrotondati

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
maurizio74 (Normal User)
Pro


Messaggi: 115
Iscritto: 30/03/2009

Segnala al moderatore
Postato alle 10:37
Mercoledì, 30/09/2009
Salve a tutti mi chiedevo se è possibile realizzare un form
con tutti 4 gli angoli arrotondati.... Grazie per le eventuali risposte

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 15:49
Mercoledì, 30/09/2009
non ho capito bene... prova a vedere se shape creator (che è un programma) ti può servire...

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 16:04
Mercoledì, 30/09/2009
Ciao Maurizio,
prova questo codice del Balena:
Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. ' Dal libro di Francesco Balena "I Trucchi di Viasual Basic 6"
  3. Sub SetWindowShape(ByVal hWnd As Long, ByVal Shape As Long)
  4.     Dim lpRect As Rect
  5.     Dim wi As Long, he As Long
  6.     Dim hRgn As Long
  7.    
  8. ' Legge le dimensioni della Frm in pixel:
  9.     GetWindowRect hWnd, lpRect
  10.     wi = lpRect.Right - lpRect.Left
  11.     he = lpRect.Bottom - lpRect.Top
  12. ' Crea una regione:
  13.     Select Case Shape
  14.         ' Cerchio o ellisse:
  15.         Case 0
  16.             hRgn = CreateEllipticRgn(0, 0, wi, he)
  17.         ' Rettangolo arrotondato:
  18.         Case 1
  19.             hRgn = CreateRoundRectRgn(0, 0, wi, he, 20, 20)
  20.         ' Rombo:
  21.         Case 2
  22.             Dim lpPoints(3) As Pointapi
  23.             lpPoints(0).x = wi \ 2
  24.             lpPoints(0).y = 0
  25.             lpPoints(1).x = 0
  26.             lpPoints(1).y = he \ 2
  27.             lpPoints(2).x = wi \ 2
  28.             lpPoints(2).y = he
  29.             lpPoints(3).x = wi
  30.             lpPoints(3).y = he \ 2
  31.             hRgn = CreatePolygonRgn(lpPoints(0), 4, 1)
  32.         End Select
  33.            
  34. ' Applica la regione alle Frms:
  35.     SetWindowRgn hWnd, hRgn, True
  36.     DeleteObject hRgn
  37.  
  38. End Sub
  39. '------------------------------------------------------
  40. Private Sub Form_Load()
  41. ' Mostra la Frm con i bordi arrotondati
  42. ' Rettangolo arrotondato:
  43.     SetWindowShape Me.hWnd, 1
  44. End Sub
  45.  
  46.  
  47. In Un modulo Bas:
  48.  
  49. Option Explicit
  50. Type Pointapi
  51.     x As Long
  52.     y As Long
  53. End Type
  54. Type Rect
  55.     Left As Long
  56.     Top As Long
  57.     Right As Long
  58.     Bottom As Long
  59. End Type
  60.                
  61. Declare Function CreateEllipticRgn Lib "gdi32" (ByVal x1 As Long, _
  62.     ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Long
  63. Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Pointapi, _
  64.     ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
  65. Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal x1 As Long, _
  66.     ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal x3 As Long, _
  67.     ByVal y3 As Long) As Long
  68. Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, _
  69.     lpRect As Rect) As Long
  70. Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, _
  71.     ByVal hRgn As Long, ByVal bRedraw As Long) As Long
  72. Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long



:k:

PM Quote
Avatar
maurizio74 (Normal User)
Pro


Messaggi: 115
Iscritto: 30/03/2009

Segnala al moderatore
Postato alle 18:43
Giovedì, 01/10/2009
Ciao Louis grazie per la risposta ed anche per la dritta..
tutto sommato potrebbe andarmi anche bene... ho solamente un piccolo problemino
se imposto il form nelle proprietà bordstyle none non riesco a muoverlo mi rimane fisso
lì dove si trova, ma questo vale anche per un form normale... come posso riuscire a solvere questo problema?????? grazie anticipatamente...

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 19:18
Giovedì, 01/10/2009
prova questo codice:
Codice sorgente - presumibilmente VB.NET

  1. Const HTCAPTION = 2
  2. Const WM_NCLBUTTONDOWN = &HA1
  3. Private Declare Function ReleaseCapture Lib "user32" () As Long
  4. Private Declare Function SendMessage Lib "user32" _
  5. Alias "SendMessageA" (ByVal hwnd As Long, _
  6.         ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) _
  7.         As Long
  8.  
  9. Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, _
  10.         Y As Single)
  11.     If Button = 1 Then
  12.         Dim RetVal As Long
  13.         X = ReleaseCapture()
  14.         RetVal = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
  15.     Else
  16.         Unload Me
  17.         ' or what you like better
  18.     End If
  19. End Sub


PM Quote
Avatar
maurizio74 (Normal User)
Pro


Messaggi: 115
Iscritto: 30/03/2009

Segnala al moderatore
Postato alle 19:46
Giovedì, 01/10/2009
Grazie grg mi 6 stato di aiuto....ultima cosa ma se io volessi spostare il form
tramite un button perche' cosi' non lo fa... devo cambiare qualcosa nel codice????
grazie anticipatamente....

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 20:54
Giovedì, 01/10/2009
devi inserire il codice semplicemente nella sub mousedown del commandbutton interessato...

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 8:33
Venerdì, 02/10/2009
Molto interessante il tuo codice GrG, che completa quello postato del Balena, complimenti. :k:

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 10:30
Venerdì, 02/10/2009
Testo quotato

Postato originariamente da Louis:

Molto interessante il tuo codice GrG, che completa quello postato del Balena, complimenti. :k:  



ci terrei a precisare che non l'ho fatto io, ma l'ho trovato semplicemente cercando su google :P

comunque complimenti anche a te collega :D:D

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo