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

📄 baiyedlg.cpp

📁 自己做的一个wince图形特效
💻 CPP
字号:
// baiyeDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "baiye.h"
#include "baiyeDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CbaiyeDlg 对话框

CbaiyeDlg::CbaiyeDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CbaiyeDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CbaiyeDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CbaiyeDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
	ON_WM_SIZE()
#endif
	//}}AFX_MSG_MAP
	ON_CBN_SELCHANGE(IDC_CMB_STYLE, &CbaiyeDlg::OnCbnSelchangeCmbStyle)
	ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()


// CbaiyeDlg 消息处理程序

BOOL CbaiyeDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标
ModifyStyle(WS_CAPTION,0,0); 
SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0); 
	// TODO: 在此添加额外的初始化代码
	CComboBox *pCmbStyle=(CComboBox*)GetDlgItem(IDC_CMB_STYLE);
	pCmbStyle->AddString(_T("水平向右扫描"));
	pCmbStyle->AddString(_T("水平向左扫描"));
	pCmbStyle->AddString(_T("水平百叶窗"));
	pCmbStyle->AddString(_T("垂直百叶窗"));
	
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CbaiyeDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
	if (AfxIsDRAEnabled())
	{
		DRA::RelayoutDialog(
			AfxGetResourceHandle(), 
			this->m_hWnd, 
			DRA::GetDisplayMode() != DRA::Portrait ? 
			MAKEINTRESOURCE(IDD_BAIYE_DIALOG_WIDE) : 
			MAKEINTRESOURCE(IDD_BAIYE_DIALOG));
	}
}
#endif


void CbaiyeDlg::OnCbnSelchangeCmbStyle()
{
	// TODO: 在此添加控件通知处理程序代码
	CDC memdc;
	CBitmap m_bitmap;
	int width;
	int height;
	CBitmap *pOldBmp=NULL;
	CComboBox *pCmbStyle=(CComboBox*)GetDlgItem(IDC_CMB_STYLE);
	//得到位图
	m_bitmap.LoadBitmapW(IDB_BITMAP1);
	//获得绘图环境资源
	CDC *pDC=new CClientDC(this);
	memdc.CreateCompatibleDC(pDC);
	pOldBmp=memdc.SelectObject(&m_bitmap);
	//获取位图大小信息
	BITMAP bm;
	m_bitmap.GetBitmap(&bm);
	width=bm.bmWidth;
	height=bm.bmHeight;

	pDC->FillSolidRect(0,0,width,height,RGB(255,255,255));
	int nIndex=pCmbStyle->GetCurSel();
	switch(nIndex)
	{
	case 0:
		{
			for(int i=0;i<width;i++)
			{
				pDC->BitBlt(i,0,1,height,&memdc,i,0,SRCCOPY);
				//Sleep(1);
			}
		}
		break;

	case 1:
		for(int i=width-1;i>=0;i--)
		{
			pDC->BitBlt(i,0,1,height,&memdc,i,0,SRCCOPY);
		}
		break;

	case 2:
		{
			int num=width/20;
			int i=0,j;
			for(i=0;i<20;i++)
			{
				j=0;
				while(j<num+1)
				{
					pDC->BitBlt(j*20+i,0,1,height,&memdc,j*20+i,0,SRCCOPY);
					//Sleep(1);
					j++;
				}
				//Sleep(1);
			}
		}
		break;
	case 3:
		{
			int num=height/20;
			int i=0,j;
			for(;i<20;i++)
			{
				for(j=0;j<num+1;j++)
				{
					pDC->BitBlt(0,j*20+i,width,1,&memdc,0,j*20+i,SRCCOPY);
					Sleep(1);
				}
			//	Sleep(1);
			}
		}
		break;
	default:
		break;
	}
	memdc.SelectObject(pOldBmp);
	m_bitmap.DeleteObject();
	memdc.DeleteDC();
	delete pDC;
	pDC=NULL;
}

void CbaiyeDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
// TODO: 在此添加控件通知处理程序代码
	CDC memdc,memdc1;
	CBitmap m_bitmap,a_bitmap;
	int width;
	int height;
	CBitmap *pOldBmp=NULL;
	CBitmap *pOldBmp1=NULL;
	//CComboBox *pCmbStyle=(CComboBox*)GetDlgItem(IDC_CMB_STYLE);
	//得到位图
	m_bitmap.LoadBitmapW(IDB_BITMAP1);
	a_bitmap.LoadBitmapW(IDB_BITMAP2);
	//获得绘图环境资源
	CDC *pDC=new CClientDC(this);
	memdc.CreateCompatibleDC(pDC);
	pOldBmp=memdc.SelectObject(&m_bitmap);
	memdc1.CreateCompatibleDC(pDC);
	pOldBmp1=memdc1.SelectObject(&a_bitmap);
	//获取位图大小信息
	BITMAP bm;
	m_bitmap.GetBitmap(&bm);
	width=bm.bmWidth;
	height=bm.bmHeight;

	pDC->FillSolidRect(0,0,width,height,RGB(255,255,255));
	
			int num=width/20;
			int i=0,j;
			for(i=0;i<20;i++)
			{
				j=0;
				while(j<num+1)
				{
					pDC->BitBlt(j*20+i,0,1,height,&memdc,j*20+i,0,SRCCOPY);
				
					//Sleep(1);
					j++;
				}
				//Sleep(1);
			}
		for(i=0;i<35;i++)
		{
			TransparentImage(pDC->GetSafeHdc(),i,395,582,68,memdc1,0,0,582,68,RGB(83,42,38));
			//pDC->BitBlt(i,0,582,68,&memdc1,0,0,SRCCOPY);
			i+=2;
		}
		for(i=0;i<218;i++)
		{
			//TransparentImage(pDC->GetSafeHdc(),i,0,582,68,memdc1,0,0,582,68,RGB(247,25,8));
			//pDC->BitBlt(i,0,582,68,&memdc1,0,0,SRCCOPY);
			i++;
		}
	memdc.SelectObject(pOldBmp);
	m_bitmap.DeleteObject();
	memdc.DeleteDC();
	delete pDC;
	pDC=NULL;
	CDialog::OnLButtonDown(nFlags, point);
}

⌨️ 快捷键说明

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