MASM32编程实现窗口渐入渐出效果
因为工作太忙,好久没写程序代码了,不过编写程序的乐趣令我乐此不疲。
天天跟电脑打交道,一忙起来就忘了休息,弄得眼睛都花了~
为了保护眼睛,偶决定写一个定时强制休息的程序~
虽然现在这类程序已有不少,不过DIY一下还是不错的~
先考虑实现倒计时提示窗口,打算让该窗口渐入渐出~
这里用封装在user32.dll中的API函数AnimateWindow来实现。
函数原型为:
- BOOLAnimateWindow(
- HWNDhwnd,//指定产生动画窗口的句柄;
- DWORDdwTime,//指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒;
- DWORDdwFlags//指定动画类型。这个参数可以是一个或多个标志的组合。
- );
dwFlags有效值::
AW_SLIDE:使用滑动类型。缺省为滚动类型。使用AW_CENTER标志时被忽略;
AW_ACTIVATE:激活窗口。在使用了AW_HIDE标志后不能使用这个标志;
AW_BLEND:实现淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志;
AW_HIDE:隐藏窗口,缺省则显示窗口;
AW_CENTER:若使用了AW_HIDE标志,则使窗口向内重叠,即收缩窗口;若未使用AW_HIDE标志,则使窗口向外扩展,即展开窗口;
AW_HOR_POSITIVE:自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略;
AW_VER_POSITIVE:自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略;
AW_VER_NEGATIVE:自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略;
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。
注:
如果
1、窗口使用了窗口边界;
2、窗口已经可见仍要显示窗口;
3、窗口已经隐藏仍要隐藏窗口。
函数调用将失败。
演示代码(下载地址:http://download.csdn.net/source/636309):
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;FileName:AninWin.asm
;Author:PurpleEndurer
;Functiion:DemothewaytouseAnimateWindow()
;DevEnv:WinXPSP2+MASM32v7
;log
;------------------------------
;2008-09-18Created!
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.586
.modelflat,stdcall
optioncasemap:none
;------------------
incbothmacroincl
included:/masm32/include/incl.inc
includelibd:/masm32/lib/incl.lib
endm
included:/masm32/include/windows.inc
incbothkernel32
incbothuser32
incbothgdi32
incbothcomctl32
incbothshell32
;prototypes
DlgProcPROTO:HWND,:UINT,:WPARAM,:LPARAM
;.const
IDD_dlgSetStateequ1000
.data
g_szAnimWindb"AnimateWindow",0
g_szUser32Dlldb"user32.dll",0
.data?
hInstanceHINSTANCE?
pAnimateWindowDD?
.code
start:
invokeGetModuleHandle,NULL
mov[hInstance],eax
invokeDialogBoxParam,[hInstance],IDD_dlgSetState,NULL,OFFSETDlgProc,NULL
invokeExitProcess,NULL
invokeInitCommonControls
DlgProcprochWnd:HWND,wMsg:UINT,lParam:LPARAM,wParam:WPARAM
.ifwMsg==WM_INITDIALOG
;---获取AnimateWindow()地址
invokeSendMessage,[hWnd],WM_SETTEXT,NULL,OFFSETg_szAnimWin
invokeGetModuleHandle,OFFSETg_szUser32Dll
invokeGetProcAddress,eax,OFFSETg_szAnimWin
mov[pAnimateWindow],eax
;---如果取得地址,则渐入显示对话框窗口
.if[pAnimateWindow]
pushAW_BLEND+AW_ACTIVATE
push400h;time
push[hWnd];windowHandle
call[pAnimateWindow]
.endif
invokeInvalidateRect,hWnd,0,TRUE
.elseifwMsg==WM_CLOSE
;---如果取得地址,则渐出关闭对话框窗口
.if[pAnimateWindow]
pushAW_BLEND+AW_HIDE
push400h
push[hWnd]
call[pAnimateWindow]
.endif
invokeEndDialog,[hWnd],NULL
.else
moveax,FALSE
ret
.endif
xoreax,eax
ret
DlgProcendp
endstart
;;;;;;;;;;;
;rsrc.rc
;;;;;;;;;;;
#include"/masm32/include/resource.h"
#defineIDC_lblAppInfo3009
#defineIDD_dlgSetState1000
IDD_dlgSetStateDIALOG10,10,120,114
STYLE0x0004|DS_CENTER|WS_CAPTION|DS_SYSMODAL|WS_SYSMENU|WS_VISIBLE|WS_OVERLAPPED|DS_MODALFRAME|DS_3DLOOK
CAPTION"GetColor"
FONT9,"宋体"
{
LTEXT"purpleendurer@163.com/n2004.04.02广西河池/n开发环境:MASM32V8",IDC_lblAppInfo,0,75,105,30,WS_DISABLED+SS_CENTER
}
MASM32编程实现窗口渐入渐出效果相关推荐
- unity2D:对话框Dialog——弹出、渐入渐出
注:该文为学习笔记,具体请看b站upMichael-Studio的unity教程2D入门:13敌人Enemy! 环境:unity2020.3 本章目标:制作游戏中的弹出窗口 Panel 对话框肯定是一 ...
- 微信小程序-实现元素渐入渐出动画效果-封装方法
开端 之前一直使用堪称"万能"的jQuery处理用户交互的动画,近日开发微信小程序,微信小程序高度限制的语法和功能使开源函数可谓对其"无能为力". 那没办法,只 ...
- Taro React组件使用(1) —— Overlay 遮罩层【渐入渐出动画遮罩层】
Overlay 遮罩层 提供一个简单的 Overlay 遮罩层,在页面上的层级为 1026; 1. 使用指南 在 Taro 文件中引入组件,将组件放入src下的components文件夹中 impor ...
- matlab 柱面投影,图像拼接(不投影到柱面)(渐入渐出融合) matlab程序
1,先拍摄一组图片,比如两幅图:A.B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里 ...
- 图像拼接(一):柱面投影+模板匹配+渐入渐出融合
这种拼接方法的假设前提是:待拼接的两幅图像之间的变换模型是平移模型,即两幅图像同名点位置之间只相差两个未知量:ΔxΔx 和ΔyΔy,自由度为2,模型收得最紧.所以只有所有图像都是用同一水平线或者同一已 ...
- 图像拼接(二):柱面投影+模板匹配+渐入渐出融合(GPU版)
本篇博客的代码修改自图像拼接(一):柱面投影+模板匹配+渐入渐出融合.新的代码充分利用了OpenCV库函数的GPU版本.在一些方法中使用了GpuMat这一数据结构,它是Mat的替代.Mat运行在CPU ...
- 图像拼接(不投影到柱面)(渐入渐出融合) matlab程序
1,先拍摄一组图片,比如两幅图:A.B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里 ...
- 【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现
一个简单的黑屏动画,用于2D项目,效果类似慢眨眼.进/出房间时切换场景的衔接过渡. 这种效果的实现方式其实蛮多的,我能想到的包括用shader,用一张全黑Sprite覆盖屏幕,或者直接做成一个UI. ...
- CSS3实现div滑入滑出效果(从下往上)
1,首先需要用的是 CSS3的 target 选择器,配合a标签指定id选择器切换目标元素,用于选取当前活动的目标元素. 2,CSS3 的 transition 动画,这里不做详细介绍 看一下效果图: ...
最新文章
- 使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置
- 新浪博客服务器维护,服务器安全维护
- python求数组最大值_Python算法与数据结构--求所有子数组的和的最大值
- docker系列之安装配置-2
- Linux底层开发之四书五经
- Harris角点检测算法 1
- 基于javaweb宠物领养平台管理系统设计和实现
- matlab 中norm函数的用法
- UPS 笔记 (逆变电源 DSP)
- winhex使用简介
- Android Studio 单独启动安卓模拟器教程
- 常用三极管的区别 9012 9013 9014 9015 8550 8050
- sqlserver 误删除数据恢复
- 安卓手机无线投屏电脑 手机电脑同屏
- PHPstudy实战安装帝国CMS
- 企业微信公众号运营技巧有哪些
- c语言记录键盘敲击次数,【转】你知道一天敲键盘的敲击次数能达到多少么
- Java基础练习:用户在控制台输入一个年份,判断该年份是平年还是闰年
- 一开机checkingmedia_电脑开机出现checking media怎么办?
- 数据结构上机——希尔排序(含监视哨版本)
热门文章
- CISA提醒修复Zoho ManageEngine RCE漏洞
- Anolis OS8.6QU1通过cephadm部署ceph17.2.0分布式块存储(三)添加其它主机和添加mgr节点
- 在WPSOffice中打造自己的素材库(转)
- 【记录】Ubuntu实现逻辑卷的删除
- 未知性与好奇心——使用技巧
- php 画low poly,用canvas 实现个图片三角化(LOW POLY)效果_javascript技巧
- 设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域。
- 秘而不宣的经商十诀!
- saiku+kettle整合(八)saiku展示改善
- 手把手教你在浏览器上安装油猴