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

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

?? move pic.cpp

?? 真是一款用VC++編寫的小游戲
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*==========================================================
		Move Pic.cpp -- A move-picture game with SDK
			Soft Zealot (R) Robin Hood, 2001						
	  SoftZealot@china.com		Soft_Zealot@china.com

	====================================================
	我正在學習SDK編程,嘗試編寫了一個小游戲,因為我討厭
	一些無聊的編程問題,我喜歡有意思的編程工作 :)

	這個游戲完全是用SDK編寫的,沒有涉及MFC,其中打開圖片
	的函數是Charles Petzold的《Windows程序設計》一書中的
	源代碼,我只不過加上了注釋,看懂了意思而已。其他的代
	碼是我自己編寫的,你可以任意使用其中的代碼。

	歡迎大家和我討論編程的問題,你可以在www.csdn.net的專
	家門診的vc部分找到我,我的id是Soft_Zealot或者
	SoftZealot, :),不好意思,水平不夠只好多注冊幾個。

	如果你發現了bug或者找到了任何能夠改進程序性能或者任何
	能夠使code更精煉的方法,請你通知我,我會很高興能夠更
	加完善這個游戲。

	====================================================
	有待完成:
	1.勝利時通知游戲者游戲時間
	3.可不可以找到尋找最佳解的算法
	4.如何加入預覽功能,可不可以采用類似Splash方法

	====================================================
	bugs :
	1.顯示圖片后每個Static控件排列不整齊
	2.由于對圖像處理和windows底層工作原理還不是很清楚,所
	以有可能會有內存泄漏
==========================================================*/

#include <windows.h>
#include <commdlg.h>
#include <time.h>

#include "Move Pic.h"
#include "resource.h"

/*==========================================================
					應用程序入口函數
==========================================================*/
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
					PSTR szCmdLine, int iCmdShow)
{
	static TCHAR szMenuName[] = TEXT ("MainMenu") ;
	HWND         hwnd ;
	MSG          msg ;
	WNDCLASS     wndclass ;
	
	// save the application's HINSTANCE
	hInst = hInstance ;

	wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
	wndclass.lpfnWndProc   = WndProc ;		// WndProc !!! here
	wndclass.cbClsExtra    = 0 ;
	wndclass.cbWndExtra    = 0 ;
	wndclass.hInstance     = hInstance ;
	wndclass.hIcon         = LoadIcon (hInstance, "AppIcon") ;	// how to load self-cus icon
	wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
	wndclass.hbrBackground = (HBRUSH) GetStockObject (LTGRAY_BRUSH) ;
	wndclass.lpszMenuName  = szMenuName ;
	wndclass.lpszClassName = szAppName ;
	
	if (!RegisterClass (&wndclass))
	{
		MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
					szAppName, MB_ICONERROR) ;
		return 0 ;
	}
	
	// Caculate the window's size and position, I don't like huge_window :-)
	int cxWindow, cyWindow;
	cxWindow = GetSystemMetrics (SM_CXSCREEN) / 3;
	cyWindow = GetSystemMetrics (SM_CYSCREEN) / 3;
	
	hwnd = CreateWindow (szAppName,						// window class name
						TEXT ("奇幻拼圖  Soft Zealot"),	// window caption
						WS_OVERLAPPEDWINDOW,			// window style
						cxWindow,						// initial x position
						cyWindow,						// initial y position
						cxWindow,						// initial x size
						cyWindow,						// initial y size
						NULL,							// parent window handle
						NULL,							// window menu handle
						hInstance,						// program instance handle
						NULL) ;							// creation parameters
	
	ShowWindow (hwnd, iCmdShow) ;
	UpdateWindow (hwnd) ;
	
	// message WM_QUIT cause function GetMessage return 0
	while (GetMessage (&msg, NULL, 0, 0))
	{
		TranslateMessage (&msg) ;
		DispatchMessage (&msg) ;
	}
	
	return msg.wParam ;
}


/*==========================================================
						窗口函數
==========================================================*/
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	static HMENU			hMenu ;
	static HWND				hwndPic_Button[4][4] ;
	static int				iStcPos[4][4], iStcPosSave[4][4] ;
	static HBITMAP			hBitmap, hBmpStc ;
	static int				cxClient, cyClient ;
	static int				i, j ;
	static int				idStcClk, idStcBlank ;
	static OPENFILENAME		ofn ;
	static bool				bWinFlag ;
	BITMAP					bitmap ;
	HDC						hdc, hdcMem, hdcStc ;
	PAINTSTRUCT				ps ;
	RECT					rcClient, rcWin ;
	int						iStcClkPos, iStcBlankPos ;
	int						cxScr, cyScr ;
	float					fcxDiv, fcyDiv, fDiv ;

	switch (message)
	{
	case WM_CREATE:
		InitOfnStruct (ofn, hwnd) ;
		// create statics who hold pic
		for (i = 0; i < 4; i++)
			for (j = 0; j < 4; j++)
			{
				hwndPic_Button[i][j] = 
					CreateWindow (TEXT ("Static"), NULL,
								WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_BITMAP | SS_SUNKEN,
								0, 0, 0, 0,
								hwnd, (HMENU) (4 * i + j), hInst, NULL) ;
				iStcPos[i][j] = 4 * i + j ;
			}

		// 使static控件不能接收mouse點擊消息
		bWinFlag = true ;

		// 開始使reset菜單無效
		hMenu = GetMenu (hwnd) ;
		EnableMenuItem (hMenu, IDM_GAME_RESET, MF_GRAYED) ;
		
		return 0 ;

	case WM_SIZE:
		// get client area size
		cxClient = LOWORD (lParam);
		cyClient = HIWORD (lParam);

		// move the statics to the new center
		for (i = 0; i < 4; i++)
			for (j = 0; j < 4; j++)
			{
				MoveWindow (hwndPic_Button[i][j], 
							(iStcPos[i][j] % 4) * cxClient / 4,
							(iStcPos[i][j] / 4) * cyClient / 4,
							cxClient / 4, cyClient / 4, TRUE);
			}
	
	case WM_PAINT:
		hdc = BeginPaint (hwnd, &ps) ;
		
		EndPaint (hwnd, &ps) ;		
		return 0 ;

	// 處理菜單命令
	case WM_COMMAND:
		switch (LOWORD (wParam))
		{	
		case IDM_GAME_RESET:
			/*==================================================
			游戲復位:因為Static已經加載圖像,窗口也得到調整,所
			以我們需要打開圖像時,每個Static的位置,在這里恢復
			Static的位置就行了。如果以后加入計時功能,就需要復位
			開始時間。
			==================================================*/
			// 恢復初始Static位置信息
			for (i = 0; i < 4; i++)
				for (j = 0; j < 4; j++)
				{
					iStcPos[i][j] = iStcPosSave[i][j] ;
					// 移動Static控件回到初始位置
					MoveWindow (hwndPic_Button[i][j], 
							(iStcPos[i][j] % 4) * cxClient / 4,
							(iStcPos[i][j] / 4) * cyClient / 4,
							cxClient / 4, cyClient / 4, TRUE);
				}

			bWinFlag = false ;

			return 0 ;

        case IDM_PIC_OPEN:
			// 顯示打開文件對話框
			if (!GetOpenFileName (&ofn))
				return 0 ;
			
			// 如果已經有一個DIB,刪除它
			if (hBitmap)
			{
				DeleteObject (hBitmap) ;
				hBitmap = NULL ;
			}
			
			// 從DIB創建DDB
			SetCursor (LoadCursor (NULL, IDC_WAIT)) ;	// 使用漏斗指針
			ShowCursor (TRUE) ;
			
			hdc = GetDC (hwnd) ;
			hBitmap = CreateBitmapObjectFromDibFile (hdc, szFileName) ;
			ReleaseDC (hwnd, hdc) ;
			
			ShowCursor (FALSE) ;
			SetCursor (LoadCursor (NULL, IDC_ARROW)) ;	// 恢復箭頭指針
			
			// 使客戶區無效以便稍后重繪
			InvalidateRect (hwnd, NULL, TRUE) ;
			
			if (hBitmap == NULL)
			{
				// 如果不能載入DIB文件,顯示錯誤消息
				MessageBox (hwnd, TEXT ("Cannot load DIB file"), 
							szAppName, MB_OK | MB_ICONEXCLAMATION) ;
			}
			else
			{
				/*==================================================
				在調整窗口大小之前隨機安排Static控件的位置,以便調整
				窗口的時候也隨機產生了Static的布局。注意分割后的圖像
				仍然是按照順序(id)分配給Static的,隨機的只是位置。
				==================================================*/
				srand ( (unsigned int) time (NULL));	// for random seed

				int iRanA, iRanB ;
				for (i = 0; i < 32; i++)
				{
					// 得到 0 -- 16 之間的兩個隨機數
					iRanA = rand( ) % 16 ;
					do
					{
						iRanB = rand( ) % 16 ;
					}
					while (iRanA == iRanB);

					// 隨機調整 Note: index = id   XXX[index] = pos
					iStcBlankPos = iStcPos[iRanA / 4][iRanA % 4] ;
					iStcPos[iRanA / 4][iRanA % 4] = iStcPos[iRanB / 4][iRanB % 4] ;
					iStcPos[iRanB / 4][iRanB % 4] = iStcBlankPos ;
				}

				// 保存開始狀態
				for (i = 0; i < 4; i++)
					for (j = 0; j < 4; j++)
					{
						iStcPosSave[i][j] = iStcPos[i][j] ;

						MoveWindow (hwndPic_Button[i][j], 
							(iStcPos[i][j] % 4) * cxClient / 4,
							(iStcPos[i][j] / 4) * cyClient / 4,
							cxClient / 4, cyClient / 4, TRUE);
					}


				/*==================================================
								調整窗口大小以適應圖像
				==================================================*/
				GetWindowRect (hwnd, &rcWin);
				GetClientRect (hwnd, &rcClient);

				GetObject (hBitmap, sizeof (BITMAP), &bitmap) ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱人伦偷精品视频免下载| 国产精品无遮挡| 日韩免费电影网站| 久久这里只精品最新地址| 国产欧美综合在线| 亚洲人午夜精品天堂一二香蕉| 亚洲精品高清在线观看| 麻豆中文一区二区| 国产精品香蕉一区二区三区| 91影院在线免费观看| 日韩一区二区三区免费看| 亚洲国产精品ⅴa在线观看| 亚洲主播在线观看| 国产乱一区二区| 欧洲人成人精品| 日本电影欧美片| 欧美激情综合五月色丁香小说| 亚洲精品网站在线观看| 欧美日韩国产色站一区二区三区| 亚洲精品一线二线三线| 中文字幕制服丝袜成人av | 免费在线观看一区| 国产成人在线视频网站| 91精品免费观看| ㊣最新国产の精品bt伙计久久| 日韩中文欧美在线| eeuss鲁片一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 欧美亚日韩国产aⅴ精品中极品| 日韩视频免费观看高清完整版在线观看| 中文在线资源观看网站视频免费不卡| 香蕉av福利精品导航| 成人性生交大片免费看视频在线| 国产欧美一区二区三区沐欲 | 国产一区二区不卡| 欧美色区777第一页| 欧美激情一区二区三区蜜桃视频 | 欧美日韩黄色一区二区| 国产精品色婷婷| 奇米色777欧美一区二区| 91蜜桃婷婷狠狠久久综合9色| 日韩一区二区电影网| 亚洲精品欧美综合四区| 成人晚上爱看视频| 欧美大片顶级少妇| 亚洲成av人片在线观看无码| 91丝袜呻吟高潮美腿白嫩在线观看| 2020国产精品| 美腿丝袜在线亚洲一区| 欧美精品久久99| 亚洲gay无套男同| 91啪九色porn原创视频在线观看| 日本一区二区三区久久久久久久久不| 日韩国产欧美一区二区三区| 色爱区综合激月婷婷| 国产精品久线在线观看| 国产福利一区二区| 精品福利一区二区三区免费视频| 亚洲国产精品影院| 91色乱码一区二区三区| 中文字幕一区免费在线观看| 国产精品123| 久久久久国产精品麻豆ai换脸| 久久精品99国产精品日本| 91精品在线观看入口| 午夜精品久久久| 欧美剧在线免费观看网站| 亚洲综合在线视频| 91麻豆国产香蕉久久精品| 国产精品久久久久国产精品日日| 风流少妇一区二区| 久久久综合激的五月天| 国产成人aaaa| 中文字幕av一区二区三区高| 成人一区二区三区视频在线观看| 国产精品婷婷午夜在线观看| 成人免费福利片| 亚洲欧洲中文日韩久久av乱码| hitomi一区二区三区精品| 国产精品的网站| 色综合天天综合狠狠| 亚洲欧美另类小说视频| 91国在线观看| 丝袜亚洲另类丝袜在线| 欧美精品aⅴ在线视频| 免费一级欧美片在线观看| 日韩欧美国产一区二区在线播放| 久久se精品一区精品二区| 精品处破学生在线二十三| 国产裸体歌舞团一区二区| 久久久久久一级片| 成人黄色电影在线| 亚洲少妇30p| 欧美日韩一区二区在线观看 | 精品乱人伦小说| 韩国三级电影一区二区| 欧美精彩视频一区二区三区| av一区二区不卡| 一级精品视频在线观看宜春院| 欧美日韩一级片在线观看| 久久精品国产免费| 久久久亚洲欧洲日产国码αv| 成人深夜视频在线观看| 亚洲精品视频在线| 91精品国产综合久久福利软件| 精品在线一区二区三区| 国产精品理伦片| 欧美伊人久久久久久久久影院 | 在线91免费看| 国产成人免费视频网站高清观看视频| 国产精品美女视频| 欧美日韩日本视频| 激情综合网天天干| **网站欧美大片在线观看| 在线不卡一区二区| 国产高清不卡二三区| 亚洲一区二区三区影院| 精品福利一区二区三区免费视频| 99精品1区2区| 麻豆精品在线播放| 亚洲欧美日韩人成在线播放| 91精品国产品国语在线不卡| 丁香五精品蜜臀久久久久99网站| 一区二区成人在线视频| 2欧美一区二区三区在线观看视频| 91碰在线视频| 久久精品国产一区二区三 | 欧美三级视频在线| 国产精品中文字幕日韩精品| 亚洲资源在线观看| 国产日韩精品一区二区三区| 欧美色窝79yyyycom| 国产成人在线电影| 视频一区二区中文字幕| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 6080亚洲精品一区二区| 不卡一卡二卡三乱码免费网站| 日韩精品一二区| 亚洲精选视频在线| 久久久精品免费免费| 91.麻豆视频| 色婷婷久久综合| 粉嫩久久99精品久久久久久夜| 三级欧美韩日大片在线看| 成人欧美一区二区三区黑人麻豆| 欧美成人激情免费网| 欧美在线|欧美| 成人av综合一区| 激情图片小说一区| 午夜国产不卡在线观看视频| 日韩毛片精品高清免费| 精品99一区二区| 91麻豆精品国产91久久久更新时间 | 精品国产百合女同互慰| 欧美夫妻性生活| 欧美天堂亚洲电影院在线播放| 不卡的av电影在线观看| 国产在线播放一区三区四| 免费看欧美女人艹b| 亚洲成av人**亚洲成av**| 亚洲天堂av老司机| 中文子幕无线码一区tr| 国产农村妇女毛片精品久久麻豆 | 欧美aaaaa成人免费观看视频| 亚洲精品美腿丝袜| 日韩毛片精品高清免费| 国产精品久久久久影院色老大| 国产视频911| 26uuu国产电影一区二区| 精品国内片67194| 欧美成人在线直播| 欧美日韩高清一区二区不卡| 日本高清不卡在线观看| 91亚洲男人天堂| 色狠狠桃花综合| 91成人看片片| 欧美午夜免费电影| 欧洲精品视频在线观看| 在线观看中文字幕不卡| 91美女片黄在线观看| 91视频免费播放| 欧美在线视频全部完| 欧美三级视频在线观看| 在线观看91av| 日韩精品一区二区三区在线观看 | 蜜桃视频在线观看一区二区| 午夜电影网亚洲视频| 日韩国产精品久久| 日本不卡视频在线| 美女视频网站久久| 卡一卡二国产精品| 国产成人自拍高清视频在线免费播放| 国产激情视频一区二区在线观看| 国产91精品一区二区麻豆网站| 国产一区二区日韩精品| 粉嫩av亚洲一区二区图片| 成人午夜免费av| 91玉足脚交白嫩脚丫在线播放| 91久久一区二区| 欧美日韩亚洲综合一区|