⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 faderwnd.cpp

📁 基于VC环境下的光驱驱动程序
💻 CPP
字号:
#include "stdafx.h"
#include "FaderWnd.h"

#define ALPHA_STEP 20  //每次减少的透明度数

/////////////////////////////////////////////////////////////////////////////
CFaderWnd::CFaderWnd(CWnd *pWndToFade, UINT nFadeTime/*=500*/, BYTE byAlpha/*=255*/)
{
	m_bMainWnd=FALSE;

	ASSERT(pWndToFade);
	ASSERT_VALID(pWndToFade);
	m_pWndToFade=pWndToFade;
	
	HMODULE hInst = ::LoadLibrary("user32.dll");	
	m_pFun = (LPFUN)::GetProcAddress(hInst, "UpdateLayeredWindow");	
	if (m_pFun==NULL)  //如果操作系统没有提供这个函数
		delete this;
	else
	{
		CRect	rc;
		CPoint	pt(0, 0);
		SIZE	size;
		
		m_pWndToFade->GetWindowRect(rc);
		
		CreateEx(WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOPMOST|WS_EX_TOOLWINDOW, 
			"STATIC", "", WS_POPUP|WS_VISIBLE, rc, AfxGetMainWnd(), 0);
		
		size.cx = rc.Width();
		size.cy = rc.Height();
		pt = rc.TopLeft();
		
		m_Blend.BlendOp = AC_SRC_OVER;			
		m_Blend.BlendFlags = 0;			
		m_Blend.AlphaFormat = 0;	
		m_Blend.SourceConstantAlpha = byAlpha;	
		
		m_pFun(GetSafeHwnd(),
				NULL, 
				NULL, 
				&size, 
				::GetDC(m_pWndToFade->GetSafeHwnd()),				
				&pt, 
				0, 
				&m_Blend, 
				ULW_ALPHA
				);      //调用动态连接库中的函数
			
//		UINT	nElapse = nFadeTime / (byAlpha / ALPHA_STEP);
//		SetTimer(1, nElapse, NULL);
		SetTimer(1,1,NULL);
	}
}


CFaderWnd::~CFaderWnd()
{}


BEGIN_MESSAGE_MAP(CFaderWnd, CWnd)
//{{AFX_MSG_MAP(CFaderWnd)
ON_WM_TIMER()
ON_WM_SETFOCUS()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
void CFaderWnd::OnTimer(UINT nIDEvent) 	
{
	if (m_Blend.SourceConstantAlpha >= ALPHA_STEP)	
	{		
		m_Blend.SourceConstantAlpha -= ALPHA_STEP;  //减少透明度
		m_pFun(GetSafeHwnd(), 
			NULL, 
			NULL, 
			NULL, 
			NULL, 
			NULL, 
			NULL, 
			&m_Blend, 
			ULW_ALPHA);		
	}
	else		
	{
		KillTimer(nIDEvent);
		DestroyWindow();
		if(m_bMainWnd==TRUE)   
	 		AfxGetMainWnd()->SendMessage(WM_CLOSE);
	}	
}

void CFaderWnd::OnSetFocus(CWnd* pOldWnd) 	
{
	if (pOldWnd)
		pOldWnd->SetFocus();
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -