Click here to Skip to main content
12,825,921 members (35,606 online)
Rate this:
Please Sign up or sign in to vote.
See more: VB 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 11:17am
Updated 22-Jun-10 7: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
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170308.1 | Last Updated 10 Sep 2011
Copyright © CodeProject, 1999-2017
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