VCの水波効果

1642 ワード

ダウンロード先:http://files.cnblogs.com/rogee/WaveObject.rar
水波効果のあるプログラムがずっと羨ましいですが、いかんせんレベルが悪いです.自分では書けないです.せっかく友達に会ったプログラムにこの効果があって、彼にソースコードを要求しました.それは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();

}