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

📄 mainfrm.cpp

📁 完成抽奖的基本功能。可以载入文本文件
💻 CPP
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "WinLottory.h"
#include "PositionPoint.h"
#include "MainFrm.h"
#include "WinLottoryDoc.h"
#include "DialogConfFirstStep.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_WM_TIMER()
	ON_WM_ACTIVATE()
	ON_COMMAND(ID_MENU_CONF_LOAD, OnMenuConfLoad)
	ON_COMMAND(ID_CONF_GUIDE, OnConfGuide)
	ON_WM_KEYUP()
	ON_WM_ACTIVATEAPP()
	ON_WM_LBUTTONDOWN()
	ON_WM_CANCELMODE()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_CAPTURECHANGED()
	ON_COMMAND(ID_CONF_SAVERESULT, OnConfSaveresult)
	ON_WM_ERASEBKGND()
	ON_WM_CHAR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	count = 0;
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// 注释掉toolbar和statusbar
	/*if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);*/

	// 设置定时器,用于定时显示抽奖号码
	if (!SetTimer(1001,10,NULL))
	{
		MessageBox("定时器初始化失败!");
		return false;
	}

	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

	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::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	// TODO: Add your message handler code here
	PositionPoint pp;
	CRect rc(280,268,853,385);
	CClientDC dc(this);

	CFrameWnd * pFrame = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
    CWinLottoryDoc *pDoc = (CWinLottoryDoc *) pFrame->GetActiveDocument();
	
	// 判断定时器是否在用
	if (pDoc->m_nIfTimer==0)
	{
		if (pDoc->m_sLottoryData.GetSize()>0)
		{	
			pDoc->m_nIfSetTimer=0;
			// 透明背景
			dc.SetBkMode(TRANSPARENT);
			// 设置画刷
			CBrush brush(RGB(255,0,0));
			CBrush *oldBrush = dc.SelectObject(&brush);
			dc.Rectangle(280,248,853,385);
			dc.SelectObject(oldBrush);
			// 设置字体
			CFont mainTitleFont;
			mainTitleFont.CreatePointFont(650,_T("楷体_GB2312"));
			dc.SelectObject(&mainTitleFont);
			// 显示数据
			dc.DrawText(_T(pDoc->m_sLottoryData.GetAt(count)),-1,&rc,DT_SINGLELINE/*|DT_CENTER|DT_VCENTER*/);
			count++;
			// InvalidateRect(&rc,0);

			if (count==pDoc->m_sLottoryData.GetSize())
			{
				count=0;
			}
		}
		else
		{
			pDoc->m_nIfSetTimer=1;
		}
	}
	//Invalidate(true);
	
	CFrameWnd::OnTimer(nIDEvent);
}

void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
{
	CFrameWnd::OnActivate(nState, pWndOther, bMinimized);
}

void CMainFrame::OnMenuConfLoad() 
{
	CFrameWnd * pFrame = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
    CWinLottoryDoc *pDoc = (CWinLottoryDoc *) pFrame->GetActiveDocument();

	CFileDialog   pFileDlg(TRUE,".*",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"*(*.*)|*.*||");   
    
	if(pFileDlg.DoModal()==IDOK)
	{   
		pDoc->m_sConfigFileName=pFileDlg.GetPathName();  
		//pDoc->m_configFile
		MessageBox(pDoc->m_sConfigFileName);
	} 	
}

void CMainFrame::OnConfGuide() 
{
	CDialogConfFirstStep dcf = new CDialogConfFirstStep();
	dcf.DoModal();
}

void CMainFrame::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	
	CFrameWnd::OnKeyUp(nChar, nRepCnt, nFlags);
}

void CMainFrame::OnActivateApp(BOOL bActive, HTASK hTask) 
{
	CFrameWnd::OnActivateApp(bActive, hTask);
	
	// TODO: Add your message handler code here
	
}

void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CFrameWnd::OnLButtonDown(nFlags, point);
}

void CMainFrame::OnCancelMode()
{
	CFrameWnd::OnCancelMode();
}

void CMainFrame::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	
	CFrameWnd::OnLButtonDblClk(nFlags, point);
}

void CMainFrame::OnCaptureChanged(CWnd *pWnd) 
{
	// TODO: Add your message handler code here
	
	CFrameWnd::OnCaptureChanged(pWnd);
}

void CMainFrame::OnConfSaveresult() 
{
	CFrameWnd * pFrame = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
    CWinLottoryDoc *pDoc = (CWinLottoryDoc *) pFrame->GetActiveDocument();

	CFile settingFile;
	char dir[200];
	//GetCurrentDirectory(200,dir);
	CString fileName;
	CTime ct = CTime::GetCurrentTime();
	CString date = ct.Format("%y年%m月%d日%H时%M分%S秒");

	// 得到桌面的路径 
	if (SHGetSpecialFolderPath(NULL, dir, CSIDL_DESKTOPDIRECTORY, FALSE) == FALSE)
	{
		AfxMessageBox("Cannot find directory!");
	}
	else
	{
		fileName.Format("%s", dir);
		fileName = fileName + "\\";
		fileName = fileName + date;
		fileName = fileName + "抽奖结果文件.txt";

		MessageBox(fileName);
		int j;
		if (settingFile.Open(fileName.GetBuffer(0), CFile::modeCreate | CFile::modeWrite))
		{
			char buf[100] = {0};
			for (int i=0;i<3;i++)
			{
				switch (i)
				{
					case 0:
						memset(buf, 0, 100);
						strcpy(buf, "一等奖中奖名单:");
						settingFile.Write(buf, sizeof(buf));
						settingFile.Write("\n",sizeof("\n"));
						settingFile.Write("--------------------",sizeof("--------------------"));
						settingFile.Write("\n",sizeof("\n"));
						for (j=0;j<(pDoc->m_nLottory)[i];j++)
						{
							memset(buf, 0, 100);
							strcpy(buf, pDoc->m_sLottoryBingo.GetAt((pDoc->m_nLottory)[2]+(pDoc->m_nLottory)[1]+j));
							settingFile.Write(buf, sizeof(buf));
							settingFile.Write("\n",sizeof("\n"));
						}
						settingFile.Write("\n",sizeof("\n"));
						settingFile.Write("\n",sizeof("\n"));
						break;
					case 1:
						memset(buf, 0, 100);
						strcpy(buf, "二等奖中奖名单:");
						settingFile.Write(buf, sizeof(buf));
						settingFile.Write("\n",sizeof("\n"));
						settingFile.Write("--------------------",sizeof("--------------------"));
						settingFile.Write("\n",sizeof("\n"));
						for (j=0;j<(pDoc->m_nLottory)[i];j++)
						{
							memset(buf, 0, 100);
							strcpy(buf, pDoc->m_sLottoryBingo.GetAt((pDoc->m_nLottory)[2]+j));
							settingFile.Write(buf, sizeof(buf));
							settingFile.Write("\n",sizeof("\n"));
						}
						settingFile.Write("\n",sizeof("\n"));
						settingFile.Write("\n",sizeof("\n"));
						break;
					case 2:
						memset(buf, 0, 100);
						strcpy(buf, "三等奖中奖名单:");
						settingFile.Write(buf, sizeof(buf));
						settingFile.Write("\n",sizeof("\n"));
						settingFile.Write("--------------------",sizeof("--------------------"));
						settingFile.Write("\n",sizeof("\n"));
						for (j=0;j<(pDoc->m_nLottory)[i];j++)
						{
							memset(buf, 0, 100);
							strcpy(buf, pDoc->m_sLottoryBingo.GetAt(j));
							settingFile.Write(buf, sizeof(buf));
							settingFile.Write("\n",sizeof("\n"));
						}
						settingFile.Write("\n",sizeof("\n"));
						settingFile.Write("\n",sizeof("\n"));
						break;
					default:
						break;
				}
			}
			
			settingFile.Close();		
		}
		else
		{
			MessageBox("抽奖文件建立失败!");
		}
	}
}

BOOL CMainFrame::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	
	return CFrameWnd::OnEraseBkgnd(pDC);
}

void CMainFrame::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	// TODO: Add your message handler code here and/or call default
	
	CFrameWnd::OnChar(nChar, nRepCnt, nFlags);
}

// 重载从未见过的父类方法,定义主窗口标题
void CMainFrame::OnUpdateFrameTitle(BOOL NaDa)
{
	CString	csAppName;
	csAppName.Format(AFX_IDS_APP_TITLE);
	SetWindowText(csAppName);
}

⌨️ 快捷键说明

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