聚星亭

吾笨笨且懒散兮 急须改之而奋进
posts - 74, comments - 166, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
         一直很羡慕那些有水波效果的程序,可是无奈我水平差劲。自己写不出来,好不容易见一好友发的程序上有这特效边向他索要源码,才得知那是Delphi的一个控件,由于本人对Delphi实在不通,所以很是遗憾。

         忽然想起,曾经在老罗的站点上看到过这样的汇编代码,因此对它有了“不轨之心”,今天在网上参考了好多资料终于将它编译成了一个Lib,写了一个对应的头文件,哈哈,以后我的程序上也可以有这样的特效了。

         这里我给出我改写的ASM源文件以及Rasm的工程文件和编译后的Lib及.h文件,希望大家喜欢。
         
         具体的用法如下:
            1、先加载这个库文件
#include "./WaveObject/WaveObject.h"
#pragma comment(lib, 
"./WaveObject/WaveObject.lib")

            2、通过查看原先的汇编代码我们可以知道,这个库需要先用_WaveInit()初始化。然后在相应的消息函数中调用相应的特效函数就可以了。因此我们根据_WaveInit()的参数来声明两个变量。
WAVE_OBJECT m_WaveObject;
HBITMAP        m_hBitmap;
初始化代码如下:
    m_hBitmap = LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1));        //这里是载入的图片资源
    _WaveInit(&m_WaveObject,GetDlgItem(IDC_STATIC1)->GetSafeHwnd(),m_hBitmap,30,0);    //IDC_STATIC1 是MFC的图片控件ID
    _WaveEffect(&m_WaveObject,1,4,2,180);    // 随便的使用一个特效,具体参数含义见头文件。

添加单击效果的响应
void CBesUnpackDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
    ClientToScreen(
&point);
    GetDlgItem(IDC_STATIC1)
->ScreenToClient(&point);
    _WaveDropStone(
&m_WaveObject,point.x,point.y,2,256);

    CDialog::OnLButtonDown(nFlags, point);
}
至于那个右键切换效果自己琢磨吧,嘿嘿
退出销毁对象的代码如下:
void CBesUnpackDlg::OnClose() 
{
    _WaveFree(
&m_WaveObject);    // 释放水波对象
    CDialog::OnClose();
}

         我还是贴一下测试的效果吧:
                  
库的下载地址:
/Files/besterChen/WaveObject/WaveObject.rar

Feedback

# re: [分享]将老罗的水波纹特效代码编译成了Lib供VC使用[未登录]  回复  更多评论   

2009-09-03 19:20 by missdeer
TortoiseSVN的About对话框就有这个效果,人家用VC写的,还是开源的

# re: [分享]将老罗的水波纹特效代码编译成了Lib供VC使用  回复  更多评论   

2009-09-04 08:23 by Condor
不错,支持下.

# re: [分享]将老罗的水波纹特效代码编译成了Lib供VC使用  回复  更多评论   

2009-09-04 20:57 by 迷途流浪
不错,以后界面编程我就向你讨教了哈哈.

# re: [分享]将老罗的水波纹特效代码编译成了Lib供VC使用  回复  更多评论   

2010-09-16 01:54 by 陈超
我没法设置图片的显示的位置

# re: [分享]将老罗的水波纹特效代码编译成了Lib供VC使用  回复  更多评论   

2010-09-16 01:55 by QQ:361062263
能不能教我怎样让它显示在指定的位置啊 呵呵 我的QQ361062263 谢谢

# re: [分享]将老罗的水波纹特效代码编译成了Lib供VC使用  回复  更多评论   

2016-03-08 10:28 by 159295556898
有问题请教 大师

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理