經過上面兩篇的界面開發,我們使用Windows的Hook技術,成功的將系統中的窗體的消息截 取,並添加了自己的事件處理程序,這篇文章就是通過我們對這些消息的處理的第一步,設置 窗體的樣式和窗體的Region。
Region對於窗體來說是一個非常重要的概念,他就是Windows分配給窗體顯示的區域,所以 ,我們第一步就是根據我們的需要設計我們的窗體區域。而對於Windows窗體區域的設置, WndProc中的STYLECHANGED,SHOWWINDOW,SIZE,WINDOWPOSCHANGED都有可能用到。這些方法都 對窗體的樣式或者窗體的大小就行了修改,所以我們也要對這幾個消息進行處理。
首先我們創建一個類用來設置窗體的顯示,名稱為SkinAppearance.cs,在這個文件中我添 加了一個方法,叫做SetRegion,並且參數設置成為我們的窗體SkinningForm。SetRegion的代 碼如下:
/// <summary>
/// Set SkinningForm Region
/// </summary>
/// <param name="from">form to set region</param>
public void SetRegion(SkinningForm form)
{
// Check Form
if (form == null)
{
return;
}
// Get Form Size
Size size = form.Size;
// Set Color Size
Size cornerSize = new Size(90, 90);
// Create Region Handle
IntPtr hRegion = NativeMethod.CreateRoundRectRgn(0, 0, size.Width + 1, size.Height + 1, cornerSize.Width, cornerSize.Height);
Region region = Region.FromHrgn(hRegion);
// Set Region
form.Region = region;
region.ReleaseHrgn(hRegion);
}
這樣我們就設置了我們的窗體樣式,其中cornerSize我設置的比較大,這樣顯示的效果比較 明顯。顯示的窗體如下:
這樣的顯示比較難看,這是因為我們還沒有對窗體進行其他的繪畫。當然我們也可以通過這 個方法對窗體的顯示進行其他的操作。下一篇將使用GDI+對窗體進行繪畫,主要對窗體的邊框 進行設計。