?? ddcheck.cpp
字號:
/////////////////////////
// DDCHECKBOX.cpp : v0010
// Written by : Li Haijun
// Compiler : Microsoft Visual C++ 4.0
// v0010 : Nov.13.1996
/////////////////////////
#include <stdio.h>
#include "stdafx.h"
#include "Assert.h"
#include "DDCompo.h"
#include "DDCheck.h"
#include "ddmenu.h"
#include "Marco.h"
#include "cbgame.h"
////////////////////////////
#include "l_allbmp.h"
extern char bmpfilename[30];
extern char listfilename[30];
/////////////////////////////////////
/////////////////////////////////////////////////
// to restore all check-box's pointer
class CDDCheckBoxUnit * pAllCheckBoxUnit[MAX_CHECKBOXUNIT];
////////////////////////////////////////////////////
// major parameter for bitmap(it record the current state of operate)
class CDDCheckBox * pCurrentCheckBox = NULL; // a pointer point to the current check-box
class CDDCheckBox * pPreviousCheckBox = NULL; // a pointer point to the previous check-box
int nPreviousCheckBoxState = NONE; // previous check-box's state,0-uncheck-up,1-uncheck-down,2-check-up,3-check-down,4-disable
int nCurrentCheckBoxState = NONE; // current check-box's state,0-uncheck-up,1-uncheck-down,2-check-up,3-check-down,4-disable
////////////////////////////////////
// all menu
////////////////////////////////////
extern CDDMenu * CurrentMenu;
extern CDDMenu Menu_Main;
extern CDDMenu Menu_NewGame;
extern CDDMenu Menu_MainLoad;
extern CDDMenu Menu_NetWork;
extern CDDMenu Menu_NetWork_InputName;
extern CDDMenu Menu_NetWork_Serial;
extern CDDMenu Menu_NetWork_Internet;
extern CDDMenu Menu_NetWork_Ipx;
extern CDDMenu Menu_NetWork_SetNet;
extern CDDMenu Menu_NetWork_SetNet_SelectMap;
extern CDDMenu Menu_NetWork_SetNet_SelectKing;
extern CDDMenu Menu_NetWork_Modem;
/////////////////////////////
// system menu structure
extern CDDMenu Menu_System;
extern CDDMenu Menu_System_Save;
extern CDDMenu Menu_System_Load;
extern CDDMenu Menu_System_Query;
extern CDDMenu Menu_System_Query_General_1;
extern CDDMenu Menu_System_Query_General_2;
extern CDDMenu Menu_System_Query_Army;
extern CDDMenu Menu_System_Query_Building;
extern CDDMenu Menu_System_Query_Campaign_Mission;
extern CDDMenu Menu_System_Option;
extern CDDMenu Menu_System_Help;
extern CDDMenu Menu_System_Help_Operate;
extern CDDMenu Menu_System_Help_Icon;
extern CDDMenu Menu_System_Help_Game;
extern CDDMenu Menu_System_Exit;
///////////////////////////
// menu to select general
extern CDDMenu Menu_Select_General;
// menu to show the information of the generals want to single battle
extern CDDMenu Menu_Single ;
extern CDDMenu Menu_Single_Reject ;
extern CDDMenu Menu_Single_Result ;
/////////////////////////////////////////////////
// construct function
CDDCheckBox::CDDCheckBox()
{
m_nFileNameId = NONE;
m_szOneBitmap.cx = 0L;
m_szOneBitmap.cy = 0L;
m_rTotal.left = 0L;
m_rTotal.top = 0L;
m_rTotal.right = 0L;
m_rTotal.bottom = 0L;
m_rCurrent.left = 0L;
m_rCurrent.top = 0L;
m_rCurrent.right = 0L;
m_rCurrent.bottom = 0L;
m_dwX = 0; m_dwY = 0;
m_bSet = FALSE;
m_nID = 0;
m_nState = CHECKBOX_NOCHECK_UP;
m_nPart = 0;
m_bEnableSound = TRUE;
}
/////////////////////////////////////////////////
// disconstruct function
CDDCheckBox::~CDDCheckBox( )
{
Release();
m_nFileNameId = NONE;
m_bSet = FALSE;
m_bEnableSound = TRUE;
}
BOOL CDDCheckBox::PreLoad(int FilenameId, int x, int y,
int OneBitmapWidth/*=0*/, int OneBitmapHeight/*=0*/)
{
char fname[20];
HRESULT ddrval;
DDSURFACEDESC ddsd;
//////////////////////////////////////////////////
_itoa( FilenameId, fname, 10 );
class CPicture_imageall picture;
picture.image_open_compress(bmpfilename);
picture.image_open_index(listfilename);
picture.LoadBitmap( &m_BitmapSurface, FilenameId );
picture.image_close_index();
picture.image_close_compress();
/////////////////////////////////////////////////////////
// to set the value of m_FileName
m_nFileNameId = FilenameId; //set the member veriable m_FileName
//
// get size of surface.
//
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_HEIGHT | DDSD_WIDTH;
ddrval = m_BitmapSurface.GetSurface()->GetSurfaceDesc(&ddsd);
if(ddrval != DD_OK)
return FALSE;
m_rTotal.left = m_rTotal.top = 0;
m_rTotal.right = ddsd.dwWidth;
m_rTotal.bottom = ddsd.dwHeight;
// to set the value of m_szOneBitmap
if( (OneBitmapWidth==0)&&(OneBitmapHeight==0) )
{
// I assume that all single bitmaps' height is equal to it's width
if(m_rTotal.bottom > m_rTotal.right)
m_szOneBitmap.cx = m_szOneBitmap.cy = m_rTotal.right;
else
m_szOneBitmap.cx = m_szOneBitmap.cy = m_rTotal.bottom;
// to set the value of m_rCurrent
m_rCurrent.left = m_rCurrent.top = 0;
m_rCurrent.right = m_rCurrent.bottom = m_szOneBitmap.cx;
}
else if( OneBitmapWidth * OneBitmapHeight == 0 )
return FALSE;
else
{
// I assume that all single bitmaps' height is not equal to it's width
m_szOneBitmap.cx = OneBitmapWidth;
m_szOneBitmap.cy = OneBitmapHeight;
// to set the value of m_rCurrent
m_rCurrent.left = m_rCurrent.top = 0;
m_rCurrent.right = OneBitmapWidth;
m_rCurrent.bottom = OneBitmapHeight;
}
//to set the value of m_dwX, m_dwY
m_dwX = x; m_dwY = y;
return TRUE;
}
// to set the id of this check-box
void CDDCheckBox::SetID(int ID)
{
m_nID = ID ; // button id
return ;
}
// to set the state of this check-box
void CDDCheckBox::SetState( int state/*=-1*/ )
{
if( state == -1 )
m_nState = (m_nState+1)%4 ; // to set this check-box's state
else
{
m_nState = state;
}
if( state == CHECKBOX_HIDE )
return ;
if( m_szOneBitmap.cx == m_rTotal.right )
{
m_rCurrent.left = m_rTotal.left;
m_rCurrent.top = m_rTotal.top + m_nState * m_szOneBitmap.cy;
m_rCurrent.right = m_rCurrent.left + m_szOneBitmap.cx;
m_rCurrent.bottom = m_rCurrent.top + m_szOneBitmap.cy;
}
else
{
m_rCurrent.left = m_rTotal.left + m_nState * m_szOneBitmap.cx;
m_rCurrent.top = m_rTotal.top;
m_rCurrent.right = m_rCurrent.left + m_szOneBitmap.cx;
m_rCurrent.bottom = m_rCurrent.top + m_szOneBitmap.cy;
}
}
//to get the state of this check-box
int CDDCheckBox::GetState()
{
return m_nState;
}
// to send a message when you changed the state of a check-box
void CDDCheckBox::SendMessage(int state)
{
if( CurrentMenu == &Menu_NetWork_SetNet )
{
// to post the message to others your state
if( state == CHECKBOX_CHECK_UP )
{
// PostMessage(hwndGame, WM_COMMAND, m_nID, 0);
switch(m_nID)
{
case BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE1 :
{
GAME_bNetPlayerOK[1] = TRUE ;
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE1, 0);
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE2 :
{
GAME_bNetPlayerOK[2] = TRUE ;
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE2, 0);
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE3 :
{
GAME_bNetPlayerOK[3] = TRUE ;
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE3, 0);
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE4 :
{
GAME_bNetPlayerOK[4] = TRUE ;
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE4, 0);
}
break;
////////////////////////////////////////////////////////////////////
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY11 :
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY12 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY12, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY21, 0);
// pAllCheckBoxUnit[4]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[4]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY13 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY13, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY31, 0);
// pAllCheckBoxUnit[8]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[8]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY14 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY14, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY41, 0);
// pAllCheckBoxUnit[12]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[12]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY21 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY21, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY12, 0);
// pAllCheckBoxUnit[1]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[1]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY22 :
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY23 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY23, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY32, 0);
// pAllCheckBoxUnit[9]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[9]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY24 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY24, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY42, 0);
// pAllCheckBoxUnit[13]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[13]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY31 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY31, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY13, 0);
// pAllCheckBoxUnit[2]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[2]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY32 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY32, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY23, 0);
// pAllCheckBoxUnit[6]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[6]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY33 :
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY34 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY34, 0);
// pAllCheckBoxUnit[14]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[14]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY41 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY41, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY14, 0);
// pAllCheckBoxUnit[3]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[3]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY42 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY42, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY24, 0);
// pAllCheckBoxUnit[7]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[7]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY43 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY43, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY34, 0);
// pAllCheckBoxUnit[11]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[11]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY44 :
break;
}
}
else if( state == CHECKBOX_NOCHECK_UP)
{
switch(m_nID)
{
case BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE1 :
{
GAME_bNetPlayerOK[1] = FALSE ;
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_NOAGREE1, 0);
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE2 :
{
GAME_bNetPlayerOK[2] = FALSE ;
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_NOAGREE2, 0);
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE3 :
{
GAME_bNetPlayerOK[3] = FALSE ;
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_NOAGREE3, 0);
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_AGREE4 :
{
GAME_bNetPlayerOK[4] = FALSE ;
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_NOAGREE4, 0);
}
break;
////////////////////////////////////////////////////////////////////
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY11 :
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY12 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_NOALLY12, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_NOALLY21, 0);
// pAllCheckBoxUnit[4]->m_pCheckBox[0]->SetState(state) ;
// pAllCheckBoxUnit[4]->m_pCheckBox[0]->Show() ;
}
break;
case BUTTON_MENU_MAIN_NETWORK_SETNET_ALLY13 :
{
PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_NOALLY13, 0);
// PostMessage(hwndGame, WM_COMMAND, BUTTON_MENU_MAIN_NETWORK_SETNET_NOALLY31, 0);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -