Newsgroup: it.comp.lang.visual-basic
Titolo: [VB.NET]- Form , Modifica colore striscia ControlBox

Salve a tutti,
per avere una form circolare ho utilizzato il codice seguente:
 Private Sub FormCircolare()
        'Costruzione di un quadrato
        Me.Size = New Size(Screen.PrimaryScreen.WorkingArea.Height * 0.5,
Screen.PrimaryScreen.WorkingArea.Height * 0.5)
        Dim path As New System.Drawing.Drawing2D.GraphicsPath()
        Dim rect As New Rectangle(0, 0, Me.Width, Me.Height)
        path.AddEllipse(rect)
        Me.Region = New Region(path)
    End Sub
Rimane nella calotta superiore la striscia di colore blu.
La proprietą ControlBox=False
Se imposto il BorderFormStyle=None
Oltre alla striscia sparisce la calotta superiore.
Come č possibile avere la striscia superiore dello stesso colore della Form
?
grazie
giuseppeD

?
Innanzi tutto grazie per il codice ;-)
In cambio provo a suggerire un'idea che potra' sicuramente essere
migliorata, ma pare funzionare.
<codice>
Imports System.Runtime.InteropServices
Public Class CircForm
	Inherits System.Windows.Forms.Form
	Private ReadOnly WM_NCPAINT As Integer = &H85
	Private ReadOnly WM_NCACTIVATE As Integer = &H86
	Private ReadOnly SM_CYCAPTION As Integer = &H4
	Private ReadOnly WM_PAINT As Integer = &HF
	Private ReadOnly WM_ACTIVATE As Integer = &H6
	Private ReadOnly WM_SIZE As Integer = &H5
	Private ReadOnly WM_SETTEXT As Integer = &HC
	Private ReadOnly WM_STYLECHANGED As Integer = &H7D
	<DllImport("user32.dll")> _
	Private Shared Function GetWindowDC(ByVal hWnd As
System.IntPtr) As System.IntPtr
	End Function
[... Windows Form Designer generated code ...]
	Private Sub FormCircolare()
		'Costruzione di un quadrato
		Me.Size = New
Size(Screen.PrimaryScreen.WorkingArea.Height * 0.5, _
		 Screen.PrimaryScreen.WorkingArea.Height * 0.5)
		Dim path As New
System.Drawing.Drawing2D.GraphicsPath()
		path.AddEllipse(Me.ClientRectangle)
		Me.Region = New Region(path)
	End Sub
	Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
		DrawCaption()
		FormCircolare()
	End Sub
	Protected Overrides Sub WndProc(ByRef m As
System.Windows.Forms.Message)
		Select Case m.Msg
			Case Is = WM_NCPAINT, WM_NCACTIVATE, WM_PAINT,
WM_ACTIVATE, WM_SIZE, WM_SETTEXT, WM_STYLECHANGED
				DrawCaption()
			Case Else
				'
		End Select
		MyBase.WndProc(m)
	End Sub
	Private Sub DrawCaption()
		Dim myHDC As System.IntPtr = GetWindowDC(Me.Handle)
		Dim g As Graphics =
System.Drawing.Graphics.FromHdc(myHDC)
		g.FillRectangle(New SolidBrush(Me.BackColor), 0, 0,
Me.Width, Me.Height)
	End Sub
End Class
</codice>
-- 
hth, hal

migliorata, ma pare funzionare.
Lo sapevo che era migliorabile ;-)
Gia' si possono evitare le dichiarazioni delle costanti WM_* e
l'override di WndProc con questo
Protected Overrides Sub OnPaintBackground( _
	ByVal pevent As System.Windows.Forms.PaintEventArgs)
    DrawCaption()
End Sub
E scommetto che e' solo l'inizio ;-)
-- 
ciao, hal

 ha scritto nel messaggio
news:pefs7vstmcbdr5t9d...@4ax.com...

hal.exceptional
Dall'entusiasmo , nei tempi di stacco ,  costruisco un campionario di
oggetti tondi , ovali , ecc.
In situazioni , abbelliscono o alleggeriscono la parte grafica che l'utente
utilizza per lunghi periodi lavorativi.
tanks
giuseppeD