How to discard the default animation when AP launched

 
WinCE在开启程序的时候会有主窗口从屏幕中间逐渐扩大至整个屏幕的过程,这是Microsoft好心开了一个Animation的效果,如果需要把此效果关闭,共有以下几种方法:
 
1、 修改注册表( SDI Dialog :: DoModal 均适用)
这种方法无需考虑窗口是SDI还是Dialog,因为它是从系统自身的层面上去解决的。用此方法更改后,在该系统平台上运行的所有应用程序除了个别有特别设置的,都会统一地打开或关闭该效果。
具体的注册表项为:
       [HKEY_LOCAL_MACHINE/SYSTEM/GWE] Animate =dword: 0
       0为关闭Animation效果,1为打开。
注意:此方法可用于解决当程序中用CreateProcess或其他函数调用系统程序时,animaiton效果无法用下面几种方法消除的问题。
 
2、 SetWindowLong 函数( SDI Dialog :: DoModal 均适用)
在全屏语句前添加
::SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,WS_EX_NOANIMATION);
注意:如果是SDI窗口,则要确保在该语句前窗口尚未显示,即CreateWindow语句中不能有WS_VISIBLE参数,若要显示窗体则可在全屏语句后用ShowWindow显示。
 
3 SDI 窗体( MainFrame ChildView
1 在Overwrite PreCreateWindow函数中加入cs.dwExStyle = WS_EX_NOANIMATION;这样一句话,就可以了!
2 用Win32编程,解决办法是在InitInstance函数中使用如下代码:
hWnd = CreateWindowEx(WS_EX_NOANIMATION , szWindowClass, szTitle, WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
替换
hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
这样就可以了。
 
4、 Dialog :: DoModal 创建的窗口
由于Dialog.DoModal的时候是不调用PreCreateWindow,所以没法重载PreCreateWindow,但是在rc文件中可以看到EXSTYLE WS_EX_APPWINDOW | 0x80000000L这样一行,所以我们在后面添加 | WS_EX_NOANIMATION,这样保存rc,重新编译运行,就可以发现Dialog是一下子显示出来,没有动画效果了。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值