因为工作太忙,好久没写程序代码了,不过编写程序的乐趣令我乐此不疲。

天天跟电脑打交道,一忙起来就忘了休息,弄得眼睛都花了~

为了保护眼睛,偶决定写一个定时强制休息的程序~

虽然现在这类程序已有不少,不过DIY一下还是不错的~

先考虑实现倒计时提示窗口,打算让该窗口渐入渐出~

这里用封装在user32.dll中的API函数AnimateWindow来实现。

函数原型为:

  1. BOOLAnimateWindow(
  2. HWNDhwnd,//指定产生动画窗口的句柄;
  3. DWORDdwTime,//指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒;
  4. DWORDdwFlags//指定动画类型。这个参数可以是一个或多个标志的组合。
  5. );

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编程实现窗口渐入渐出效果相关推荐

  1. unity2D:对话框Dialog——弹出、渐入渐出

    注:该文为学习笔记,具体请看b站upMichael-Studio的unity教程2D入门:13敌人Enemy! 环境:unity2020.3 本章目标:制作游戏中的弹出窗口 Panel 对话框肯定是一 ...

  2. 微信小程序-实现元素渐入渐出动画效果-封装方法

    开端 之前一直使用堪称"万能"的jQuery处理用户交互的动画,近日开发微信小程序,微信小程序高度限制的语法和功能使开源函数可谓对其"无能为力". 那没办法,只 ...

  3. Taro React组件使用(1) —— Overlay 遮罩层【渐入渐出动画遮罩层】

    Overlay 遮罩层 提供一个简单的 Overlay 遮罩层,在页面上的层级为 1026; 1. 使用指南 在 Taro 文件中引入组件,将组件放入src下的components文件夹中 impor ...

  4. matlab 柱面投影,图像拼接(不投影到柱面)(渐入渐出融合) matlab程序

    1,先拍摄一组图片,比如两幅图:A.B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里 ...

  5. 图像拼接(一):柱面投影+模板匹配+渐入渐出融合

    这种拼接方法的假设前提是:待拼接的两幅图像之间的变换模型是平移模型,即两幅图像同名点位置之间只相差两个未知量:ΔxΔx 和ΔyΔy,自由度为2,模型收得最紧.所以只有所有图像都是用同一水平线或者同一已 ...

  6. 图像拼接(二):柱面投影+模板匹配+渐入渐出融合(GPU版)

    本篇博客的代码修改自图像拼接(一):柱面投影+模板匹配+渐入渐出融合.新的代码充分利用了OpenCV库函数的GPU版本.在一些方法中使用了GpuMat这一数据结构,它是Mat的替代.Mat运行在CPU ...

  7. 图像拼接(不投影到柱面)(渐入渐出融合) matlab程序

    1,先拍摄一组图片,比如两幅图:A.B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里 ...

  8. 【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现

    一个简单的黑屏动画,用于2D项目,效果类似慢眨眼.进/出房间时切换场景的衔接过渡. 这种效果的实现方式其实蛮多的,我能想到的包括用shader,用一张全黑Sprite覆盖屏幕,或者直接做成一个UI. ...

  9. CSS3实现div滑入滑出效果(从下往上)

    1,首先需要用的是 CSS3的 target 选择器,配合a标签指定id选择器切换目标元素,用于选取当前活动的目标元素. 2,CSS3 的 transition 动画,这里不做详细介绍 看一下效果图: ...

最新文章

  1. 使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置
  2. 新浪博客服务器维护,服务器安全维护
  3. python求数组最大值_Python算法与数据结构--求所有子数组的和的最大值
  4. docker系列之安装配置-2
  5. Linux底层开发之四书五经
  6. Harris角点检测算法 1
  7. 基于javaweb宠物领养平台管理系统设计和实现
  8. matlab 中norm函数的用法
  9. UPS 笔记 (逆变电源 DSP)
  10. winhex使用简介
  11. Android Studio 单独启动安卓模拟器教程
  12. 常用三极管的区别 9012 9013 9014 9015 8550 8050
  13. sqlserver 误删除数据恢复
  14. 安卓手机无线投屏电脑 手机电脑同屏
  15. PHPstudy实战安装帝国CMS
  16. 企业微信公众号运营技巧有哪些
  17. c语言记录键盘敲击次数,【转】你知道一天敲键盘的敲击次数能达到多少么
  18. Java基础练习:用户在控制台输入一个年份,判断该年份是平年还是闰年
  19. 一开机checkingmedia_电脑开机出现checking media怎么办?
  20. 数据结构上机——希尔排序(含监视哨版本)

热门文章

  1. CISA提醒修复Zoho ManageEngine RCE漏洞
  2. Anolis OS8.6QU1通过cephadm部署ceph17.2.0分布式块存储(三)添加其它主机和添加mgr节点
  3. 在WPSOffice中打造自己的素材库(转)
  4. 【记录】Ubuntu实现逻辑卷的删除
  5. 未知性与好奇心——使用技巧
  6. php 画low poly,用canvas 实现个图片三角化(LOW POLY)效果_javascript技巧
  7. 设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域。
  8. 秘而不宣的经商十诀!
  9. saiku+kettle整合(八)saiku展示改善
  10. 手把手教你在浏览器上安装油猴