C#调用Windows的API实现窗体动画

在VF、VB、PB的应用中,有些无法通过语言工具本身来完成的或者做得不理想的功能,我们会考虑通过Windows的API来完成。

在那个年代,熟悉API是一个编程者的基本功。那个时候网络信息也不发达,很多资料只能考购买书籍或者自己摸索来获取,每次掌握一个新的API应用内心里都有点小激动。

Powerbuilder数据功能强大,但是界面功能尤其是动画功能比较弱,通过调用Windows的API实现窗体动画比较容易。

声明API调用:

function boolean AnimateWindow ( long hwnd, long dwtime, long dwflags ) library "user32"

声明常量:

constant long  AW_HOR_POSITIVE      = 1
constant long AW_HOR_NEGATIVE =  2
constant long AW_VER_POSITIVE =  4
constant long AW_VER_NEGATIVE = 8
constant long AW_CENTER = 16
constant long AW_HIDE =   65526
constant long AW_ACTIVATE   =  131072
conDAT* ? ?stant long AW_SLIDE = 262144
constant long AW_BLEND = 524288

在窗体的open事件中调用:

long ll_handle
ll_handle = Handle ( This )
Randomize ( 0 )
Choose Case rand ( 6 )
    Case 1
        AnimateWindow ( ll_handle, 1000, AW_SLIDE +  AW_VER_POSITIVE + AW_ACTIVATE )
    Case 2
        AnimateWindow ( ll_handle, 1000, AW_SLIDE +  AW_VER_NEGATIVE+ AW_ACTIVATE )
    Case 3
        AnimateWindow ( ll_handle, 1000, AW_SLIDE +  AW_HOR_POSITIVE +  AW_ACTIVATE )
    Case 4
        AnimateWindow ( ll_handle, 1000, AW_SLIDE +  AW_HOR_NEGATIVE +  AW_ACTIVATE )
    Case 6,5
        AnimateWindow ( ll_handle, 1000, AW_SLIDE +  AW_CENTER + AW_ACTIVATE  )
End Choose

在C#中调用Windows的API来实现动画也一样容易。

引用:

using System.Runtime.InteropServices;

定义常量:

        public const Int32 AW_HOR_POSITIVE = 0x00000001;
        public const Int32 AW_HOR_NEGATIVE = 0x00000002;
        public const Int32 AW_VER_POSITIVE = 0x00000004;
        public const Int32 AW_VER_NEGATIVE = 0x00000008;
        public const Int32 AW_CENTER = 0x00000010;
        public const Int32 AW_HIDE = 0x00010000;
        public const Int32 AW_ACTIVATE = 0x00020000;
        public const Int32 AW_SLIDE = 0x00040000;
        public const Int32 AW_BLEND = 0x00080000;

定义调用:

        [DllImportAttribute("user32.dll")]
        private static extern bool AnimateWindow(IntPtr hwnd,int dwTime,int dwFlags);

调用:

        private void Form1_Load(object sender, EventArgs e)
        {
            //this.FormBorderStyle =0 ;
            Random rand = new Random();
            long LL = rand.Next(1,6);
            label1.Text = "动画演示:"+LL.ToString();
            switch (LL)
            {
                case 1:
                    AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_VER_POSITIVE + AW_ACTIVATE);
                    break;
                case 2:
                    AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_VER_NEGATIVE + AW_ACTIVATE);
                    break;
                case 3:
                    AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_HOR_POSITIVE + AW_ACTIVATE);
                    break;
                case 4:
                    AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_HOR_NEGATIVE + AW_ACTIVATE);
                    break;
                case 5:
                    AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE);
                    break;
                case 6:
                    AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE);
                    break;
            }
        }

效果图

到此这篇关于C#调用Windows的API实现窗体动画的文章就介绍到这了,更多相关C# API实现窗体动画内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C# 动画窗体(AnimateWindow)的小例子

    复制代码 代码如下: using System;using System.Runtime.InteropServices;using System.Windows.Forms; namespace WinFormTitle{    public partial class FormTitle : Form    {        [DllImport("user32.dll", EntryPoint = "AnimateWindow")]        privat

  • c#之滚动字幕动画窗体的实现详解

    提示:运行该程序可双击滚动字幕推出程序.(当然任务管理器也可以...)步骤如下:1.新建窗体,并设置窗体的FormBorderStyle属性为None,且"TransparencyKey"属性为"Control".2.使用1个Label空间,Text任意写,Font等样式自定.3.使用1个Timer空间,设置其Enable为True,Interval设置为100:4.添加Form1的窗体加载事件,代码如下: 复制代码 代码如下: private void Form1

  • c#滚动字幕动画窗体制作步骤

    c#制作的滚动字幕的动画窗体,刚学的一个例子与大家分享一下 1.先打开vs创建一个工程,创建一个窗体应用程序如下图: 2.从工具箱里向窗体添加lable和timer控件,并设置界面内容,如下图: 3.设置窗体的属性,如下图: 4.双击窗体添加Form1_Load事件,在事件函数中添加如下代码: this.timer1.Interval = 10; this.timer1.Enabled = true; this.WindowState = FormWindowState.Maximized; 如

  • c#之利用API函数实现动画窗体的方法详解

    这里主要利用API函数Animate Window实现窗体左右,上下,扩展,淡入滑动或滚动动画效果,步骤如下:1.新建窗体,使用2个GroupBox控件.2.在控件1中添加2个RadioButton控件,并设置Text分别为"滚动窗体","滑动窗体",并使前者Checked设置为True.3.在空间2中添加6个按钮,Text分别为"自左向右动画","自右向左动画","自上向下动画","自下向上动画

  • 使用c++调用windows打印api进行打印的示例代码

    前言 在近期开发的收银台项目中,需要使用打印机进行小票打印,打印流程的时序图如下所示: 在客户的使用过程中,遇到一个问题,如果机器安装了打印机驱动,那么调用厂商提供的 sdk 进行打印的话,会导致出现小票只打印一半的情况,对此,需要绕过厂商 sdk 使用系统的打印才能够解决这一问题. 在 web 端打印中,需要调用浏览器打印 api 进行网页打印.这意味着,之前后端编写的esc/pos无法复用到,同时,前端还得花费精力来编写 html 以及css 来完成打印内容的排版,这无疑增加了复杂度以及工作

  • VBS调用Windows API函数的代码

    那天无意中搜索到一篇<WinCC VBS利用EXCEL调用Windows API函数>的文章,不知道WinCC是什么,Google了一下好像跟西门子自动化有关.WinCC是什么并不重要,重要的是这篇文章提供了VBS调用Windows API的一种思路--EXCEL VBA,一种传说比VB还要VB的语言. 但是那篇文章中的例子都是使用已经写好的EXCEL VBA程序,即首先得存在一个EXCEL文件.我就想,能不能在VBS中通过excel.application对象创建一个包含VBA代码的EXCE

  • python调用windows api锁定计算机示例

    调用Windows API锁定计算机 本来想用Python32直接调用,可是没有发现Python32有Windows API LockWorkStation(); 因此,就直接调用Windows DLL了 复制代码 代码如下: #!/usr/bin/env python#-*- coding:cp936 -*- "调用WindowAPI锁定计算机" import ctypes; dll = ctypes.WinDLL('user32.dll'); dll.LockWorkStation

  • C#中调用Windows API的技术要点说明

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希望给未在C#中使用过API的朋友一点帮助.另外如果安装了Visual Studio .net的话,在C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\Technologies\Interop\PlatformInvo

  • Python 调用 Windows API COM 新法

    Python中调用Win32API 通常都是使用 PyWin32或者ctypes.但要么依赖文件较多,要么用法繁琐. 这里介绍在Python中调用Win32 API 或者COM组件的另一个更好的,功能也更强大的解决方案. 首先需要确保安装的是 32位的Python(2.x 或者 3.x 均可). 下载通用库:win32exts for Python: https://github.com/tankaishuai/win32exts_for_Python 将win32exts.pyd 放入 Pyt

  • Python调用Windows API函数编写录音机和音乐播放器

    功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. 参考代码: ​ 运行界面: ​ 总结 以上所述是小编给大家介绍的Python调用Windows API函数编写录音机和音乐播放器,希望对大家有所帮助!

  • Python调用Windows API函数编写录音机和音乐播放器功能

    功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. 参考代码: ​ 运行界面: ​ 总结 以上所述是小编给大家介绍的Python调用Windows API函数编写录音机和音乐播放器,希望对大家有所帮助!

  • C#调用Win32的API函数--User32.dll

    Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的.有时候我们之直接调用Win32 的API,可以很高效的实现想要的效果. 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace WindowsAPI { class CSharp_

  • 使用asp.net调用谷歌地图api示例

    asp.net调用谷歌地图api,需要注意js引入的先后顺序,复制一下代码即可测试 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title>//在这里要注意js引入的先后顺序 <link href="Mapjs/jquery.ui.base.css" rel="external nofollow" rel="

随机推荐