?? wizard.cpp
字號:
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 + -