//劈成两半打开特效
来源:互联网 发布:超市网络信息化 编辑:程序博客网 时间:2024/06/10 02:45
//劈成两半打开特效
class CCut2Open
{
public:
CCut2Open();
virtual ~CCut2Open();
public:
void SetWindowBmp(int nBmpID,HMODULE hRes);
void Open();
void Close();
private:
HDC m_hThisMemDC;
HBITMAP m_hThisbitmap;
HBITMAP m_hOldThisbitmap;
HDC m_hPrevMemDC;
HBITMAP m_hPrevbitmap;
HBITMAP m_hOldPrevbitmap;
BOOL m_Init;
BOOL m_Opened;
BITMAP m_size;
int m_dist;
};
CCut2Open::CCut2Open()
{
m_hThisMemDC = NULL;
m_hThisbitmap = NULL;
m_hOldThisbitmap = NULL;
m_hPrevMemDC = NULL;
m_hPrevbitmap = NULL;
m_hOldPrevbitmap = NULL;
m_Init = m_Opened =TRUE;
m_dist = 4;
}
CCut2Open::~CCut2Open()
{
if (NULL != m_hThisMemDC )
{
::SelectObject(m_hThisMemDC,m_hOldThisbitmap);
::DeleteDC(m_hThisMemDC);
}
if (NULL != m_hThisbitmap )
{
::DeleteObject(m_hThisbitmap);
}
if (NULL != m_hOldThisbitmap)
{
m_hOldThisbitmap=NULL;
}
if (NULL != m_hPrevMemDC )
{
::SelectObject(m_hPrevMemDC,m_hPrevbitmap);
::DeleteDC(m_hPrevMemDC);
}
if (NULL != m_hPrevbitmap )
{
::DeleteObject(m_hPrevbitmap);
}
if (NULL != m_hOldPrevbitmap)
{
m_hOldPrevbitmap= NULL;
}
m_Init = m_Opened =TRUE;
}
void CCut2Open::Open()
{
if (m_Init)
{
HDC hdc=::GetDC(NULL);
int i = 0,w=0;
int nWidth = (m_size.bmWidth>>1);
int nHeight = m_size.bmHeight;
for ( i = nWidth-m_dist; i>=0; i-=m_dist)
{
w = nWidth - i;
BitBlt(hdc,0,0,i,nHeight,m_hPrevMemDC,w,0,SRCCOPY);
BitBlt(hdc,i,0,w,nHeight,m_hThisMemDC,nWidth - w,0,SRCCOPY);
BitBlt(hdc,nWidth,0,w,nHeight,m_hThisMemDC,nWidth,0,SRCCOPY);
BitBlt(hdc,nWidth + w,0,nWidth-w,nHeight,m_hPrevMemDC,nWidth,0,SRCCOPY);
}
::ReleaseDC(NULL,hdc);
m_Opened = TRUE;
}
}
void CCut2Open::Close()
{
if (m_Init)
{
HDC hdc=::GetDC(NULL);
int i = 0;
int nWidth = (m_size.bmWidth>>1);
int nHeight = m_size.bmHeight;
for ( i = 0;i<=nWidth;i+=m_dist)
{
BitBlt(hdc,0,0,i,nHeight,m_hPrevMemDC,nWidth-i,0,SRCCOPY);
BitBlt(hdc,m_size.bmWidth-i,0,i,nHeight,m_hPrevMemDC,nWidth,0,SRCCOPY);
}
::ReleaseDC(NULL,hdc);
}
}
void CCut2Open::SetWindowBmp(int nBmpID,HMODULE hRes)
{
HDC hdc=::GetDC(NULL);
HMODULE hHandle = AfxGetResourceHandle();
if ( NULL!=hRes)
{
hHandle = hRes;
}
m_hThisbitmap = ::LoadBitmap(hHandle,MAKEINTRESOURCE(nBmpID));
m_hThisMemDC= ::CreateCompatibleDC(NULL);
m_hPrevMemDC= ::CreateCompatibleDC(NULL);
if (NULL != m_hThisbitmap && NULL != m_hPrevMemDC && NULL != m_hThisMemDC)
{
m_hOldThisbitmap = (HBITMAP)::SelectObject(m_hThisMemDC,m_hThisbitmap);
::GetObject(m_hThisbitmap,sizeof(BITMAP),&m_size);
m_hPrevbitmap = ::CreateCompatibleBitmap(hdc,m_size.bmWidth,m_size.bmHeight);
m_hOldPrevbitmap = (HBITMAP)::SelectObject(m_hPrevMemDC,m_hPrevbitmap);
::BitBlt(m_hPrevMemDC,0,0,m_size.bmWidth,m_size.bmHeight,hdc,0,0,SRCCOPY);
m_Init = TRUE;
}
::ReleaseDC(NULL,hdc);
}
CCut2Open open;
open.SetWindowBmp(IDB_BITMAP1,AfxGetResourceHandle());
open.Open();
open.Close();
- //劈成两半打开特效
- 两半爱人
- 页面打开特效
- JavaScript窗体打开特效
- 一种JS实现的广告打开特效
- intel X3100 打开3D特效
- js特效1按钮打开全屏窗口
- Windows Server 2008打开aero特效
- 小技巧: 打开 Metacity 的混合特效
- WIN7 AERO 特效无法打开的解决办法
- 简单动态打开关闭层超酷特效源代码
- 页面打开时加特效(百叶窗什么的....)
- JavaScript特效实例002-定时打开窗口
- JavaScript特效实例015-打开窗口特殊效果
- 三种水桶,等分为两半问题
- 有难度无危险 强制打开Vista Aero特效
- 使用 PopUpManager打开关闭窗体事增加特效
- 打开Win7家庭普通版全部Aero特效
- 和木马的一次搏斗
- 期许
- 关于SWT中tableviewer的初级使用
- 前进,后退
- java 直接连接 access 数据库
- //劈成两半打开特效
- tar
- 精辟的山寨。
- 常用正则表达式
- C语言的主要特点
- [PowerShell教程][09]PowerShell中的数组使用
- 栈
- zz编译内核
- Joomla!和jQuery做AJAX(一)