代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace APIDemo
{
public partial class Form1 : Form
{
[StructLayout(LayoutKind.Sequential)]
private struct POINTAPI
{
internal int x;
internal int y;
}
[DllImport("gdi32.dll")]
private static extern IntPtr CreatePolygonRgn(
ref POINTAPI lpPoint,
int nCount,
int nPolyFillMode);
[DllImport("user32.dll")]
private static extern IntPtr SetWindowRgn(
IntPtr hWnd,
IntPtr hRgn,
ref Boolean bRedraw);
public Form1()
{
InitializeComponent();
//创建不规则窗体
POINTAPI[] poin;
poin =new POINTAPI [5];
poin[0].x = 90;
poin[0].y = 90;
poin[1].x = this.Width;
poin[1].y = 0;
poin[2].x = Width ;
poin[2].y = this.Height/2;
poin[3].x = Width / 2;
poin[3].y = Height / 2;
poin[4].x = 0;
poin[4].y = Width;
Boolean flag = true;
IntPtr hRgn= CreatePolygonRgn(ref poin[0],8,1);
SetWindowRgn(this.Handle, hRgn, ref flag );
this.BackColor = Color.BurlyWood;
}
//设置窗体显示状态
[DllImport("user32.dll")]
private static extern int SetWindowPos(
IntPtr hwnd,
int hWndInsertAfter,
int x,
int y,
int cx,
int cy,
int wFlags);
private void Start_Btn_Click(object sender, EventArgs e)
{//始终显示在前面
SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 1);
}
private void button1_Click(object sender, EventArgs e)
{
//最小化始终显示在前面
SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 0);
}
}
}进入讨论组讨论。