Click here to Skip to main content
11,712,126 members (64,414 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: Visual-Studio VB.NET
I'm creating an app that is kinda like Adding custom skins for Forms in VB.Net[^] but with way more features.

One thing I'm stuck on is Aerosnap. Is there a way in VB.NET to make Aerosnap work like in Photoshop or iTunes?
Posted 21-Jun-10 10:17am
Edited 22-Jun-10 6:44am

1 solution

Rate this: bad
Please Sign up or sign in to vote.

Solution 1

Imports System.Data

Imports System.Drawing

Imports System.Text

Imports System.Windows.Forms

Imports System.Runtime.InteropServices

Public Class Form1

' Import functions from dwmapi.dll - get this info from the sdk dwmapi.h


Public Shared Sub DwmExtendFrameIntoClientArea(ByVal hWnd As System.IntPtr, ByRef pMargins As Margins)

End Sub


Public Shared Sub DwmIsCompositionEnabled(ByRef IsIt As Boolean)

End Sub

' Create the brush that'll work around the Alpha transparency issue

Private DWMFrame As SolidBrush = New SolidBrush(Color.Black)

Dim BlurBehind As Boolean = False

Dim MaxTrans As Boolean = False

Dim blurect As Boolean = False

' Create an instance of the Margins struct for use in our form

Private inset As Margins = New Margins

' Define the Margins struct - get this from dwmapi.h

Public Structure Margins

Public Left As Integer

Public Right As Integer

Public Top As Integer

Public Bottom As Integer

End Structure

Public Sub New()


' Set the Margins to their default values

inset.Top = 40

inset.Left = 0

inset.Right = 0

inset.Bottom = 0

' Check if DWM is enabled. This is a pretty stupid way to check, since it requires dwmapi.dll to be present anyway...

Dim isit As Boolean = False


If isit Then

' If DWM is enabled, call the function that gives us glass, passing a reference to our inset Margins

DwmExtendFrameIntoClientArea(Me.Handle, inset)


' If DWM isn't enabled, shout it out

MessageBox.Show("DWM isn't enabled")

End If

End Sub

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)


Me.PaintSquare(e, Me.DWMFrame)

End Sub

Private Sub PaintSquare(ByRef e As System.Windows.Forms.PaintEventArgs, ByVal b As SolidBrush)

e.Graphics.FillRectangle(b, 0, 0, Width, inset.Top)

e.Graphics.FillRectangle(b, 0, 0, inset.Left, Height)

' Note the numbers ( -14, -34) are just trial-and-error values, used to fix the glass... try omitting them, you'll get the idea.

e.Graphics.FillRectangle(b, Width - inset.Right - 14, 0, inset.Right, Height)

e.Graphics.FillRectangle(b, 0, Height - inset.Bottom - 34, Width, inset.Bottom)

End Sub

End Class

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 CHill60 335
1 Sergey Alexandrovich Kryukov 244
2 OriginalGriff 230
3 Andy Lanng 160
4 Maciej Los 130
0 CHill60 335
1 Sergey Alexandrovich Kryukov 245
2 OriginalGriff 230
3 Andy Lanng 160
4 Maciej Los 130

Advertise | Privacy | Mobile
Web03 | 2.8.150819.1 | Last Updated 10 Sep 2011
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100