亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? q11evc.cpp

?? 涉及的代碼是針對WINCE3.0(PPC2002)平臺
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*==============================================================================
文件: Q11Evc.cpp
說明:WINCE下小游戲習作,僅博一笑而已,此CPP適應于通用WIN32/WINCE的主窗口建立。 
時間:2003-12-06
編寫:oshj || oshj@21cn.com
環境:EVC3.0 or Win2000 Pro/SP4/1024*768分辨率
特別說明:涉及的代碼是針對WINCE3.0(PPC2002)平臺,同時兼顧了WIN32平臺; 旨在
		  討論編寫同時適應2種平臺的通用代碼;就我現有掌握的資料來看,WINCE平臺
		  并不支持DirectX,而WINCE的GAPI又不適合WIN32平臺,且無法在模擬器下進行
		  調試(我對GAPI也是一無所知^_^),所以采用了最原始的BitBlt貼圖和離屏
		  方式,貼圖效果比較粗糙。對聲音的處理也比較幼稚,希望不會誤導初學者。
		  游戲算法和圖片部分參考了王正盛的A10攻擊機和Kylinx的kplan代碼,在此對
		  兩位作者公布源代碼的無私行為表示感謝!
==============================================================================*/
////////////////////////////////////////////////////////////////////////////////
//------------------------------------------------------------------------------
#include "stdafx.h"
#include "Game.h"
//------------------------------------------------------------------------------
#define WindowClass		TEXT("WINCE游戲")	//窗口類名
#define WindowTitle		TEXT("Q11戰斗機")	//窗口標題
#define MENU_HEIGHT		26					//CE下的菜單條高度
//------------------------------------------------------------------------------
//僅做調試之用!正式時不能有Msg,否則可能陷入死循環
#define Msg(str)	MessageBox(GetActiveWindow(),TEXT(str),TEXT("Info"),\
						MB_OK|MB_ICONINFORMATION); 

HINSTANCE	g_hInst;		// The current instance
HWND		g_hwndCB;		// The command bar handle
HWND		hWnd;			//主窗口句柄
HWND		hWndDlgSet;		//設置窗口句柄

TCHAR	tcAppExePath[MAX_PATH]={'\0'};	//exe文件路徑
TCHAR	iniFile[256]={'\0'};			//ini文件
BOOL	bActive = TRUE;	

#if _WIN32_WCE
static	SHACTIVATEINFO s_sai;
#endif
//------------------------------------------------------------------------------
CGame	*game;
//------------------------------------------------------------------------------
//初始化窗口
BOOL InitWindow(HINSTANCE hInstance,int nCmdShow);
//主窗口回調函數
LRESULT CALLBACK MainProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
//設置窗口回調函數
LRESULT CALLBACK SetProc(HWND hWndSet,UINT message,WPARAM wParam,LPARAM lParam);
//關于窗口回調函數
LRESULT CALLBACK About(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
//使一個窗口相對于另外一個窗口居中,并不一定要父子關系
void CenterWindow(HWND hWndChild, HWND hWndParent);
//創建菜單條
HWND CreateRpCommandBar(HWND);
//釋放資源
void FreeAll(void);
//讀配置文件
void IniRead();
//寫配置文件
void IniWrite();
//設置缺省操作鍵
void KeyDefault();
//鍵值檢測,是否重復
BOOL KeyCheck();

//------------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
//------------------------------------------------------------------------------
//main
int WINAPI WinMain(	HINSTANCE hInstance,
					HINSTANCE hPrevInstance,
					LPTSTR    lpCmdLine,
					int       nCmdShow)
{
	MSG		msg;

	//初始化主窗口
	if(FALSE == InitWindow(hInstance,nCmdShow) )
		return FALSE;
	
	DWORD dLenth;
	TCHAR tcAppFullPath[MAX_PATH];
	dLenth = GetModuleFileName(NULL,tcAppFullPath,MAX_PATH);

	//獲得EXE文件的路徑
	#if _WIN32_WCE
	wcsncpy(tcAppExePath,tcAppFullPath,dLenth-10);	// Q11Evc.exe
	#else
	wcsncpy(tcAppExePath,tcAppFullPath,dLenth-9);	// Q11PC.exe
	#endif
	
	//配置文件
	wcscpy(iniFile,tcAppExePath);
	wcscat(iniFile,TEXT("Q11\\Set.dat"));
	
	//可能首次使用
	HANDLE hf = CreateFile(iniFile, GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, 
			          OPEN_EXISTING, 0, NULL);
	if (hf == INVALID_HANDLE_VALUE) 
		DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG_SETTING),hWnd,(DLGPROC)SetProc);
	CloseHandle(hf);

	//初始化游戲
	game = new CGame;
	game->InitGame();

	for(;;)
	{
		if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
		{
			if(!GetMessage(&msg, NULL, 0, 0 )) 
				return msg.wParam;
			TranslateMessage(&msg); 
			DispatchMessage(&msg);
		}
		else if(bActive)
		{	
			//場景更換
			#if _WIN32_WCE
				game->UpdateFrame();	
			#else
				//畫面延時,PC下速度有點太快了
				static int NewCount, OldCount=0;
				NewCount=GetTickCount(); 
				if (NewCount > OldCount+12)
				{
					OldCount=NewCount;
					game->UpdateFrame();//更新畫面
				}
			#endif

		}
		
	}
}
//------------------------------------------------------------------------------
//創建主窗口。
BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{	
    WNDCLASS		wc;		
	DWORD			dwStyle;

	g_hInst = hInstance;

	//填充窗口類結構
    wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
    wc.lpfnWndProc = (WNDPROC)MainProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);

    #if _WIN32_WCE
	wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDR_MENU_MAIN));
	wc.lpszMenuName = 0;
	dwStyle = WS_VISIBLE;
	#else
	wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU_MAIN);
	wc.hIcon = LoadIcon(hInstance, IDC_ICON);
	wc.hCursor = LoadCursor( NULL, IDC_ARROW );
	dwStyle = WS_OVERLAPPEDWINDOW;
	#endif

	wc.lpszClassName =(LPCTSTR)WindowClass;

	//注冊窗口類
    RegisterClass(&wc);
    
	//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	//查找實例是否已經啟動,是則載入前臺
	//這個是根據WINCE例子來的,WIN32程序中我習慣用下面兩句
	//::SetForegroundWindow(hWnd); 
	//::SetActiveWindow(hWnd); 
	//If it is already running, then focus on the window
	hWnd = FindWindow((LPCTSTR)WindowClass, (LPCTSTR)WindowTitle);	
	if (hWnd) 
	{
		// set focus to foremost child window
		// The "| 0x01" is used to bring any owned windows to the foreground and
		// activate them.
		SetForegroundWindow((HWND)((ULONG) hWnd | 0x00000001));
		return 0;
	} 
	//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	//創建窗口
	RECT	rect;
	GetClientRect(hWnd, &rect);

	hWnd = CreateWindow((LPCTSTR)WindowClass, 
						(LPCTSTR)WindowTitle, 
						dwStyle,
						(GetSystemMetrics(SM_CXSCREEN)-ScreenW)/2,
						(GetSystemMetrics(SM_CYSCREEN)-ScreenH)/2,
						ScreenW,
						ScreenH,
						NULL, 
						NULL, 
						hInstance, 
						NULL);

	if (!hWnd)		return FALSE;

	//這個也是WINCE例子生成的
	#if _WIN32_WCE
	RECT rc;
	GetWindowRect(hWnd, &rc);
	rc.bottom -= MENU_HEIGHT;
	if (g_hwndCB)
		MoveWindow(hWnd, rc.left, rc.top, rc.right, rc.bottom, FALSE);
	#endif

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

	return TRUE;
}
//------------------------------------------------------------------------------
//主窗口回調函數
LRESULT CALLBACK MainProc( HWND hWnd, UINT message, 
                           WPARAM wParam, LPARAM lParam )
{
    switch( message )
    {
		case WM_CREATE:
			#if _WIN32_WCE
			g_hwndCB = CreateRpCommandBar(hWnd);
            memset (&s_sai, 0, sizeof (s_sai));
            s_sai.cbSize = sizeof (s_sai);
			#endif
			break;
		case WM_ACTIVATE:
			bActive = wParam;
			break;
		case WM_LBUTTONDOWN:
			game->StartGame();
			break;
		//雙擊屏幕放雷?是否合適?沒有其他消息適合呢
		case WM_LBUTTONDBLCLK:		
			game->FlashScreen(); 
			break;
		case WM_MOUSEMOVE:
			//鼠標拖拉,左鍵是否按下
			if(wParam == MK_LBUTTON)	
			{
				//定位pos為飛機中點
				game->pos.x = LOWORD(lParam) - 25; //飛機圖片一半寬度
				game->pos.y = HIWORD(lParam) - 30; //飛機圖片一半高度
			}
			break;
		case WM_KEYDOWN://擊鍵消息
			switch(LOWORD(wParam))
			{
			case VK_ESCAPE://退出
				if(MessageBox(hWnd,TEXT("退出游戲?"),TEXT("EXIT"),MB_YESNO)==IDYES)
				{
					FreeAll();
					PostQuitMessage( 0 );
				}
				break;
			case VK_RETURN:
				game->StartGame();
				break;
			case VK_ADD ://加速
				game->movespeed++;
				break;
			case VK_SUBTRACT ://減速
				game->movespeed--;
				if (game->movespeed < 1) 
					game->movespeed=1;
				break;
			}
			break;

		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
			case IDM_GAME_START:
					game->InitGame(); 
				break;
			case IDM_GAME_SET:
				//游戲設置
				DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG_SETTING),hWnd,(DLGPROC)SetProc);
				break;
			case IDM_GAME_EXIT:
				if(MessageBox(hWnd,TEXT("退出游戲?"),TEXT("EXIT"),MB_YESNO)==IDYES)
				{
					FreeAll();
					PostQuitMessage(0);
				}
				break;
			case IDM_ABOUT:
				DialogBox(g_hInst,(LPCTSTR)(IDD_DIALOG_ABOUT),hWnd,(DLGPROC)About);
				break;

			}
			break;

		case WM_DESTROY:
			FreeAll();
			PostQuitMessage(0);
			break;
		
    }
	
	//調用缺省消息處理過程
    return DefWindowProc(hWnd, message, wParam, lParam);
}
//------------------------------------------------------------------------------
//設置窗口回調函數
LRESULT CALLBACK SetProc(HWND hWndSet,UINT message,WPARAM wParam,LPARAM lParam)
{
	HWND hWndFocus=NULL;
	HDC hDC=NULL;
	POINT p;
	RECT rc,rcDlg;
	int a,i;
	int vKey = -1;
	TCHAR str[256] = {'\0'};
	TCHAR strInput[256] = {'\0'};
	BOOL bPress=FALSE;

	switch (message)
	{
		case WM_INITDIALOG:
			CenterWindow(hWndSet,hWnd);
			hWndDlgSet = hWndSet;
			#if _WIN32_WCE
			hWndFocus = GetDlgItem(hWndSet,IDC_STATIC_SETTING);
			SetWindowText(hWndFocus,TEXT("WINCE下是不能更改鍵盤設置di"));
			hWndFocus = NULL;
			#endif

			IniRead();
			
			hWndFocus = GetDlgItem(hWndDlgSet,IDC_CMBUSER);
			GetWindowText(hWndFocus,str,256);
			if( 0 == wcscmp(str,TEXT("")) )
				KeyDefault();

			break;
	
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
			case IDOK:
				if(FALSE == KeyCheck() )
					return FALSE;
				else
					IniWrite();
			case IDCANCEL:
				EndDialog(hWndSet, LOWORD(wParam));
				return TRUE;

			case IDC_BTN_DEFAULT:	//缺省設置
				KeyDefault();
				break;
			
			case IDC_CMBUSER:	//用戶欄輸入
				if(HIWORD(wParam) == CBN_KILLFOCUS)
				{
					hWndFocus = GetDlgItem(hWndDlgSet,IDC_CMBUSER);
					//獲得輸入的用戶名
					GetWindowText(hWndFocus,strInput,256);
					a = SendMessage(hWndFocus,CB_GETCOUNT,0,0);	
					//與已有的比較
					for(i=0;i<a;i++)
					{
						SendMessage(hWndFocus,CB_GETLBTEXT,i,(LPARAM)(LPCSTR)str);
						//如果已經有了
						if( 0 == wcscmp(str,strInput) )
						{
							//Msg("e");
							return FALSE;
						}
					}
					//Msg("he");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区最好精华液| 亚洲久草在线视频| 欧美自拍偷拍午夜视频| 不卡的av中国片| 国产suv精品一区二区883| 麻豆成人在线观看| 久久se这里有精品| 国产在线精品一区在线观看麻豆| 日韩国产欧美视频| 日本不卡视频在线| 精品中文字幕一区二区| 国产精品资源网| 成人免费高清在线| 欧美性猛片aaaaaaa做受| 欧美天堂一区二区三区| 欧美一区二区日韩一区二区| 7777精品伊人久久久大香线蕉| 欧美一区二区三区免费大片| 2019国产精品| 综合自拍亚洲综合图不卡区| 亚洲影院理伦片| 天天色天天操综合| 国产成人免费视频一区| 色综合天天综合给合国产| 色老汉一区二区三区| 欧美一级生活片| 久久久国产精品麻豆| 亚洲精选免费视频| 久久av老司机精品网站导航| 成人高清免费观看| 欧美日韩在线一区二区| 2023国产精品| 亚洲已满18点击进入久久| 久久成人免费电影| 不卡高清视频专区| 日韩一区二区三区视频在线| 中文字幕 久热精品 视频在线| 亚洲二区视频在线| 国产成人综合视频| 制服丝袜激情欧洲亚洲| 中文字幕亚洲视频| 蜜桃在线一区二区三区| 91麻豆精东视频| 亚洲精品在线一区二区| 亚洲一区av在线| 国产成人在线视频网址| 欧美日韩午夜影院| 国产精品国产三级国产普通话99 | 在线精品视频免费观看| 精品国产污污免费网站入口 | 成人激情黄色小说| 91精品在线麻豆| 亚洲欧美日韩国产综合在线| 蜜桃一区二区三区在线| 欧美日韩一区二区在线观看视频| 久久久精品国产免大香伊| 午夜国产精品一区| 色婷婷久久久亚洲一区二区三区 | 精品久久久三级丝袜| 亚洲chinese男男1069| 91免费看视频| 亚洲欧洲精品一区二区三区不卡 | 国产欧美日韩精品a在线观看| 午夜精品视频一区| 在线观看中文字幕不卡| 国产精品污网站| 国产一区二区按摩在线观看| 欧美日韩在线播| 一区二区三区在线视频观看| 99久久伊人精品| 中文无字幕一区二区三区| 国产成人福利片| 国产情人综合久久777777| 国产老妇另类xxxxx| 久久精品亚洲一区二区三区浴池| 免费成人美女在线观看| 日韩一区二区电影在线| 奇米影视一区二区三区| 91精品福利在线一区二区三区| 亚洲高清视频中文字幕| 欧美午夜一区二区三区| 亚洲第一会所有码转帖| 欧美精品v日韩精品v韩国精品v| 午夜视频一区二区| 7777精品伊人久久久大香线蕉 | 国产色一区二区| 国产不卡免费视频| 亚洲日本免费电影| 欧美性高清videossexo| 日韩高清一区二区| 精品国产一区二区三区四区四 | 天堂蜜桃一区二区三区| 日韩午夜电影av| 精品在线观看视频| 中日韩免费视频中文字幕| 91在线观看一区二区| 一区二区三区中文字幕| 91精品国产综合久久蜜臀 | www.亚洲免费av| 亚洲精品菠萝久久久久久久| 欧美体内she精高潮| 激情五月激情综合网| 国产精品人妖ts系列视频| 色先锋久久av资源部| 蜜桃av一区二区| 国产精品家庭影院| 欧美一区二区三区四区视频| 国产白丝精品91爽爽久久| 亚洲大片一区二区三区| 国产网站一区二区| fc2成人免费人成在线观看播放| 亚洲电影一区二区三区| 久久久久国产成人精品亚洲午夜| 91在线porny国产在线看| 精品中文字幕一区二区小辣椒| 亚洲男女一区二区三区| 欧美成人三级电影在线| 91香蕉视频污| 国产寡妇亲子伦一区二区| 日韩精品一级中文字幕精品视频免费观看 | 国内精品伊人久久久久av影院| 自拍av一区二区三区| 精品久久人人做人人爽| 欧美午夜精品理论片a级按摩| 国产精品夜夜爽| 免费看日韩a级影片| 亚洲视频小说图片| 日韩精品一区国产麻豆| 在线观看三级视频欧美| 国产很黄免费观看久久| 男女激情视频一区| 五月综合激情网| 亚洲人亚洲人成电影网站色| 国产日韩成人精品| 久久久久国产精品厨房| 精品国产一区二区三区不卡| 欧美一区二区视频观看视频| 欧洲一区在线观看| 99re成人精品视频| 国产成人av福利| 国产原创一区二区三区| 久久精品久久综合| 亚洲va天堂va国产va久| 亚洲一区二区精品3399| 亚洲综合自拍偷拍| 亚洲精品乱码久久久久久久久 | 亚洲欧美区自拍先锋| 日本一区二区高清| 久久久久久久久久久久久久久99| 精品日韩av一区二区| 欧美一卡2卡3卡4卡| 91精品国产色综合久久ai换脸| 欧美精选一区二区| 这里只有精品电影| 日韩欧美国产一区二区三区 | 亚洲国产成人一区二区三区| 久久久www免费人成精品| 久久综合色8888| 国产欧美一区二区三区在线看蜜臀| 精品国产一区二区三区av性色| 久久综合999| 久久久国产一区二区三区四区小说| 久久久精品tv| 国产精品素人一区二区| 专区另类欧美日韩| 午夜精品久久久久久久久久| 视频一区中文字幕国产| 麻豆成人91精品二区三区| 国产激情视频一区二区在线观看| 福利一区在线观看| 91在线视频观看| 911国产精品| 久久久久久久免费视频了| 国产精品久久久久久久久图文区 | 欧美精品久久一区| 日韩久久免费av| 国产精品久久久久影院色老大| 国产精品福利一区| 亚洲成av人片一区二区梦乃| 午夜影院在线观看欧美| 国产一区二区成人久久免费影院| 99精品视频一区二区三区| 欧美日韩一区二区三区在线| 欧美成人精品高清在线播放| 国产精品剧情在线亚洲| 三级久久三级久久久| 成人高清视频在线观看| 欧美性欧美巨大黑白大战| 久久免费视频色| 一区二区三区欧美久久| 狠狠色综合播放一区二区| 色欲综合视频天天天| 精品国免费一区二区三区| 亚洲嫩草精品久久| 国产美女视频一区| 欧美浪妇xxxx高跟鞋交| 中文字幕在线观看不卡| 久久福利资源站| 欧美日韩在线综合| 亚洲人一二三区|