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

📄 gameframe.cpp

📁 一个VC程序
💻 CPP
字号:
// gameFrame.cpp : implementation file
//

#include "stdafx.h"
#include "gameFrame.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// gameFrame

IMPLEMENT_DYNCREATE(gameFrame, CFrameWnd)

								
CPen newPen,*oldPen;    							

gameFrame::gameFrame()
{
	RECT rect;
	Create(NULL,"绘图窗口");

	CClientDC dc(this);
	int width = dc.GetDeviceCaps(HORZRES);
	int height = dc.GetDeviceCaps(VERTRES);

	GetWindowRect( &rect );
	width = ( width - ( rect.right - rect.left ))/2 ;
	height = (height - (rect.bottom - rect.top ))/2 ;

	MoveWindow( width , 
				height , 
				(rect.right - rect.left ) , 
				(rect.bottom - rect.top ) ,
				true	);

	mdc = new CDC;			
	bitmap = new CBitmap;		
	bitmap->m_hObject = (HBITMAP)::LoadImage(	NULL,
												"ball.bmp",
												IMAGE_BITMAP,
												198,
												113,
												LR_LOADFROMFILE	); 
	mdc->CreateCompatibleDC(&dc);
	mdc->SelectObject(bitmap);	
}

gameFrame::~gameFrame()
{
	if(mdc) 
		delete mdc;		
	if(bitmap) 
		delete bitmap;	
}

BEGIN_MESSAGE_MAP(gameFrame, CFrameWnd)
	//{{AFX_MSG_MAP(gameFrame)
	ON_WM_PAINT()
	ON_WM_CREATE()
	ON_LBN_SELCHANGE(ID_LIST,OnSelChange)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// gameFrame message handlers

void gameFrame::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	Draw(&dc);	
}

int gameFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	listbox = new CListBox;
	listbox->CreateEx(	WS_EX_CLIENTEDGE,"ListBox",
						NULL,LBS_STANDARD|WS_VISIBLE|WS_CHILD,
						CRect(10,50,180,300),
						this,
						ID_LIST	);			


	CString item[15] = {	"BLACKNESS",	"DSTINVERT",	"MERGECOPY",
							"MERGEPAINT",	"NOTSRCCOPY",	"NOTSRCERASE",
							"PATCOPY",		"PATINVERT",	"PATPAINT",
							"SRCAND",		"SRCCOPY",		"SRCERASE",
							"SRCINVERT",	"SRCPAINT",		"WHITENESS"	};  

	DWORD raster[15] = {	BLACKNESS,	DSTINVERT,	MERGECOPY, 
							MERGEPAINT,	NOTSRCCOPY,	NOTSRCERASE, 
							PATCOPY,	PATINVERT,	PATPAINT, 
							SRCAND,		SRCCOPY,	SRCERASE, 
							SRCINVERT,	SRCPAINT,	WHITENESS }; 
	int index;
	for(int i=0;i<=14;i++)
	{
		index = listbox->AddString(item[i]);  
		listbox->SetItemData(index,raster[i]); 
	}
	listbox->SelectString(10,"SRCCOPY");    
	return 0;
}

void gameFrame::Draw(CDC *dc)
{
	DWORD raster ;
	int index;
	index = listbox->GetCurSel();				
	raster = listbox->GetItemData(index);		
	dc->BitBlt(210,50,198,113,mdc,0,0,SRCCOPY); 
	dc->TextOut(10,10,"Raster 运算值:");
	dc->TextOut(210,10,"源位图:");
	dc->TextOut(210,173,"经 Raster 运算后的位图:");
	dc->BitBlt(210,213,198,113,mdc,0,0,raster);
}

void gameFrame::OnSelChange()
{
	CClientDC dc(this);		
	Draw(&dc);				
}

⌨️ 快捷键说明

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