标签:it生活
使用c#语言,如何实现像搜狗输入法以及灵格斯翻译软件的屏幕右下角弹出式广告呢?
c#code如下:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
System.Runtime.InteropServices;
namespace
dataSource
{
/// <summary>
/// 枚举,描述消息窗口加载的形式
/// </summary>
public
enum
LoadMode
{
/// <summary>
/// 警告
/// </summary>
Warning,
/// <summary>
/// 错误
/// </summary>
Error,
/// <summary>
/// 提示
/// </summary>
Prompt
}
/// <summary>
/// 消息提示窗口
/// <summary>
/// 消息提示窗口
/// </summary>
public
partial
class
FormMessageBox : Form
{
/// <summary>
/// 构造方法
/// </summary>
public
FormMessageBox()
{
InitializeComponent();
}
#region ***********************字 段***********************
/// <summary>
/// 窗体加载模式
/// </summary>
private
static
LoadMode FormMode = LoadMode.Prompt;
/// <summary>
/// 显示的消息正文
/// </summary>
private
static
string
ShowMessage =
null
;
/// <summary>
/// 关闭窗口的定时器
/// </summary>
private
Timer Timer_Close =
new
Timer();
[DllImportAttribute(
"user32.dll"
)]
private
static
extern
bool
AnimateWindow(IntPtr hwnd,
int
dwTime,
int
dwFlags);
// 该函数可以实现窗体的动画效果
public
const
Int32 AW_HOR_POSITIVE = 0x00000001;
// 自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略
public
const
Int32 AW_HOR_NEGATIVE = 0x00000002;
// 自右向左显示窗口。当使用了 AW_CENTER 标志时该标志被忽略
public
const
Int32 AW_VER_POSITIVE = 0x00000004;
// 自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略
public
const
Int32 AW_VER_NEGATIVE = 0x00000008;
// 自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略
public
const
Int32 AW_CENTER = 0x00000010;
// 若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展
public
const
Int32 AW_HIDE = 0x00010000;
// 隐藏窗口,缺省则显示窗口
public
const
Int32 AW_ACTIVATE = 0x00020000;
// 激活窗口。在使用了AW_HIDE标志后不要使用这个标志
public
const
Int32 AW_SLIDE = 0x00040000;
// 使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略
public
const
Int32 AW_BLEND = 0x00080000;
// 使用淡入效果。只有当hWnd为顶层窗口的时候才可以使用此标志
#endregion*************************************************
#region ***********************方 法***********************
/// <summary>
/// 构造方法
/// </summary>
/// <param name="loadMode">加载模式</param>
/// <param name="message">消息正文</param>
public
static
void
Show(LoadMode loadMode,
string
message)
{
FormMode = loadMode;
ShowMessage = message;
FormMessageBox box =
new
FormMessageBox();
box.Show();
}
#endregion*************************************************
#region ***********************事 件***********************
/// <summary>
/// 窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
FormMessageBox_Load(
object
sender, EventArgs e)
{
this
.lblTitle.Text =
"提示"
;
if
(FormMode == LoadMode.Error)
{
this
.lblTitle.Text =
"错误"
;
this
.plShow.BackgroundImage = global::dataSource.Properties.Resources.error;
// 更换背景
}
else
if
(FormMode == LoadMode.Warning)
{
this
.lblTitle.Text =
"警告"
;
this
.plShow.BackgroundImage = global::dataSource.Properties.Resources.warning;
// 更换背景
}
else
{
this
.plShow.BackgroundImage = global::dataSource.Properties.Resources.Prompt;
// 更换背景
}
this
.lblMessage.Text = ShowMessage;
int
width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
int
height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
int
top = height - 35 -
this
.Height;
int
left = width -
this
.Width - 5;
this
.Top = top;
this
.Left = left;
this
.TopMost =
true
;
AnimateWindow(
this
.Handle, 500, AW_SLIDE + AW_VER_NEGATIVE);
//开始窗体动画
this
.ShowInTaskbar =
false
;
Timer_Close.Interval = 4000;
Timer_Close.Tick +=
new
EventHandler(Timer_Close_Tick);
Timer_Close.Start();
}
/// <summary>
/// 关闭窗口的定时器响应事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
Timer_Close_Tick(
object
sender, EventArgs e)
{
Timer_Close.Stop();
this
.Close();
}
/// <summary>
/// 窗口已经关闭
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
{
AnimateWindow(
this
.Handle, 500, AW_SLIDE + AW_VER_POSITIVE + AW_HIDE);
Timer_Close.Stop();
Timer_Close.Dispose();
}
/// <summary>
/// 鼠标移动在消息框上
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
plShow_MouseMove(
object
sender, MouseEventArgs e)
{
this
.Timer_Close.Stop();
}
/// <summary>
/// 鼠标移动离开消息框上
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
plShow_MouseLeave(
object
sender, EventArgs e)
{
this
.Timer_Close.Start();
}
#endregion*************************************************
c#代码加载模式。
标签:it生活
原文地址:http://7330234.blog.51cto.com/7320234/1560276