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

📄 wizard.cpp

📁 2D即时战略游戏VC源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/*==========================================================================
 *
 *  Copyright (C) 1995-1996 Microsoft Corporation. All Rights Reserved.
 *
 *  File:       wizard.c
 *  Content:    User input (setup wizard) related code
 *
 *
 ***************************************************************************/
#include <windows.h>
#include<stdio.h>
#include "prsht.h"
#include "wizard.h"
#include "util.h"
#include "comm.h"
#include"ddraw.h"
#include"dplay.h"
#include"dplobby.h"
#include"ddutil.h"
#include"d3dtypes.h"
#include"draw.h"
#include"dinput.h"
#include"basic.h"
extern "C"{
#include"input.h"

}

//#include "global.h"
#define MAINMENU   0
#define CHOOSESP   1
#define HOSTORJOIN  2
#define HOST        3
#define JOIN		4
#define COMSET      5
#define LBUTTONDOWN	128
//mainmenu state
#define	START		8
#define OPTIONS      32
#define CREDIT      16
#define EXIT        64			


LONG CALLBACK WizardProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);

void WizardBlt(int type);

BOOL ProcessInput(void);




/*
 * Externals
 */
extern HWND ghWndMain;
extern LPDIRECTDRAW		lpDD;
extern LPDIRECTDRAWSURFACE lpDDSPrimary;
extern LPDIRECTDRAWSURFACE lpDDSBack;	
/*
 * Globals to this module

 */

 extern DWORD				gdwKeys;
 extern WORD				ProgramState;	
 int menustate=0;

DWORD				gdwButton;
DWORD				KeyTime;
char    cTaskName[24];
DWORD   Time;
static HFONT                    ghTitleFont;        // font for titles on setup wizard
static HFONT                    ghHeadingFont;      // font for headings on setup wizard
static int                      gnSP,gnSession,gnPlayer; // indexes for tree view images
static HKEY                     ghDuelKey=NULL;     // duel registry key handle
static DWORD                    gdwDuelDisp;        // key created or opened
static GUID                     gSPGuid;            // currently selected service provider guid
static HTREEITEM                ghtiSession;        // points to a visible session item in tree control
BOOL							bConnected;                                                    //  used for inserting players into tree control
static HWND                     ghWndSPCtl;         // handle to service provider control
static HWND						hWndWizard;
BOOL							bIsHost;
//GUID				Guid_Int=(GUID)DPAID_INet;
//GUID				Guid_Ipx=(GUID)DPAID_ServiceProvider;
//GUID				Guid_Mod=(GUID)DPAID_Phone;
//GUID				Guid_Com=(GUID)DPAID_ComPort;
int								WizardProgress;

LPDIRECTDRAWSURFACE             lpWizardBack;
LPDIRECTDRAWSURFACE				lpSPBarOff[4];
LPDIRECTDRAWSURFACE				lpSPBarOn[4];
LPDIRECTDRAWSURFACE				lpRadioUp;
LPDIRECTDRAWSURFACE				lpRadioDn;
LPDIRECTDRAWSURFACE				lpPageUp;
LPDIRECTDRAWSURFACE				lpPageDn;
LPDIRECTDRAWSURFACE				lpPageUp2;
LPDIRECTDRAWSURFACE				lpPageDn2;

LPDIRECTDRAWSURFACE				lpHostBar;
LPDIRECTDRAWSURFACE				lpHostBar2;
LPDIRECTDRAWSURFACE				lpJoinBar;
LPDIRECTDRAWSURFACE				lpJoinBar2;
LPDIRECTDRAWSURFACE				lpPanel;
LPDIRECTDRAWSURFACE				lpInput1;
LPDIRECTDRAWSURFACE				lpInput2;
LPDIRECTDRAWSURFACE				lpInput3;
LPDIRECTDRAWSURFACE				lpBack;
LPDIRECTDRAWSURFACE				lpBackOn;

LPDIRECTDRAWSURFACE				lpOk;
LPDIRECTDRAWSURFACE				lpCancel;
LPDIRECTDRAWSURFACE				lpBut[4];
LPDIRECTDRAWSURFACE				lpButd[4];	
LPDIRECTDRAWSURFACE	            lpCredit;
LPDIRECTDRAWSURFACE	            lpOptions;

	
void ReadMisc(void)
{char File[20];																
 
 /*sprintf(File,"bmp\\wizard.bmp");													
 lpWizardBack=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpWizardBack,CLR_INVALID);

 
 sprintf(File,"bmp\\bar_int.bmp");													
 lpSPBarOff[0]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpSPBarOff[0],CLR_INVALID);

  sprintf(File,"bmp\\bar_int2.bmp");													
 lpSPBarOn[0]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpSPBarOn[0],CLR_INVALID);
 
  sprintf(File,"bmp\\bar_ipx.bmp");													
 lpSPBarOff[1]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpSPBarOff[1],CLR_INVALID);

  sprintf(File,"bmp\\bar_ipx2.bmp");													
 lpSPBarOn[1]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpSPBarOn[1],CLR_INVALID);

  sprintf(File,"bmp\\bar_mod.bmp");													
 lpSPBarOff[2]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey( lpSPBarOff[2],CLR_INVALID);

  sprintf(File,"bmp\\bar_mod2.bmp");													
 lpSPBarOn[2]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpSPBarOn[2],CLR_INVALID);

  sprintf(File,"bmp\\bar_com.bmp");													
 lpSPBarOff[3]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey( lpSPBarOff[3],CLR_INVALID);

  sprintf(File,"bmp\\bar_com2.bmp");													
 lpSPBarOn[3]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpSPBarOn[3],CLR_INVALID);

  sprintf(File,"bmp\\radioup.bmp");													
 lpRadioUp=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpRadioUp,CLR_INVALID);

  sprintf(File,"bmp\\radiodn.bmp");													
 lpRadioDn=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpRadioDn,CLR_INVALID);

 
  sprintf(File,"bmp\\pageup.bmp");													
 lpPageUp=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpPageUp,CLR_INVALID);

 
  sprintf(File,"bmp\\pageup2.bmp");													
 lpPageUp2=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpPageUp2,CLR_INVALID);

  sprintf(File,"bmp\\pagedn.bmp");													
 lpPageDn=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpPageDn,CLR_INVALID);

  sprintf(File,"bmp\\pagedn2.bmp");													
 lpPageDn2=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpPageDn2,CLR_INVALID);

   sprintf(File,"bmp\\hostbar.bmp");													
 lpHostBar=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpHostBar,CLR_INVALID);

   sprintf(File,"bmp\\hostbar2.bmp");													
 lpHostBar2=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpHostBar2,CLR_INVALID);

   sprintf(File,"bmp\\joinbar.bmp");													
 lpJoinBar=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpJoinBar,CLR_INVALID);

   sprintf(File,"bmp\\joinbar2.bmp");													
 lpJoinBar2=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpJoinBar2,CLR_INVALID);

  sprintf(File,"bmp\\panel.bmp");													
 lpPanel=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpPanel,CLR_INVALID);

  sprintf(File,"bmp\\input1.bmp");													
 lpInput1=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpInput1,CLR_INVALID);

  sprintf(File,"bmp\\input2.bmp");													
 lpInput2=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpInput2,CLR_INVALID);

  sprintf(File,"bmp\\input3.bmp");													
 lpInput3=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpInput3,CLR_INVALID);

  sprintf(File,"bmp\\backup.bmp");													
 lpBack=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpBack,CLR_INVALID);

  sprintf(File,"bmp\\backon.bmp");													
 lpBackOn=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpBackOn,CLR_INVALID);

  sprintf(File,"bmp\\okup.bmp");													
 lpOk=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpOk,CLR_INVALID);

  sprintf(File,"bmp\\cancelup.bmp");													
 lpCancel=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpCancel,CLR_INVALID);
*/

 sprintf(File,"bmp\\credit.bmp");													
 lpCredit=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpCredit,CLR_INVALID);

 sprintf(File,"bmp\\options.bmp");													
 lpOptions=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpCredit,CLR_INVALID);

for(int i=0;i<4;i++)
{sprintf(File,"bmp\\but%d.bmp",i);													
 lpBut[i]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpBut[i],CLR_INVALID);
}

for(int l=0;l<4;l++)
{sprintf(File,"bmp\\butd%d.bmp",l);													
 lpButd[l]=DDLoadBitmap(lpDD,File,0,0);
 DDSetColorKey(lpButd[l],CLR_INVALID);
}


}


void ReleaseMisc(void)													
{int i;
/*	if(lpWizardBack!=NULL)
  { lpWizardBack->Release();
    lpWizardBack=NULL;
}
for(i=0;i<4;i++)
if(lpSPBarOff[i]!=NULL)
{   lpSPBarOff[i]->Release();
lpSPBarOff[i]!=NULL;
}
for(i=0;i<4;i++)
if(lpSPBarOn[i]!=NULL)
{   lpSPBarOn[i]->Release();
lpSPBarOn[i]!=NULL;
}


 if(lpRadioUp!=NULL)
 {	 lpRadioUp->Release();
 lpRadioUp=NULL;
 }
 if(lpRadioDn!=NULL)
 {	 lpRadioDn->Release();
 lpRadioDn=NULL;
 }
 if(lpPageUp!=NULL)
 {	 lpPageUp->Release();
 lpPageUp=NULL;
 }
 if(lpPageUp2!=NULL)
 {	 lpPageUp2->Release();
 lpPageUp2=NULL;
 }
 if(lpPageDn!=NULL)
 {	 lpPageDn->Release();
 lpPageDn=NULL;
 }
 if(lpPageDn2!=NULL)
 {	 lpPageDn2->Release();
 lpPageDn2=NULL;
 }
if(lpHostBar!=NULL)
{   lpHostBar->Release();
lpHostBar=NULL;
}
if(lpHostBar2!=NULL)
{    lpHostBar2->Release();
lpHostBar2=NULL;
}

if(lpJoinBar!=NULL)
{    lpJoinBar->Release();
lpJoinBar=NULL;
}
if(lpJoinBar2!=NULL)
{    lpJoinBar2->Release();
lpJoinBar2=NULL;
}
if(lpPanel!=NULL)
{    lpPanel->Release();
lpPanel=NULL;
}
if(lpInput1!=NULL)
{	 lpInput1->Release();
lpInput1=NULL;
}
if(lpInput2!=NULL)
{	 lpInput2->Release();
lpInput2=NULL;
}

if(lpInput3!=NULL)
{	 lpInput3->Release();
lpInput3=NULL;
}
if(lpOk!=NULL)
{	 lpOk->Release();
lpOk=NULL;
}

if(lpBack!=NULL)
{    lpBack->Release();
lpBack=NULL;
}

if(lpBackOn!=NULL)
{    lpBackOn->Release();
lpBack=NULL;
}
if(lpCancel!=NULL)
{	 lpCancel->Release();					
lpCancel=NULL;
}


  */
if(lpCredit!=NULL)
{	 lpCredit->Release();					
lpCredit=NULL;
}

if(lpOptions!=NULL)
{	 lpOptions->Release();					
lpOptions=NULL;
}

for(int n=0;n<4;n++)
{if(lpBut[n]!=NULL)
    lpBut[n]->Release();
lpBut[n]=NULL;
}

for(int m=0;m<4;m++)
{if(lpButd[m]!=NULL)
    lpButd[m]->Release();
lpButd[m]=NULL;
}


}



/*
 * DoWizard
 *
 * Creates and launches a wizard (property sheets) for user input
 */






GUID WINAPI DoWizard(LPVOID pv)
{ 
	//process user control;
 ReadMisc();
  
    WizardProgress=MAINMENU;
	gnSP=0;//index
	gdwKeys=0;
 //  InitWizardWindow();
	 WizardBlt(MAINMENU);

  
  while( ProcessInput() )
    {}
	
	  
    
    
    if(ProgramState==MUD) 
    // was communication initialized correctly ?
    {if (bConnected)
    {
        // if so, launch game
        PostMessage( ghWndMain, UM_LAUNCH, 0, 0 );
	
    }
    else 
    {
        // otherwise, abort game
        PostMessage( ghWndMain, UM_ABORT, 0, 0 );
    }

	}
     ReleaseMisc();
    return(gSPGuid);
    
	
 	
}








BOOL ProcessInput(void)
{//Read data from input 
  DIMOUSESTATE			mousedata;
  POINT mousepos;
  int ls=gnSP;
  BOOL fresh=FALSE;
  int lm=menustate;  
  
  
  int    ch;
  int i;

  HDC hDC;
  int strnum=0;

	
	gdwKeys=DI_ReadKeys(gdwKeys);
	lpDDSPrimary->Flip(NULL,0);



	
  if(gdwKeys & KEY_DOWN)
  {
     if(WizardProgress==MAINMENU)
	 {//if(menustate==3)
	    //Blt(lpDDSBack,200,100,240,50,lpButd[0],0,0);
	  Blt(lpDDSBack,200,100+60*menustate,240,50,lpButd[menustate],0,0);

	  menustate++;
	  if(menustate==4)menustate-=4;
          Blt(lpDDSBack,200,100+60*menustate,240,50,lpBut[menustate],0,0);

       lpDDSPrimary->Flip(NULL,0);

		  while(gdwKeys==DI_ReadKeys(gdwKeys))
		  {};
	      return TRUE;
	 }




		 else if(WizardProgress==CHOOSESP)
		  {if(gnSP==4)
		      Blt(lpDDSBack,288,150+gnSP*40,68,36,lpBack,0,0);
           else
			  Blt(lpDDSBack,200,150+gnSP*40,238,29,lpSPBarOff[gnSP],0,0);
           

 		  gnSP++;
		  if(gnSP==5)gnSP-=5;
		  if(gnSP==4)
		         Blt(lpDDSBack,288,150+gnSP*40,68,36,lpBackOn,0,0);
		  else 
			     Blt(lpDDSBack,200,150+gnSP*40,238,29,lpSPBarOn[gnSP],0,0); 
		  }
		  	lpDDSPrimary->Flip(NULL,0);

		  while(gdwKeys==DI_ReadKeys(gdwKeys))
		  {};
	      return TRUE;
  }


if((gdwKeys & KEY_RETURN))
     {while(gdwKeys==DI_ReadKeys(gdwKeys))
		    {};
	gdwKeys &=~KEY_RETURN;
      if(WizardProgress==MAINMENU)
	  {if(menustate==0){ProgramState=ALONE;
				return FALSE;}
       if(menustate==1){WizardProgress=OPTIONS;
		     WizardBlt(OPTIONS);}
	    
	   if(menustate==2){WizardProgress=CREDIT;
		     WizardBlt(CREDIT);}
	   if(menustate==3){ProgramState=EXIT;
		   PostMessage( ghWndMain, UM_ABORT, 0, 0 );
				return FALSE;}


	  }

⌨️ 快捷键说明

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