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

📄 wizard.cpp

📁 2D即时战略游戏源码.仿红色警戒之类的。不过有点粗糙
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	   else if(WizardProgress==CREDIT)
		  {menustate=0;
		   WizardProgress=MAINMENU;
	       WizardBlt(WizardProgress); 
        		    
		   return TRUE;
	      }
	   else if(WizardProgress==OPTIONS)
		  {menustate=0;
		   WizardProgress=MAINMENU;
	       WizardBlt(WizardProgress); 
        		    
		   return TRUE;
	      }

      else{
	  if((gnSP<4)&&(WizardProgress==CHOOSESP))WizardProgress=HOSTORJOIN;
	  
	   WizardBlt(WizardProgress); 
      if(gnSP==4)return FALSE;
	   return TRUE;
	  }
  }
if(gdwKeys & KEY_ESC)
  {while(gdwKeys==DI_ReadKeys(gdwKeys))
		    {};
	gdwKeys &=~KEY_ESC;
    if(WizardProgress==MAINMENU)
	      {ProgramState=EXIT;
		   PostMessage(ghWndMain, UM_ABORT, 0, 0 );
		    
				return FALSE;
          }
    else if(WizardProgress==CREDIT)
		  {menustate=0;
		   WizardProgress=MAINMENU;
	       WizardBlt(WizardProgress); 
		    
		   return TRUE;
	      }
	else if(WizardProgress==OPTIONS)
		  {menustate=0;
		   WizardProgress=MAINMENU;
	       WizardBlt(WizardProgress); 
		    
		   return TRUE;
	      }
	  
  }

mousedata=DI_ReadMouse();
GetCursorPos(&mousepos);

switch(WizardProgress)
{case MAINMENU:
      lm=menustate;
	if((mousepos.y<150)&&(mousepos.y>100)&&(mousepos.x>200)&&(mousepos.x<440))
	 {menustate=0;fresh=TRUE;}
	if((mousepos.y<210)&&(mousepos.y>160)&&(mousepos.x>200)&&(mousepos.x<440))
	{ menustate=1;fresh=TRUE;}
 		 
	if((mousepos.y<270)&&(mousepos.y>220)&&(mousepos.x>200)&&(mousepos.x<440))
	{menustate=2;fresh=TRUE;}
 		 

     if((mousepos.y<330)&&(mousepos.y>280)&&(mousepos.x>200)&&(mousepos.x<440))
	 {menustate=3;fresh=TRUE;}
 	if(fresh==TRUE)
	   {Blt(lpDDSBack,200,100+60*lm,240,50,lpButd[lm],0,0); 
	    Blt(lpDDSBack,200,100+60*menustate,240,50,lpBut[menustate],0,0);
	}
     break;
case CHOOSESP:
     ls=gnSP;
	if((mousepos.y<180)&&(mousepos.y>150)&&(mousepos.x>200)&&(mousepos.x<440))
	 {gnSP=0;fresh=TRUE;}
	if((mousepos.y<220)&&(mousepos.y>190)&&(mousepos.x>200)&&(mousepos.x<440))
	{ gnSP=1;fresh=TRUE;}
 		 
	if((mousepos.y<260)&&(mousepos.y>230)&&(mousepos.x>200)&&(mousepos.x<440))
	{gnSP=2;fresh=TRUE;}
 		 

     if((mousepos.y<300)&&(mousepos.y>270)&&(mousepos.x>200)&&(mousepos.x<440))
	 {gnSP=3;fresh=TRUE;}
 		 
 	if((mousepos.y<346)&&(mousepos.y>310)&&(mousepos.x>200)&&(mousepos.x<440))
	{ gnSP=4;fresh=TRUE;}
 		 
if(fresh)
{		   
   if(ls==4)
	     Blt(lpDDSBack,288,150+ls*40,68,36,lpBack,0,0);
    else
	   Blt(lpDDSBack,200,150+ls*40,238,29,lpSPBarOff[ls],0,0);
 

   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);
}
  break;

case HOSTORJOIN:
     {if(bIsHost)
			Blt(lpDDSBack,200,180,240,30,lpHostBar,0,0);
	 else	Blt(lpDDSBack,200,250,240,30,lpJoinBar,0,0);
	}
	if((mousepos.y<210)&&(mousepos.y>180)&&(mousepos.x>200)&&(mousepos.x<440))
	   {bIsHost=TRUE;fresh=TRUE;
         Blt(lpDDSBack,200,180,240,30,lpHostBar2,0,0); }
	if((mousepos.y<280)&&(mousepos.y>250)&&(mousepos.x>200)&&(mousepos.x<440))
	   {bIsHost=FALSE;fresh=TRUE;
        Blt(lpDDSBack,200,250,240,30,lpJoinBar2,0,0); }

	
    break;

case HOST:
    	if((mousepos.y<210)&&(mousepos.y>180)&&(mousepos.x>300)&&(mousepos.x<454))
		{
		i=0;   
		while(1)
		{ch=ReadChar();
		 if (ch=0xff)break;
		if(ch!=0)
		 {cTaskName[i]=(char)ch;
		   ch=0; 
		   i++;
			if(i==24)break;
		  }
		} 
		
         lpDDSBack->GetDC(&hDC);
		 SetBkMode(hDC, TRANSPARENT); 
         SetTextColor(hDC,RGB(100,50,128));
		 TextOut(hDC,310,190,cTaskName,i);
     //ReacquireInputDevices();

		 
         lpDDSBack->ReleaseDC(hDC);
		}
		break;
       

}

 if(mousedata.rgbButtons[0] & 0x80)
  {while((mousedata.rgbButtons[0] & 0x80))mousedata=DI_ReadMouse();
	 switch(WizardProgress)
	 {case CREDIT:
	       menustate=0;  
	       WizardProgress=MAINMENU;
		   WizardBlt(WizardProgress);
		   return TRUE;
		   break;
	 case OPTIONS:
	       menustate=0;  
	       WizardProgress=MAINMENU;
		   WizardBlt(WizardProgress);
		   return TRUE;
		   break;
	 
	 case MAINMENU:
	 if((mousepos.y<150)&&(mousepos.y>100)&&(mousepos.x>200)&&(mousepos.x<440))
	 {ProgramState=ALONE;return FALSE;}
	if((mousepos.y<210)&&(mousepos.y>160)&&(mousepos.x>200)&&(mousepos.x<440))
	{WizardProgress=OPTIONS;
	 
		WizardBlt(OPTIONS);return TRUE; }
 		 
	if((mousepos.y<270)&&(mousepos.y>220)&&(mousepos.x>200)&&(mousepos.x<440))
	{WizardProgress=CREDIT;
	 
		WizardBlt(CREDIT);return TRUE;}
 		 

     if((mousepos.y<330)&&(mousepos.y>280)&&(mousepos.x>200)&&(mousepos.x<440))
	 { ProgramState=EXIT;
	   PostMessage(ghWndMain, UM_ABORT, 0, 0 );return FALSE;}

	 break;
	 
	 
	 
	 case CHOOSESP:
	 if((mousepos.y<180)&&(mousepos.y>150)&&(mousepos.x>200)&&(mousepos.x<440))
      {  gnSP=0;
        WizardProgress=HOSTORJOIN;
		WizardBlt(WizardProgress);
		return TRUE;}
   if((mousepos.y<220)&&(mousepos.y>190)&&(mousepos.x>200)&&(mousepos.x<440))
         {  gnSP=1;
        WizardProgress=HOSTORJOIN;
		WizardBlt(WizardProgress);
		return TRUE;}
   if((mousepos.y<260)&&(mousepos.y>230)&&(mousepos.x>200)&&(mousepos.x<440))
		  {  gnSP=2;
        WizardProgress=HOSTORJOIN;
		WizardBlt(WizardProgress);
		return TRUE;}
  if((mousepos.y<346)&&(mousepos.y>310)&&(mousepos.x>288)&&(mousepos.x<356))
         return FALSE;
  if((mousepos.y<300)&&(mousepos.y>270)&&(mousepos.x>200)&&(mousepos.x<440))
		{gnSP=3;
		 WizardProgress=HOSTORJOIN;
		 WizardBlt(WizardProgress);
		 return TRUE;
        }
  break;

case HOSTORJOIN:

	 if((mousepos.y<210)&&(mousepos.y>180)&&(mousepos.x>200)&&(mousepos.x<440))
      {  bIsHost=TRUE;
        WizardProgress=HOST;
		WizardBlt(WizardProgress);
		return TRUE;}
     
	 if((mousepos.y<280)&&(mousepos.y>250)&&(mousepos.x>200)&&(mousepos.x<440))
      {  bIsHost=FALSE;
        WizardProgress=JOIN;
		WizardBlt(WizardProgress);
		return TRUE;}
	 if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>180)&&(mousepos.x<248))
      { 
        WizardProgress=CHOOSESP;
		WizardBlt(WizardProgress);
		return TRUE;}
	if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>392)&&(mousepos.x<460))
      { 
		return FALSE;}
	 break;
case HOST:
	   	 if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>180)&&(mousepos.x<248))
      {  
        WizardProgress=HOSTORJOIN;
		WizardBlt(WizardProgress);
		return TRUE;}
	 if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>392)&&(mousepos.x<460))
      { 
		return FALSE;}
	 if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>286)&&(mousepos.x<364))
	   {if(gnSP==3)
	      {WizardProgress=COMSET;
	       WizardBlt(WizardProgress);
	       } 
	 }
	 break;
case JOIN:
     if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>180)&&(mousepos.x<248))
      {  
        WizardProgress=HOSTORJOIN;
		WizardBlt(WizardProgress);
		return TRUE;}
	if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>392)&&(mousepos.x<460))
      { 
		return FALSE;}
   	if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>286)&&(mousepos.x<364))
	   {if(gnSP==3)
	      {WizardProgress=COMSET;
	       WizardBlt(WizardProgress);
	       } 
	 }
	 break; 
	 

case COMSET:
	       	 if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>180)&&(mousepos.x<248))
      { if(bIsHost)
        WizardProgress=HOST;
        else WizardProgress=JOIN;
		WizardBlt(WizardProgress);
		return TRUE;}
	if((mousepos.y<356)&&(mousepos.y>320)&&(mousepos.x>392)&&(mousepos.x<460))
      { 
		return FALSE;}
	 break; 
	 

	 
	}
  }





 return TRUE;     
}


/*
 * EnumSP
 *
 * DirectPlayEnumerate callback. Stores the service provider information in the 
 * passed in list box control.
 */
BOOL WINAPI EnumSP(LPGUID lpGuid, LPTSTR lptszDesc, DWORD dwMajorVersion,
                   DWORD dwMinorVersion, LPVOID lpv)
{
  /*  LONG iIndex;
    HWND hWnd = (HWND) lpv;
    LPGUID lpSPGuid;

    // insert service provider description in the list box item
    iIndex = SendMessage(hWnd, LB_ADDSTRING, 0, (LPARAM) lptszDesc);

    // allocate memory to remember the service provider guid
    lpSPGuid = (LPGUID) malloc(sizeof(GUID));
    if (!lpSPGuid) return FALSE;

    // copy guid
    *lpSPGuid = *lpGuid;

    // store the service provider guid pointer as item data
    if (iIndex != LB_ERR)
        SendMessage(hWnd, LB_SETITEMDATA, iIndex, (LPARAM) lpSPGuid);*/

    return(TRUE);
}






void WizardBlt(int type)
{int i;
 DDBLTFX ddbltfx;
	HRESULT hr;
switch(type)
{case CREDIT:
         

		ddbltfx.dwSize = sizeof(ddbltfx);
	    ddbltfx.dwFillColor = 0;
	    lpDDSBack->Blt(
	    NULL,        // Destination
	    NULL, NULL,  // Source rectangle
	    DDBLT_COLORFILL, &ddbltfx);

         Blt(lpDDSBack,0,0,640,480,lpCredit,0,0);
		 break;
case OPTIONS:
	   	ddbltfx.dwSize = sizeof(ddbltfx);
	    ddbltfx.dwFillColor = 0;
	    lpDDSBack->Blt(
	    NULL,        // Destination
	    NULL, NULL,  // Source rectangle
	    DDBLT_COLORFILL, &ddbltfx);

         Blt(lpDDSBack,0,0,640,480,lpOptions,0,0);
		 break;

 case MAINMENU:
      DDBLTFX ddbltfx;

		ddbltfx.dwSize = sizeof(ddbltfx);
	    ddbltfx.dwFillColor = 0;
	    lpDDSBack->Blt(
	    NULL,        // Destination
	    NULL, NULL,  // Source rectangle
	    DDBLT_COLORFILL, &ddbltfx);


      
      for(i=0;i<4;i++)
      {Blt(lpDDSBack,200,100+60*i,240,50,lpButd[i],0,0); 
	  }
	  Blt(lpDDSBack,200,100,240,50,lpBut[0],0,0); 
	  break;


case CHOOSESP:
      Blt(lpDDSBack,80,96,480,288,lpWizardBack,0,0);
	  Blt(lpDDSBack,288,310,68,36,lpBack,0,0);
	  Blt(lpDDSBack,200,150,238,29,lpSPBarOn[0],0,0);

	  for(i=1;i<4;i++)
	  {Blt(lpDDSBack,200,150+i*40,238,29,lpSPBarOff[i],0,0);
	  }	 
	  hr=lpDDSPrimary->Flip(NULL,0);

	  if(hr!=DD_OK)return;
		break;
case  HOSTORJOIN:
		  Blt(lpDDSBack,80,96,480,288,lpWizardBack,0,0);
        	Blt(lpDDSBack,180,320,68,36,lpBack,0,0);
			Blt(lpDDSBack,392,320,68,36,lpCancel,0,0);
			Blt(lpDDSBack,200,180,240,30,lpHostBar,0,0);
			Blt(lpDDSBack,200,250,240,30,lpJoinBar,0,0);
   //  hr=lpDDSPrimary->Flip(NULL,0);


	break;
case HOST:
      Blt(lpDDSBack,80,96,480,288,lpWizardBack,0,0);
		   	Blt(lpDDSBack,180,320,68,36,lpBack,0,0);
			Blt(lpDDSBack,392,320,68,36,lpCancel,0,0);
			Blt(lpDDSBack,286,320,68,36,lpOk,0,0);
		
           Blt(lpDDSBack,300,180,154,30,lpInput3,0,0);
		   Blt(lpDDSBack,300,250,154,30,lpInput3,0,0);

	break;
case JOIN:
           Blt(lpDDSBack,80,96,480,288,lpWizardBack,0,0);
		   Blt(lpDDSBack,180,320,68,36,lpBack,0,0);
		   Blt(lpDDSBack,392,320,68,36,lpCancel,0,0);
		   Blt(lpDDSBack,286,320,68,36,lpOk,0,0);

		   Blt(lpDDSBack,177,120,286,130,lpPanel,0,0); 
		   Blt(lpDDSBack,300,270,154,30,lpInput3,0,0);
		
	break;
case COMSET:
             Blt(lpDDSBack,80,96,480,288,lpWizardBack,0,0);
			 Blt(lpDDSBack,180,320,68,36,lpBack,0,0);
			 Blt(lpDDSBack,392,320,68,36,lpCancel,0,0);
    		 Blt(lpDDSBack,286,320,68,36,lpOk,0,0);

			 for(i=0;i<4;i++)
			 {Blt(lpDDSBack,420,150+i*40,60,20,lpInput1,0,0); 
             }  
		
	break;


}
}
/*LONG CALLBACK WizardProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{POINT mouse;
switch(message)
{case WM_CREATE:
     // SetFocus(hWnd);
	  
	  WizardBlt(CHOOSESP);
	 break;
case WM_PAINT:
	break;

case WM_KEYDOWN:
	  switch(wParam)
	  {case VK_ESCAPE:
	     DestroyWindow(hWnd);
	   break;
	  }
	 break;
case WM_LBUTTONDOWN:
	mouse.x=LOWORD(lParam);
	mouse.y=HIWORD(lParam);
      DoMouseThing(mouse);
	  break;

default:
	return(DefDlgProc(hWnd,message,wParam,lParam));
			
	
}
}    */


/*void DoMouseThing(POINT mouse)
{//LPGUID							lpGuid;
 HRESULT			hr;
switch(WizardProgress)
{case  CHOOSESP:
	if((mouse.x>100)&&(mouse.x<300)&&(mouse.y>60)&&(mouse.y<100))
     {DPlayRelease();
      gSPGuid =DPAID_INet; 
         
      // remember the selection
           
        // create directplay object
      if ((hr = DPlayCreate(&gSPGuid)) == DP_OK)
                    {
                       WizardProgress=HOSTORJOIN;
					   WizardBlt(HOSTORJOIN);
                    }
	}  
    break;             
	}

}*/
/*
 * DlgProcChooseProvider
 *
 * Dialog procedure for the choose service provider dialog
 */



/*
 * EnumSession
 *
 * EnumSessions callback. Inserts session description information in the passed in 
 * tree view control.
 */
BOOL WINAPI EnumSession(LPCDPSESSIONDESC2 lpDPSessionDesc, LPDWORD lpdwTimeOut, DWORD dwFlags, 
                        LPVOID lpContext)
{
    HWND hWnd = (HWND) lpContext;
    HTREEITEM hItem;
    LPGUID lpGuid;

    if(dwFlags & DPESC_TIMEDOUT) return FALSE;       // don't try again

    if (hWnd == NULL) return FALSE;

    // allocate memory to remember the guid
    lpGuid = (LPGUID) malloc(sizeof(GUID));
    if (!lpGuid) return FALSE;

    *lpGuid = lpDPSessionDesc->guidInstance;

	//Here Add item to tree
/*#ifdef UNICODE
    hItem = AddItemToTree(hWnd, lpDPSessionDesc->lpszSessionName, (DWORD)lpGuid, 1);
#else

⌨️ 快捷键说明

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