mainfrm.cpp
来自「windows ce开发技巧与实例光盘代码」· C++ 代码 · 共 182 行
CPP
182 行
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "Sprite.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
const DWORD dwAdornmentFlags = 0; // exit button
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_SETFOCUS()
ON_WM_DESTROY()
ON_WM_KEYDOWN()
ON_WM_KILLFOCUS()
ON_WM_SETCURSOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
m_pThread = new CGenericThread();
}
CMainFrame::~CMainFrame()
{
delete m_pThread;
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// Remove and destroy the menu
if (m_hMenuDefault)
{
::DestroyMenu(m_hMenuDefault);
}
SetMenu(NULL);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
#ifndef _WIN32_WCE
if (GAMEPARAM_FULLSCREEN)
{
cs.style = WS_POPUP;
}
else
{
cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
| WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU;
}
#endif
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass( CS_VREDRAW | CS_HREDRAW,
AfxGetApp()->LoadCursor(IDC_ARROW), NULL,
AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDR_MAINFRAME)));
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnSetFocus(CWnd* pOldWnd)
{
m_pThread->ResumeThread();
}
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// otherwise, do default handling
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
void CMainFrame::StartThread()
{
// Start graphics thread
m_pThread->StartThread(GetSafeHwnd());
}
void CMainFrame::OnDestroy()
{
m_pThread->KillThread();
#ifdef _WIN32_WCE
// Restore all adornments if we are running Windows CE
::CommandBar_Show(this->m_hCommandBar, TRUE);
::SHFullScreen(m_hWnd,
SHFS_SHOWSTARTICON |
SHFS_SHOWTASKBAR |
SHFS_SHOWSIPBUTTON);
#endif
CFrameWnd::OnDestroy();
}
void CMainFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
GDKEYLIST gxkl;
m_input.GetKeyList(&gxkl);
if (nChar == gxkl.vkA)
{
// Key "1" pressed
m_pThread->KillThread();
PostMessage(WM_CLOSE, 0, 0);
}
else if (nChar == gxkl.vkB)
{
// Key "2" pressed
m_pThread->ChangeScreenOrientation();
}
else if (nChar == gxkl.vkC)
{
// Key "3" pressed
m_pThread->SaveScreenshot();
}
CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CMainFrame::OnKillFocus(CWnd* pNewWnd)
{
m_pThread->SuspendThread();
CFrameWnd::OnKillFocus(pNewWnd);
}
BOOL CMainFrame::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if (GAMEPARAM_FULLSCREEN)
{
// Hide mouse cursor in full screen mode
SetCursor(NULL);
return TRUE;
}
else
{
return CFrameWnd::OnSetCursor(pWnd, nHitTest, message);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?