示例#1
0
static BOOL CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
	if (Msg == WM_INITDIALOG) {

//		EnableWindow(hScrnWnd, FALSE);

		hInpDIPSWDlg = hDlg;
		InpDIPSWInit();
		if (!NetworkGame() && bAutoPause) {
			bRunPause = 1;
		}
		return TRUE;
	}

    if (Msg == WM_CLOSE) {
		EnableWindow(hScrnWnd, TRUE);
		DestroyWindow(hInpDIPSWDlg);
		return 0;
	}

	if (Msg == WM_DESTROY) {
		InpDIPSWCancel();
		InpDIPSWExit();
		return 0;
	}

	if (Msg == WM_COMMAND) {
		int Id = LOWORD(wParam);
		int Notify = HIWORD(wParam);

		if (Id == IDOK && Notify == BN_CLICKED) {			// OK button
			bOK = true;
			SendMessage(hDlg, WM_CLOSE, 0, 0);
			return 0;
		}
		if (Id == IDCANCEL && Notify == BN_CLICKED) {		// cancel = close
			SendMessage(hDlg, WM_CLOSE, 0, 0);
			return 0;
		}

		// New DIPswitch value selected
		if (Id == IDC_INPCX1_VALUE && Notify == CBN_SELCHANGE) {
			BurnDIPInfo bdi = {0, 0, 0, 0, NULL};
			struct GameInp *pgi;
			int nSel = SendMessage(GetDlgItem(hInpDIPSWDlg, IDC_INPCX1_VALUE), CB_GETCURSEL, 0, 0);
			int j = 0;
			for (int i = 0; i <= nSel; i++) {
				do {
					BurnDrvGetDIPInfo(&bdi, nDIPGroup + 1 + j++);
				} while (bdi.nFlags == 0);
			}
			pgi = GameInputs + bdi.nInput + nDIPOffset;
			pgi->Input.Constant.nConst = (pgi->Input.Constant.nConst & ~bdi.nMask) | (bdi.nSetting & bdi.nMask);
			if (bdi.nFlags & 0x40) {
				while (BurnDrvGetDIPInfo(&bdi, nDIPGroup + 1 + j++) == 0) {
					if (bdi.nFlags == 0) {
						pgi = GameInputs + bdi.nInput + nDIPOffset;
						pgi->Input.Constant.nConst = (pgi->Input.Constant.nConst & ~bdi.nMask) | (bdi.nSetting & bdi.nMask);
					} else {
						break;
					}
				}
			}

			InpDIPSWListMake();
			return 0;
		}

		// New DIPswitch selected
		if (Id == IDC_INPC_RESET && Notify == BN_CLICKED) {

			InpDIPSWResetDIPs();

			InpDIPSWListMake();								// refresh view
			SendMessage(GetDlgItem(hInpDIPSWDlg, IDC_INPCX1_VALUE), CB_RESETCONTENT, 0, 0);
			return 0;
	   }

	}

	if (Msg == WM_NOTIFY && lParam) {
		int Id = LOWORD(wParam);
		NMHDR* pnm = (NMHDR*)lParam;

		if (Id == IDC_INPCHEAT_LIST && pnm->code == LVN_ITEMCHANGED) {
			if (((NM_LISTVIEW*)lParam)->uNewState & LVIS_SELECTED) {
				InpDIPSWSelect();
			}
			return 0;
		}

		if (Id == IDC_INPCHEAT_LIST && pnm->code == NM_CUSTOMDRAW) {
			NMLVCUSTOMDRAW* plvcd = (NMLVCUSTOMDRAW*)lParam;

			switch (plvcd->nmcd.dwDrawStage) {
				case CDDS_PREPAINT: {
                    SetWindowLong(hInpDIPSWDlg, DWL_MSGRESULT, CDRF_NOTIFYITEMDRAW);
					return 1;
				}
				case CDDS_ITEMPREPAINT: {
					BurnDIPInfo bdi;
					BurnDrvGetDIPInfo(&bdi, plvcd->nmcd.lItemlParam);
					if (bdi.nFlags == 0xFD) {
						plvcd->clrTextBk = RGB(0xFF, 0xDF, 0xBB);
    					SetWindowLong(hInpDIPSWDlg, DWL_MSGRESULT, CDRF_NEWFONT);
					}

					return 1;
				}
			}
		}
	}

	return 0;
}
示例#2
0
文件: ver_1.cpp 项目: tmdgus0118/CNOM
int main()
{
	string mainmenu[]={"Connect [ 들어가기 ]","Listen [ 기다리기 ]","2 P ( OffLine ) [ 2P 오프라인 ]","Exit [종 료]"};
	int mport[]={GAME_CONNECT,GAME_LISTEN,GAME_TWOPLAY,GAME_EXIT};
	int gt=0;
	WSADATA wsaData;
	SOCKADDR_IN addr;
	int port=36214;
	int caddrsize=0;
	char ip[25];
	SOCKET sServer,sClient;
	//메뉴 : 접속 , 기다리기 , 2인 플레이(오프라인) , 종료
MainMenu:
	title("CNOM 0.0.1 - By Qoo . http://cyworld.com/qoohk");
	sysclear();
	SetConsoleSize(17,68);
	gt=MenuSecond(0,4,10,5,20,4,"please select menu ~# [메뉴를 선택해주세요.]",mainmenu,mport,0);
	switch(gt)
	{
		case 0:
			ErrorMsg("Select Error");
			break;
		case GAME_EXIT:
			WSACleanup();
			exit(0);
			break;
		case GAME_TWOPLAY:
			SoloGame();
			break;
		case GAME_LISTEN:
			
			sysclear();
			SetConsoleSize(20,75);
			SetColor(15);
			printf("WSA Start Up ... ");
			if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
			{
				ErrorMsg("WSA Start Error!");
			}
			printf("OK\nSocket Create ... ");
			sServer=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
			if(sServer == INVALID_SOCKET) ErrorMsg("Socket Create Error");
			printf("OK\nBind.. ");
			memset(&addr,0,sizeof(addr));
			addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_family = AF_INET;
			addr.sin_port = htons(port);	
			if(bind(sServer,(SOCKADDR*)&addr,sizeof(addr))==SOCKET_ERROR)
			{
				ErrorMsg("Bind Error");	
			}
			if(listen(sServer,5)==SOCKET_ERROR)
			{
				ErrorMsg("Listen Error");
			}
			printf("OK\n");
			printf("... accept...");
			SOCKADDR_IN caddr;
			caddrsize=sizeof(caddr);
			sClient=accept(sServer,(SOCKADDR*)&caddr,&caddrsize);
			if(sClient==INVALID_SOCKET) ErrorMsg("ACCEPT ERROR");
			printf("OK\n");
			NetworkGame(sClient,inet_ntoa(caddr.sin_addr),SERVER);
			break;
		case GAME_CONNECT:
			sysclear();
			SetColor(15);
			SetConsoleSize(20,75);
			printf("Enter the IP address to access. (Up to 25 bytes) [IP주소를 입력해주세요.]\n->");
			SetColor(2);
			scanf("%s",ip);
			SetColor(15);
			printf("WSA Start Up ... ");
			if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
			{
				ErrorMsg("WSA Start Error!");
			}
			printf("OK\nSocket Create ... ");
			sClient=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
			if(sClient == INVALID_SOCKET) ErrorMsg("Socket Create Error");
			printf("OK\nConnect ... ");
			memset(&addr,0,sizeof(addr));
			addr.sin_addr.s_addr = inet_addr(ip); addr.sin_family = AF_INET;
			addr.sin_port = htons(port);	
			if(connect(sClient,(SOCKADDR*)&addr,sizeof(addr))==SOCKET_ERROR)
			{
				printf("\nSorry.. Connect Error.. \n");
				printf("Do you want to go back?( Y or N )\n    - select y or n");
				while(1)
				{
					char th=getch();
					if(th=='Y' || th=='y') goto MainMenu;
					else if(th=='N' || th=='n') exit(0);
				}
			}
			printf("OK\n");
			NetworkGame(sClient,ip,CLIENT);
			break;
	}
	WSACleanup();
	return EXIT_SUCCESS;
}