c++的一个程序源码记录

看了个c++程序。很简单的程序却搞的我头很大
// LUCKYDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "LUCKY.h"
#include "LUCKYDlg.h"

#include "Mmsystem.h"
#pragma comment( lib, "Winmm.lib" )

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

int beijing=1;
int beijing_num=23;

int num=45;
CString phoneno[100];
int selnum=0;
int be_sel[100];
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// 对话框数据
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

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

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()


// CLUCKYDlg 对话框




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

void CLUCKYDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//DDX_Control(pDX, IDC_BUTTON_Choujiang, m_IconBtn);
	//DDX_Control(pDX, IDC_BUTTON_Tingzhi, m_IconBtn1);
}

BEGIN_MESSAGE_MAP(CLUCKYDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_BUTTON_Choujiang, &CLUCKYDlg::OnBnClickedButtonChoujiang)
	ON_BN_CLICKED(IDC_BUTTON_Tingzhi, &CLUCKYDlg::OnBnClickedButtonTingzhi)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDOK, &CLUCKYDlg::OnBnClickedOk)
	ON_WM_CTLCOLOR()
	ON_WM_DESTROY()
	ON_WM_CREATE()
END_MESSAGE_MAP()


// CLUCKYDlg 消息处理程序

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

	// 将“关于...”菜单项添加到系统菜单中。

	// IDM_ABOUTBOX 必须在系统命令范围内。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码

	myfont.CreateFont(38, // nHeight 
	0, // nWidth 
	0, // nEscapement 
	0, // nOrientation 
	FW_BOLD, // nWeight 		 
	FALSE, // bItalic
	FALSE, // bUnderline 
	0, // cStrikeOut 
	ANSI_CHARSET, // nCharSet 
	OUT_DEFAULT_PRECIS, // nOutPrecision 
	CLIP_DEFAULT_PRECIS, // nClipPrecision 
	DEFAULT_QUALITY, // nQuality 
	DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily 
	_T("微软雅黑")); // lpszFac



	for(int i=0;i<100;i++)
	{
		phoneno[i].Format("%d",i);
		be_sel[i]=0;
	}

	//参与抽奖的电话号码
	phoneno[1]="1348504123";
	phoneno[2]="1396180846";
	phoneno[3]="1596180182";
	phoneno[4]="1876260241";
	phoneno[5]="1895247720";
	phoneno[6]="1594924913";
	phoneno[7]="1596180376";
	phoneno[8]="1318209196";
	phoneno[9]="1586140658";
	phoneno[10]="1348500515";
	phoneno[11]="1526152207";
	phoneno[12]="1891233320";
	phoneno[13]="1366511977";
	phoneno[14]="1377113520";
	phoneno[15]="1377176407";
	phoneno[16]="1596830294";
	phoneno[17]="1386704030";
	phoneno[18]="1386178747";
	phoneno[19]="1391249195";
	phoneno[20]="1391536459";
	phoneno[21]="1891283129";
	phoneno[22]="1396176630";
	phoneno[23]="1396180061";
	phoneno[24]="1876261321";
	phoneno[25]="1525163182";
	phoneno[26]="1526152022";
	phoneno[27]="1348501851";
	phoneno[28]="1526156537";
	phoneno[29]="1596170193";
	phoneno[30]="1876260832";
	phoneno[31]="1303351716";
	phoneno[32]="1381510083";
	phoneno[33]="1860157601";
	phoneno[34]="1596176356";
	phoneno[35]="1876265135";
	phoneno[36]="1506150646";
	phoneno[37]="1876265197";
	phoneno[38]="1876265198";
	phoneno[39]="1396173525";
	phoneno[40]="1348504286";
	phoneno[41]="1895247414";	///
	phoneno[42]="1586140707";
	phoneno[43]="134850356";
	phoneno[44]="1586142977";
	phoneno[45]="1891535512";
	///


	CString iniName="d:\\PHOTOBMP\\Selected.ini";
	selnum=GetPrivateProfileInt("MATCH","selnum",0,iniName);
	for(int i=1;i<=selnum;i++)
	{
		CString keystr="";
		keystr.Format("sel%d",i);
		int k=GetPrivateProfileInt("MATCH",keystr,0,iniName);
		be_sel[k]=1;
	}

	/////////////////
	CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC_MUSIC);
	HWND h=pStatic->GetSafeHwnd();
	CString open1;
	char buf[256];
	open1.Format("open d:\\PHOTOBMP\\music.wma Alias movie parent %u Style %u notify", h,WS_CHILD); 
	mciSendString(open1.GetBuffer(open1.GetLength()),buf,sizeof(buf),NULL);//播放音乐d:\\PHOTOBMP\\music.wma

	/////////////////

	m_IconBtn.LoadBitmaps(IDB_BITMAP2);
	m_IconBtn.SubclassDlgItem(IDC_BUTTON_Choujiang,this);
	m_IconBtn.SizeToContent();

	
	m_IconBtn1.LoadBitmaps(IDB_BITMAP3);
	m_IconBtn1.SubclassDlgItem(IDC_BUTTON_Tingzhi,this);
	m_IconBtn1.SizeToContent();

	GetDlgItem(IDC_BUTTON_Choujiang)->ShowWindow(1);
	GetDlgItem(IDC_BUTTON_Tingzhi)->ShowWindow(0);

	////////////////
	mciSendString("play movie repeat ",buf,sizeof(buf),NULL);
	SetTimer(4,1,NULL);
	SetTimer(3,2000,NULL);
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CLUCKYDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CLUCKYDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}

	GetDlgItem(IDC_STATIC_Phone)->SetFont(&myfont); 
	GetDlgItem(IDC_STATIC_B1)->SetFont(&myfont); 
	GetDlgItem(IDC_STATIC_B2)->SetFont(&myfont); 

	CClientDC dc(this);//得到主界面上下文
	CRect rect;
	GetClientRect(&rect);
	CBitmap m_bmp;
	m_bmp.LoadBitmap(IDB_BITMAP1);

	BITMAP bm;
	m_bmp.GetObject(sizeof(BITMAP),&bm);
	CDC dcMem;
	dcMem.CreateCompatibleDC(&dc);
	CBitmap *pOldbmp=dcMem.SelectObject(&m_bmp);

	dc.BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);
		
	dcMem.SelectObject(pOldbmp);
	dcMem.DeleteDC();
	m_bmp.DeleteObject();

	GetDlgItem(IDC_BUTTON_Choujiang)->Invalidate();
	GetDlgItem(IDC_BUTTON_Tingzhi)->Invalidate();
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CLUCKYDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}


void CLUCKYDlg::OnBnClickedButtonChoujiang()
{
	// TODO: 在此添加控件通知处理程序代码
	KillTimer(3);
	GetDlgItem(IDC_STATIC_BeiJing)->ShowWindow(0);
	SetTimer(1,20,NULL);

	GetDlgItem(IDC_BUTTON_Choujiang)->ShowWindow(0);
	GetDlgItem(IDC_BUTTON_Tingzhi)->ShowWindow(1);

	GetDlgItem(IDC_STATIC_B1)->ShowWindow(0);
	GetDlgItem(IDC_STATIC_B2)->ShowWindow(0);
}

void CLUCKYDlg::OnBnClickedButtonTingzhi()
{
	// TODO: 在此添加控件通知处理程序代码
	KillTimer(1);
	
	GetDlgItem(IDC_BUTTON_Choujiang)->ShowWindow(1);
	GetDlgItem(IDC_BUTTON_Tingzhi)->ShowWindow(0);
	SetTimer(2,100,NULL);	
}

void CLUCKYDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	switch(nIDEvent)
	{
	case 1:
		ShowPhoneNo();
		break;
	case 2:
		{
			KillTimer(2);
			CStatic * pWnd=(CStatic*)GetDlgItem(IDC_STATIC_JIANG);  
			pWnd->ModifyStyle(0,SS_BITMAP);  
			CString path="d:\\PHOTOBMP\\";//将参与抽奖者的照片放到该文件夹下
			CString no="";
			GetDlgItem(IDC_STATIC_Phone)->GetWindowTextA(no);
			path+=no;
			path+=".bmp";
			pWnd->SetBitmap((HBITMAP)::LoadImage(0,path.GetBuffer(),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION   |LR_DEFAULTSIZE   |LR_LOADFROMFILE));	
			GetDlgItem(IDC_STATIC_Phone)->Invalidate();

			for(int i=1;i<=num;i++)
			{
				if(no==phoneno[i])
				{
					selnum++;
					be_sel[i]=1;

					CString iniName="d:\\PHOTOBMP\\Selected.ini";//
					CString str="";
					str.Format("%d",selnum);
					::WritePrivateProfileString("MATCH", "selnum", str, iniName);

					CString keystr="";
					keystr.Format("sel%d",selnum);
					str.Format("%d",i);
					::WritePrivateProfileString("MATCH", keystr, str, iniName);
				}
			}
		}
		break;
	case 3:
		{
			///
			CStatic * pWnd=(CStatic*)GetDlgItem(IDC_STATIC_BeiJing);  
			pWnd->ModifyStyle(0,SS_BITMAP);  
			CString path="d:\\PHOTOBMP\\";
			CString no="";
			no.Format("%d",(beijing-1)%beijing_num+1);
			path+=no;
			path+=".bmp";
			pWnd->SetBitmap((HBITMAP)::LoadImage(0,path.GetBuffer(),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION   |LR_DEFAULTSIZE   |LR_LOADFROMFILE));		
			Invalidate();
			GetDlgItem(IDC_STATIC_Phone)->Invalidate();
			if(beijing==1)
			{
				Sleep(2000);
			}
			beijing++;
		}
		break;
	case 4:
		{
			KillTimer(4);
			int e=100;
			CString Ming1="2012年针织中心元旦晚会抽奖系统";

			for(int i=1;i<=Ming1.GetLength()/2;i++)
			{
				CString ss=Ming1.Left(i*2);
				GetDlgItem(IDC_STATIC_B1)->SetWindowTextA(ss);
				Sleep(e);
			}

			CString Ming2="策划:朱启";
			for(int i=1;i<=Ming2.GetLength()/2;i++)
			{
				CString ss=Ming2.Right(i*2);
				GetDlgItem(IDC_STATIC_B2)->SetWindowTextA(ss);
				Sleep(e*2);
			}

			
			{
				Sleep(3000);
			}
			
			
		}
		break;
	}

	CDialog::OnTimer(nIDEvent);
}

void CLUCKYDlg::ShowPhoneNo(void)//随机显示电话号码
{
	CString nowText="";
	GetDlgItem(IDC_STATIC_Phone)->GetWindowTextA(nowText);
	unsigned long rand1=::GetTickCount();
	srand(rand1);
	unsigned long rand2=rand();
	int index=(rand1+rand2-1)%num+1;
	if(be_sel[index]!=0)
	{
		for(int i=1;i<=num;i++)
		{
			if(be_sel[(index+i-1)%num+1]==0 && phoneno[(index+i-1)%num+1]!=nowText)
			{
				index=(index+i-1)%num+1;
				break;
			}
		}
	}
	if(selnum>=num)
	{
		GetDlgItem(IDC_STATIC_Phone)->SetWindowText("所有人都已抽过奖");
	}
	else
	{
		GetDlgItem(IDC_STATIC_Phone)->SetWindowText(phoneno[index]);
	}
}

void CLUCKYDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	OnOK();
}

HBRUSH CLUCKYDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

	// TODO:  在此更改 DC 的任何属性
	if(pWnd->GetDlgCtrlID()==IDC_STATIC_Phone)
	{    
		pDC->SetBkColor(RGB(255,247,83));
		pDC->SetTextColor(RGB(248,0,0)); 
	//	pDC->SetBkMode(TRANSPARENT);
		return   (HBRUSH)::GetStockObject(NULL_BRUSH);   
	}

	if(pWnd->GetDlgCtrlID()==IDC_STATIC_B1 || pWnd->GetDlgCtrlID()==IDC_STATIC_B2)
	{    
		pDC->SetTextColor(RGB(248,0,0)); 
		//pDC->SetBkMode(TRANSPARENT);
		return   (HBRUSH)::GetStockObject(NULL_BRUSH);   
	}

	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
	return hbr;
}

void CLUCKYDlg::OnDestroy()
{
	CDialog::OnDestroy();

	// TODO: 在此处添加消息处理程序代码
	myfont.DeleteObject();
}

int CLUCKYDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:  在此添加您专用的创建代码
	AnimateWindow(800, AW_BLEND|AW_CENTER);

	return 0;
}

小张老师喜欢用这样的代码方式

GetDlgItem(IDC_STATIC_Phone)->GetWindowTextA(nowText);

原文链接: https://www.cnblogs.com/smallerpig/archive/2011/12/07/2279840.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++的一个程序源码记录

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/37997

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午2:40
下一篇 2023年2月8日 下午2:40

相关推荐