📄 tedlg.cpp
字号:
void CTEDlg::DrawModel(Model *mod,int x, int y,int color){
int *temp=mod->Mod();
for(int n=0;n<4;n++){
for(int m=0;m<4;m++){
if(*temp==0)
Sigle(x+m*ONE,y+n*ONE,0,0);
else
Sigle(x+m*ONE,y+n*ONE,4,color);
temp++;
}
}
}
void CTEDlg::OnStart()
{
// TODO: Add your control notification handler code here
// GetDlgItem(IDC_START)->EnableWindow(false);
TheEdge=new Edge;
Model_First=new Model;
Model_Next=new Model;
makeup=TheEdge->MakeUp();
HEADX=355;
HEADY=100;
next_color= ((float)rand() / (float)RAND_MAX) * 16 + 2;
color=((float)rand() / (float)RAND_MAX) * 16 + 2;
m_nTimer=SetTimer(1, 300, 0);
Graph();
DrawModel(Model_Next,285,198,next_color);
Movie(TheEdge->Location(),Model_First->Mod()+15,color,0,4);
Start=true;
}
void CTEDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
int Ctrl=GetDown(TheEdge,Model_First,color);
switch(Ctrl){
case 1:{
KillTimer(1);
delete Model_Next;
delete Model_First;
delete TheEdge;
break;
}
case 2:{
delete Model_First;
Model *Model_First=new Model(*Model_Next);
color=next_color;
Movie(TheEdge->Location(),Model_First->Mod()+15,color,0,4);
delete Model_Next;
Model *Model_Next=new Model;
next_color= ((float)rand() / (float)RAND_MAX) * 16 + 2;
DrawModel(Model_Next,285,198,next_color);
break;
}
default:{
// KillTimer(1);
// delete Model_Next;
// delete Model_First;
// delete TheEdge;
break;
}
}
CDialog::OnTimer(nIDEvent);
}
BOOL CTEDlg::PreTranslateMessage(LPMSG lpmsg)
{
BOOL bHandleNow = FALSE;
if(Start==false){
switch (lpmsg->message)
{
case WM_KEYDOWN:
switch (lpmsg->wParam)
{
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
case VK_SPACE:
bHandleNow = TRUE;
break;
}
if (bHandleNow)
OnKeyDown(lpmsg->wParam, LOWORD(lpmsg ->lParam), HIWORD(lpmsg->lParam));
break;
}
return bHandleNow;
}
Edge *edge=TheEdge;
Model *model= Model_First;
switch (lpmsg->message)
{
case WM_KEYDOWN:
switch (lpmsg->wParam)
{
case VK_UP:
Movie(edge->Location(),model->Mod()+15,0,0,4);
edge->ObjectTurn(model);
Movie(edge->Location(),model->Mod()+15,color,0,4);
break;
case VK_DOWN:{
int Ctrl=GetDown(TheEdge,Model_First,color);
switch(Ctrl){
case 1:{
KillTimer(1);
delete Model_Next;
delete Model_First;
delete TheEdge;
break;
}
case 2:{
delete Model_First;
Model *Model_First=new Model(*Model_Next);
color=next_color;
Movie(TheEdge->Location(),Model_First->Mod()+15,color,0,4);
delete Model_Next;
Model *Model_Next=new Model;
next_color= ((float)rand() / (float)RAND_MAX) * 16 + 2;
DrawModel(Model_Next,285,198,next_color);
break;
}
default:{
// delete Model_Next;
// delete Model_First;
// delete TheEdge;
break;
}
}
}
break;
case VK_LEFT:
Movie(edge->Location(),model->Mod()+15,0,0,4);
edge->ObjectMove(model, 1); //left
Movie(edge->Location(),model->Mod()+15,color,0,4);
break;
case VK_RIGHT:
Movie(edge->Location(),model->Mod()+15,0,0,4);
edge->ObjectMove(model,2);
Movie(edge->Location(),model->Mod()+15,color,0,4);
break;
case VK_SPACE:{
for(int Ctrl=0;Ctrl!=2&&Ctrl!=4;){
Ctrl=GetDown(TheEdge,Model_First,color);
switch(Ctrl){
case 1:{
KillTimer(1);
delete Model_Next;
delete Model_First;
delete TheEdge;
break;
}
case 2:{
delete Model_First;
Model *Model_First=new Model(*Model_Next);
color=next_color;
Movie(TheEdge->Location(),Model_First->Mod()+15,color,0,4);
delete Model_Next;
Model *Model_Next=new Model;
next_color= ((float)rand() / (float)RAND_MAX) * 16 + 2;
DrawModel(Model_Next,285,198,next_color);
break;
}
default:{
// delete Model_Next;
// delete Model_First;
// delete TheEdge;
break;
}
}
}
// break;
}
bHandleNow = TRUE;
break;
}
if (bHandleNow)
OnKeyDown(lpmsg->wParam, LOWORD(lpmsg ->lParam), HIWORD(lpmsg->lParam));
break;
}
return bHandleNow;
}
void CTEDlg::OnCloseMusic()
{
if(GetMenu()->GetMenuState(ID_CLOSE_MUSIC,MF_BYCOMMAND) == MF_CHECKED)
{
GetMenu()->CheckMenuItem(ID_CLOSE_MUSIC,MF_UNCHECKED);
switch(m_Last_Music)
{
case ID_MUSIC_1:
m_OpenParms.lpstrElementName = m_Music[0];
break;
case ID_MUSIC_2:
m_OpenParms.lpstrElementName = m_Music[1];
break;
case ID_MUSIC_3:
m_OpenParms.lpstrElementName = m_Music[2];
break;
case ID_MUSIC_4:
m_OpenParms.lpstrElementName = m_Music[3];
break;
case ID_MUSIC_5:
m_OpenParms.lpstrElementName = m_Music[4];
break;
case ID_MUSIC_6:
m_OpenParms.lpstrElementName = m_Music[5];
break;
}
mciSendCommand (NULL, MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &m_OpenParms);
mciSendCommand (m_OpenParms.wDeviceID, MCI_PLAY,
MCI_NOTIFY, (DWORD)(LPVOID)&m_PlayParms);
}
else
{
GetMenu()->CheckMenuItem(ID_CLOSE_MUSIC,MF_CHECKED);
mciSendCommand (m_OpenParms.wDeviceID, MCI_CLOSE,
MCI_NOTIFY, (DWORD)(LPVOID)&m_CloseParms);
}
}
void CTEDlg::OnMusic1()
{
if(m_Last_Music == ID_MUSIC_1) //如果已经选择,则直接返回;
return;
GetMenu()->CheckMenuItem(m_Last_Music,MF_UNCHECKED);
m_Last_Music = ID_MUSIC_1;
GetMenu()->CheckMenuItem(ID_MUSIC_1,MF_CHECKED);
if(GetMenu()->GetMenuState(ID_CLOSE_MUSIC,MF_BYCOMMAND) == MF_CHECKED)
return; //如果菜单项"关闭音乐"已经选择,则直接返回;
mciSendCommand (m_OpenParms.wDeviceID, MCI_CLOSE, //关闭当前正在播放音乐;
MCI_NOTIFY, (DWORD)(LPVOID)&m_CloseParms);
m_OpenParms.lpstrElementName = m_Music[0];
mciSendCommand (NULL, MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &m_OpenParms);
mciSendCommand (m_OpenParms.wDeviceID, MCI_PLAY,
MCI_NOTIFY, (DWORD)(LPVOID)&m_PlayParms);
}
void CTEDlg::OnMusic2()
{
if(m_Last_Music == ID_MUSIC_2) //如果已经选择,则直接返回;
return;
GetMenu()->CheckMenuItem(m_Last_Music,MF_UNCHECKED);
m_Last_Music = ID_MUSIC_2;
GetMenu()->CheckMenuItem(ID_MUSIC_2,MF_CHECKED);
if(GetMenu()->GetMenuState(ID_CLOSE_MUSIC,MF_BYCOMMAND) == MF_CHECKED)
return; //如果菜单项"关闭音乐"已经选择,则直接返回;
mciSendCommand (m_OpenParms.wDeviceID, MCI_CLOSE, //关闭当前正在播放音乐;
MCI_NOTIFY, (DWORD)(LPVOID)&m_CloseParms);
m_OpenParms.lpstrElementName = m_Music[1];
mciSendCommand (NULL, MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &m_OpenParms);
mciSendCommand (m_OpenParms.wDeviceID, MCI_PLAY,
MCI_NOTIFY, (DWORD)(LPVOID)&m_PlayParms);
}
void CTEDlg::OnMusic3()
{
if(m_Last_Music == ID_MUSIC_3) //如果已经选择,则直接返回;
return;
GetMenu()->CheckMenuItem(m_Last_Music,MF_UNCHECKED);
m_Last_Music = ID_MUSIC_3;
GetMenu()->CheckMenuItem(ID_MUSIC_3,MF_CHECKED);
if(GetMenu()->GetMenuState(ID_CLOSE_MUSIC,MF_BYCOMMAND) == MF_CHECKED)
return; //如果菜单项"关闭音乐"已经选择,则直接返回;
mciSendCommand (m_OpenParms.wDeviceID, MCI_CLOSE, //关闭当前正在播放音乐;
MCI_NOTIFY, (DWORD)(LPVOID)&m_CloseParms);
m_OpenParms.lpstrElementName = m_Music[2];
mciSendCommand (NULL, MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &m_OpenParms);
mciSendCommand (m_OpenParms.wDeviceID, MCI_PLAY,
MCI_NOTIFY, (DWORD)(LPVOID)&m_PlayParms);
}
void CTEDlg::OnMusic4()
{
if(m_Last_Music == ID_MUSIC_4) //如果已经选择,则直接返回;
return;
GetMenu()->CheckMenuItem(m_Last_Music,MF_UNCHECKED);
m_Last_Music = ID_MUSIC_4;
GetMenu()->CheckMenuItem(ID_MUSIC_4,MF_CHECKED);
if(GetMenu()->GetMenuState(ID_CLOSE_MUSIC,MF_BYCOMMAND) == MF_CHECKED)
return; //如果菜单项"关闭音乐"已经选择,则直接返回;
mciSendCommand (m_OpenParms.wDeviceID, MCI_CLOSE, //关闭当前正在播放音乐;
MCI_NOTIFY, (DWORD)(LPVOID)&m_CloseParms);
m_OpenParms.lpstrElementName = m_Music[3];
mciSendCommand (NULL, MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &m_OpenParms);
mciSendCommand (m_OpenParms.wDeviceID, MCI_PLAY,
MCI_NOTIFY, (DWORD)(LPVOID)&m_PlayParms);
}
void CTEDlg::OnMusic5()
{
if(m_Last_Music == ID_MUSIC_5) //如果已经选择,则直接返回;
return;
GetMenu()->CheckMenuItem(m_Last_Music,MF_UNCHECKED);
m_Last_Music = ID_MUSIC_5;
GetMenu()->CheckMenuItem(ID_MUSIC_5,MF_CHECKED);
if(GetMenu()->GetMenuState(ID_CLOSE_MUSIC,MF_BYCOMMAND) == MF_CHECKED)
return; //如果菜单项"关闭音乐"已经选择,则直接返回;
mciSendCommand (m_OpenParms.wDeviceID, MCI_CLOSE, //关闭当前正在播放音乐;
MCI_NOTIFY, (DWORD)(LPVOID)&m_CloseParms);
m_OpenParms.lpstrElementName = m_Music[4];
mciSendCommand (NULL, MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &m_OpenParms);
mciSendCommand (m_OpenParms.wDeviceID, MCI_PLAY,
MCI_NOTIFY, (DWORD)(LPVOID)&m_PlayParms);
}
void CTEDlg::OnMusic6()
{
if(m_Last_Music == ID_MUSIC_6) //如果已经选择,则直接返回;
return;
GetMenu()->CheckMenuItem(m_Last_Music,MF_UNCHECKED);
m_Last_Music = ID_MUSIC_6;
GetMenu()->CheckMenuItem(ID_MUSIC_6,MF_CHECKED);
if(GetMenu()->GetMenuState(ID_CLOSE_MUSIC,MF_BYCOMMAND) == MF_CHECKED)
return; //如果菜单项"关闭音乐"已经选择,则直接返回;
mciSendCommand (m_OpenParms.wDeviceID, MCI_CLOSE, //关闭当前正在播放音乐;
MCI_NOTIFY, (DWORD)(LPVOID)&m_CloseParms);
m_OpenParms.lpstrElementName = m_Music[5];
mciSendCommand (NULL, MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &m_OpenParms);
mciSendCommand (m_OpenParms.wDeviceID, MCI_PLAY,
MCI_NOTIFY, (DWORD)(LPVOID)&m_PlayParms);
}
LRESULT CTEDlg::OnSer(WPARAM wParam, LPARAM lParam)
{
return 0;
}
LRESULT CTEDlg::OnRev(WPARAM wParam, LPARAM lParam)
{
return 0;
}
void CTEDlg::SetUDPserver()
{
// TODO: Add your control notification handler code here
if(m_server.UDPCreateSocket(this->m_hWnd,m_uPort)==FALSE)
{
m_state = _T("错误!不可使用");
return;
}
else
{
m_state = _T("欢迎使用");
// MessageBox("OK");
// m_sShowText="Server has been set ok!\r\n";
// GetDlgItem(IDC_SHOWTEXT)->SetWindowText(m_sShowText);
}
UpdateData(false);
}
BOOL CTEDlg::BroadSend(TCHAR* buffer,SOCKET s,UINT PORT)
{
struct sockaddr_in target;
target.sin_family = AF_INET;
target.sin_addr.S_un.S_addr = INADDR_BROADCAST;
target.sin_port = htons(PORT);
//以上是填充目标地址块
if((sendto(s, buffer, 3*MAX_LENGTH, 0, (struct sockaddr FAR*)&target,
sizeof(SOCKADDR))) == SOCKET_ERROR)
return FALSE;
//发送数据buffer
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -