看了个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);
浙公网安备 33010602011771号