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

📄 mainfrm.cpp

📁 基于WindowCE上对于windows mobile开发的一个俄罗斯方块程序
💻 CPP
字号:
// MainFrm.cpp : CMainFrame 类的实现
//

#include "stdafx.h"
#include "OurBloke.h"

#include "MainFrm.h"
#include "OurBlokeView.h"
#include "MainmenuView.h"
#include "SubMenu.h"
#include "LevelView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

#define WM_CHANGEVIEW (WM_USER + 1)
#define WM_CHANGEBLOKEVIEW (WM_USER + 2)
#define WM_LEVELUP (WM_USER + 3)

const DWORD dwAdornmentFlags = 0; // 退出按钮

// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_WM_CREATE()
	ON_MESSAGE(WM_CHANGEVIEW,OnChangeView)
	ON_MESSAGE(WM_CHANGEBLOKEVIEW,OnChangeBlokeView)
	ON_MESSAGE(WM_LEVELUP,OnLevelUp)
	ON_WM_KEYDOWN()
END_MESSAGE_MAP()


// CMainFrame 构造/析构

CMainFrame::CMainFrame()
{
	// TODO: 在此添加成员初始化代码
}

CMainFrame::~CMainFrame()
{
	
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;



	CWnd* pWnd = CWnd::FromHandlePermanent(this->m_hWnd);


	::SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);
	CRect rcScreen; 
	SetRect(&rcScreen, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)); 
	::MoveWindow(m_hWnd, rcScreen.left, rcScreen.top, rcScreen.right-rcScreen.left, rcScreen.bottom-rcScreen.top, TRUE); 

	

 


	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if (!CFrameWnd::PreCreateWindow(cs))
		return FALSE;
	// TODO: 在此处通过修改
	//  CREATESTRUCT cs 来修改窗口类或样式

	return TRUE;
}


LRESULT CMainFrame::OnChangeView(WPARAM wParam,LPARAM lParam)
{
	//(1)查找活动视图
	CView* pActiveView = GetActiveView();
	if (pActiveView == NULL)
		return -1;
	//(2)保存当前视图的位置和活动状态
	CRect rcView;
	pActiveView->GetWindowRect(&rcView);
	//(3)查找相关的文档
	CDocument* pDoc = pActiveView->GetDocument();
	//(4)当释放位图时,确保不会释放文档
	BOOL bSaveAutoDelete = pDoc->m_bAutoDelete;
	pDoc->m_bAutoDelete = FALSE;
	//(5)释放活动视图%
	pActiveView->DestroyWindow();
	//(6)恢复文档到初始状态
	pDoc->m_bAutoDelete = bSaveAutoDelete;
	//(7)初始化CreateView使用地上下文
	CCreateContext context;
	context.m_pCurrentDoc = pDoc;
	context.m_pNewViewClass = RUNTIME_CLASS(COurBlokeView);//GetRuntimeClass(COurBlokeView);
	context.m_pCurrentFrame = NULL;
	context.m_pLastView = NULL;
	context.m_pNewDocTemplate = NULL;
	//(8)创建新视图
	CView* pNewView = static_cast<CView*>(CreateView(&context));
	//(9)定位视图与激活
	ScreenToClient(&rcView);
	pNewView->MoveWindow(&rcView);
	//(10)给视图发送WM_INITIALUPDATE消息
	InitialUpdateFrame(pDoc,TRUE);

	return 0;
}

LRESULT CMainFrame::OnLevelUp(WPARAM wParam,LPARAM lParam)
{
	COurBlokeApp * pApp = (COurBlokeApp * )AfxGetApp();

	CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
	COurBlokeView * pView = (COurBlokeView *)pMain->GetActiveView();
	pApp->MaxNum = pApp->MaxNum +100;
	
	pView->bDo =true;


	CView* pActiveView = GetActiveView();
	if (pActiveView == NULL)
		return -1;
	//(2)保存当前视图的位置和活动状态
	CRect rcView;
	pActiveView->GetWindowRect(&rcView);
	//(3)查找相关的文档
	CDocument* pDoc = pActiveView->GetDocument();
	//(4)当释放位图时,确保不会释放文档
	BOOL bSaveAutoDelete = pDoc->m_bAutoDelete;
	pDoc->m_bAutoDelete = FALSE;
	//(5)释放活动视图%
	pActiveView->DestroyWindow();
	//(6)恢复文档到初始状态
	pDoc->m_bAutoDelete = bSaveAutoDelete;
	//(7)初始化CreateView使用地上下文
	CCreateContext context;
	context.m_pCurrentDoc = pDoc;
	context.m_pNewViewClass = RUNTIME_CLASS(CLevelView);//GetRuntimeClass(COurBlokeView);
	context.m_pCurrentFrame = NULL;
	context.m_pLastView = NULL;
	context.m_pNewDocTemplate = NULL;
	//(8)创建新视图
	CView* pNewView = static_cast<CView*>(CreateView(&context));
	//(9)定位视图与激活
	ScreenToClient(&rcView);
	pNewView->MoveWindow(&rcView);
	//(10)给视图发送WM_INITIALUPDATE消息
	InitialUpdateFrame(pDoc,TRUE);

	//Sleep(1000);



	//pLevelDlg->onclose();
	

	//5cst.ShowWindow(SW_HIDE);
	
	return 0;
}


LRESULT CMainFrame::OnChangeBlokeView(WPARAM wParam,LPARAM lParam)
{
	//(1)查找活动视图
	CView* pActiveView = GetActiveView();
	if (pActiveView == NULL)
		return -1;
	//(2)保存当前视图的位置和活动状态
	CRect rcView;
	pActiveView->GetWindowRect(&rcView);
	//(3)查找相关的文档
	CDocument* pDoc = pActiveView->GetDocument();
	//(4)当释放位图时,确保不会释放文档
	BOOL bSaveAutoDelete = pDoc->m_bAutoDelete;
	pDoc->m_bAutoDelete = FALSE;
	//(5)释放活动视图%
	pActiveView->DestroyWindow();
	//(6)恢复文档到初始状态
	pDoc->m_bAutoDelete = bSaveAutoDelete;
	//(7)初始化CreateView使用地上下文
	CCreateContext context;
	context.m_pCurrentDoc = pDoc;
	context.m_pNewViewClass = RUNTIME_CLASS(CMainmenuView);//GetRuntimeClass(COurBlokeView);
	context.m_pCurrentFrame = NULL;
	context.m_pLastView = NULL;
	context.m_pNewDocTemplate = NULL;
	//(8)创建新视图
	CView* pNewView = static_cast<CView*>(CreateView(&context));
	//(9)定位视图与激活
	ScreenToClient(&rcView);
	pNewView->MoveWindow(&rcView);
	//(10)给视图发送WM_INITIALUPDATE消息
	InitialUpdateFrame(pDoc,TRUE);

	return 0;
}


// CMainFrame 诊断

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}
#endif //_DEBUG

// CMainFrame 消息处理程序




void CMainFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}
//void CMainFrame::LevelUp(void)
//{
	
//	cst.ShowWindow(SW_SHOW);
//	this->Invalidate(true);
//}

⌨️ 快捷键说明

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