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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jlview.cpp

?? 很經(jīng)典的用C++編的空當(dāng)接龍的程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// JLView.cpp : implementation of the CJLView class
//

#include "stdafx.h"
#include "JL.h"

#include "JLDoc.h"
#include "JLView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CJLView

IMPLEMENT_DYNCREATE(CJLView, CView)

BEGIN_MESSAGE_MAP(CJLView, CView)
	//{{AFX_MSG_MAP(CJLView)
	ON_WM_LBUTTONDOWN()
	ON_WM_RBUTTONDOWN()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_RBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_WM_ERASEBKGND()
	ON_WM_LBUTTONUP()
	ON_COMMAND(IDM_BK_COLOR, OnBkColor)
	ON_COMMAND(IDM_CARD_COLOR, OnCardColor)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CJLView construction/destruction

CJLView::CJLView()
{
	// TODO: add construction code here
	CWinApp *pApp = AfxGetApp();
	m_hDown = pApp->LoadCursor(IDCSR_DOWN_ARROW);
	m_hIcon = pApp->LoadIcon(IDR_MAINFRAME);
	m_brushBk.CreateSolidBrush(RGB(255,255,255));//card bk
	m_brushBkgnd.CreateSolidBrush(RGB(0,128,0));//client bk
	//裝載位圖資源
	{
		//壓縮后的位圖文件被作為自定義資源,這里先裝載資源
		HRSRC handle = FindResource(NULL,"IDR_BIN_ZIP_BMP","BIN");
		HGLOBAL hGlobal = LoadResource(NULL,handle);
		BYTE * pByte = (BYTE *) LockResource(hGlobal);
		DWORD size = SizeofResource(NULL,handle);
		
		CMemFile srcFile;
		srcFile.Attach(pByte,size,0);
		
		//準(zhǔn)備將壓縮的位圖解碼到臨時文件
		char path[MAX_PATH],name[MAX_PATH];
		DWORD len = GetTempPath(MAX_PATH,path);
		if(len == 0 || len >= MAX_PATH || GetTempFileName(path,"bmp",0,name) == 0) {
			MessageBox("無法創(chuàng)建臨時文件!",NULL,MB_ICONERROR | MB_OK);
		}
		
		CFile desFile(name,modeCrWr);
		
		//解碼
		Decoding(desFile,srcFile);
		srcFile.Detach();
		
		//裝載位圖資源之前要保證位圖文件已經(jīng)關(guān)閉
		desFile.Flush();//這里兩步是必不可少的步驟!
		desFile.Close();
		HANDLE bmp = ::LoadImage(pApp->m_hInstance,name,IMAGE_BITMAP,596,86,LR_LOADFROMFILE);
		m_AllBmps.Attach(bmp);
		
		//刪除臨時位圖文件
		CFile::Remove(name);
	}

	m_nCardLabelHit = 0;
}

//draw all things in memory dc!!!!!!!!!!!!!
//所有的繪牌動作必須都在內(nèi)存中進行否則會造成閃動
void CJLView::DrawCard(CPoint point,UINT card, CDC *pDC)
{
	CJLDoc* pDoc = GetDocument();
	ASSERT(pDoc->IsCard(card));

	CPen penBlack(PS_SOLID,1,RGB(0,0,0));
	CPen *oldPen = pDC->SelectObject(&penBlack);
	CBrush *oldBrush = pDC->SelectObject(&m_brushBk);
	CRect r(point,CSize(CARD_WID,CARD_HEI));
	pDC->RoundRect(r,CPoint(5,5));//畫牌的背景與邊框
	pDC->SelectObject(oldPen);
	pDC->SelectObject(oldBrush);
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	CBitmap *poldbmp = memDC.SelectObject(&m_AllBmps);
	//畫左上角 & 右下角數(shù)字(8*12)和數(shù)字下/上面的圖標(biāo)(8*8)
	int type = TYPE(card), num  = NUM(card);
	int idxBS = type%2*26, idxUL = idxBS + num - 1, idxBR = idxBS + 26 - num;
	pDC->BitBlt(r.left+3    , r.top+3       , 8 , 12 , &memDC , idxUL*8+32 , 0 , SRCAND);
	pDC->BitBlt(r.right-3-8 , r.bottom-3-12 , 8 , 12 , &memDC , idxBR*8+32 , 0 , SRCAND);
	pDC->BitBlt(r.left+3    , r.top+3+12+1,       8, 8, &memDC , clr[SML][type][0][0], clr[SML][type][0][1] , SRCAND);
	pDC->BitBlt(r.right-3-8 , r.bottom-3-12-1-8 , 8, 8, &memDC , clr[SML][type][1][0], clr[SML][type][1][1] , SRCAND);
	//在牌的主要部分畫花色
	const UCHAR *p,*data[] = { cA , c2 , c3 , c4 , c5 , c6 , c7 , c8 , c9 , c10 };
	if(num <= 10) {
		p = ( card == CARD(8,3) ? c8FK : data[num-1] );
		UINT n = num*3;
		for(UINT j = 0; j < n ; j += 3) {
			pDC->BitBlt(point.x + p[j] - 8, point.y + p[j+1] - 8, 16, 16, &memDC, clr[BIG][type][!p[j+2]][0], clr[BIG][type][!p[j+2]][1], SRCAND);
		}
	} else { //畫J Q K
		CPoint p = r.CenterPoint();
		pDC->BitBlt(p.x-23, p.y-37, 47, 74, &memDC, ( (num-11)*4 + type )*47 + 32, 12, SRCAND);
	}
	memDC.SelectObject(poldbmp);
}

void CJLView::OnDraw(CDC* pDC)
{
	CJLDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	//顯示步數(shù)信息
	CString strSteps;
	CRect r = pDoc->RectOfStep();
	if(!pDoc->m_pOps->IsEmpty()) {
		strSteps.Format("%d", pDoc->m_pOps->GetCount());

		CFont font; 
		font.CreatePointFont(stepFont * 10, "Arial", pDC);
		CFont * prevFont  = pDC->SelectObject(&font);
		int     prevMode  = pDC->SetBkMode(TRANSPARENT); 

		pDC->DrawText(strSteps,r, DT_CENTER);

		pDC->SetBkMode(prevMode);
		pDC->SelectObject(prevFont);
	}
	//在步數(shù)信息下面顯示圖標(biāo)
	CPoint p = r.CenterPoint();
	p.x -= 16;
	p.y += 16;
	pDC->DrawIcon(p,m_hIcon);

	//繪制牌面提示按鈕(8*12)   A-K
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	CBitmap *poldbmp = memDC.SelectObject(&m_AllBmps);
	CBrush brush(RGB(0,0,0));
	for(UINT c = 1; c <= 13 ; c++) {
		CRect r = pDoc->RectOf(c);
		pDC->FrameRect(r,&brush);
		CPoint p = r.CenterPoint();
		p.x -= 4; p.y -= 6;
		pDC->BitBlt(p.x,p.y,8,12,&memDC,(c-1)*8+32,0,SRCAND);
	}
	memDC.SelectObject(poldbmp);

	//繪制牌局
	p.x = p.y = 0;
	for( UINT i = 1; i <= 16; i++ ) {
		UINT nCards = pDoc->CntCardsIn(i);
		if(!nCards) { //此列沒有牌則只繪制方框
			//pDC->FrameRect(pDoc->RectOf(i,1,1),&brush);
			CBrush *pPrevBrush = pDC->SelectObject(&m_brushBkgnd);
			pDC->RoundRect(pDoc->RectOf(i,1,1),CPoint(5,5));
			pDC->SelectObject(&pPrevBrush);
		} else if(i <= 8) {
			for( UINT j = 1; j <= nCards; j++ ) {
				UINT card = pDoc->GetCard(i,j);
				if(card == 0) continue; //這里本不該出現(xiàn)牌點數(shù)為0 的情況,都是多線程惹的禍
				r = pDoc->RectOf(i, j, 1);
				DrawCard(r.TopLeft() , card , pDC);
				if(pDoc->m_nSel == i && j == nCards) {
					pDC->InvertRect(r); //被選中列的底牌需要反色
				}
			}
		} else { //繪制空檔列和回收列
			r = pDoc->RectOf(i,1,1);
			DrawCard(r.TopLeft(),pDoc->BottCard(i),pDC);
			if(pDoc->m_nSel == i) { //如果此列是被選中狀態(tài),則此列牌被反色
				pDC->InvertRect(r);
			}
		}
	}
}

#ifdef _DEBUG
void CJLView::AssertValid() const
{
	CView::AssertValid();
}

void CJLView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CJLDoc* CJLView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CJLDoc)));
	return (CJLDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CJLView message handlers
void CJLView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	UINT hit = m_nCardLabelHit;
	m_nCardLabelHit = 0;
	if(hit) {
		ReleaseCapture();
		CJLDoc *pDoc = GetDocument();
		InvalidateRect(pDoc->RectOf(hit));//牌標(biāo)反色
		CARD_POS pos[5], *p = pos, *pEnd = pDoc->FindCardForLabel(hit,pos);
		while(p < pEnd) { //將與此牌標(biāo)對應(yīng)的牌正常顯示出來
			CRect r = pDoc->RectOf(p->col,p->idx,1);
			InvalidateRect(r);
			++p;
		}
	}

	CView::OnLButtonUp(nFlags, point);
}

void CJLView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	//擊中提示牌對應(yīng)的按鈕則在此處理
	bool bInverted = false;
	UINT hit = CardLabelHitTest(point);
	if(hit) {
		CJLDoc *pDoc = GetDocument();
		CARD_POS pos[5], *p = pos, *pEnd = pDoc->FindCardForLabel(hit,pos);
		if(p < pEnd) { //如果有牌對應(yīng)牌標(biāo)
			SetCapture();//捕獲鼠標(biāo)輸入
			m_nCardLabelHit = hit;//記錄此牌標(biāo)

			CClientDC cdc(this);
			cdc.InvertRect(pDoc->RectOf(hit));//牌標(biāo)反色

			CBrush brRed(RGB(255,0,0));
			CBrush brBlk(RGB(0,0,0));
			while(p < pEnd) { //將與此牌標(biāo)對應(yīng)的牌顯示出來并反色
				CRect r = pDoc->RectOf(p->col,p->idx,1);
				UINT card = pDoc->GetCard(p->col,p->idx);
				DrawCard(r.TopLeft(),card,&cdc);

				CBrush *pBr = TYPE(card)%2 == 0 ? &brBlk : &brRed;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久一牛影视| 欧洲精品视频在线观看| 99久久99精品久久久久久| 欧美日韩精品一区视频| 国产精品视频看| 蜜桃传媒麻豆第一区在线观看| 99久久久久久99| 亚洲精品在线免费观看视频| 亚洲午夜久久久久| 91色|porny| 国产精品污网站| 美女www一区二区| 欧美偷拍一区二区| 亚洲女与黑人做爰| 成人动漫在线一区| 久久男人中文字幕资源站| 天天av天天翘天天综合网色鬼国产 | 久久国产尿小便嘘嘘| 欧美又粗又大又爽| 1024成人网色www| 国产成人在线观看| 久久久午夜精品| 国产一区二区三区免费| 日韩视频免费观看高清完整版| 亚洲国产一区二区三区青草影视| 91在线观看美女| 中文字幕日韩欧美一区二区三区| 国产成人8x视频一区二区| 久久久国际精品| 国产91丝袜在线18| 国产精品久久久久国产精品日日| 欧美在线三级电影| 亚洲欧美综合在线精品| 成人免费不卡视频| 中文字幕在线观看一区| 不卡av在线网| 一区二区三区中文字幕精品精品| 色综合久久综合| 亚洲国产综合人成综合网站| 欧美系列一区二区| 日韩avvvv在线播放| 欧美精品电影在线播放| 麻豆精品蜜桃视频网站| 久久婷婷国产综合精品青草| 国产999精品久久久久久| 中文字幕免费在线观看视频一区| 成人精品免费视频| 成人欧美一区二区三区在线播放| 日本韩国欧美在线| 图片区日韩欧美亚洲| 精品卡一卡二卡三卡四在线| 国产福利一区二区三区| 亚洲精品日韩综合观看成人91| 在线精品亚洲一区二区不卡| 日韩中文字幕一区二区三区| 精品国产91久久久久久久妲己| 成人免费观看av| 午夜伦理一区二区| 久久久久国产精品麻豆ai换脸 | 婷婷成人激情在线网| 精品卡一卡二卡三卡四在线| 福利一区福利二区| 亚洲国产成人tv| 国产午夜精品理论片a级大结局| 不卡视频在线观看| 日本中文一区二区三区| 国产欧美日韩综合| 欧美日韩国产影片| 国产成人鲁色资源国产91色综| 一区二区在线观看视频| 91精品国产一区二区| 成人美女视频在线观看18| 亚洲成av人片观看| 国产精品久久久久永久免费观看| 欧美午夜免费电影| 丁香婷婷综合色啪| 青青草91视频| 亚洲精品久久嫩草网站秘色| 久久综合九色综合欧美就去吻| 色婷婷综合久久久中文字幕| 激情五月激情综合网| 亚洲成人一二三| 中文字幕亚洲在| 久久免费精品国产久精品久久久久| 91免费观看在线| 国产精品1区二区.| 美女免费视频一区二区| 亚洲成av人片在线观看无码| 国产精品女同一区二区三区| 欧美mv和日韩mv的网站| 欧美色图激情小说| 色综合欧美在线视频区| 国产一区二区成人久久免费影院| 性做久久久久久| 一区二区在线免费| 日韩理论电影院| 日本一区二区动态图| 精品久久人人做人人爰| 欧美一区二区精品在线| 欧美色图天堂网| 在线观看国产一区二区| 99精品国产91久久久久久| 国产91对白在线观看九色| 久久精品国产精品亚洲精品| 日本成人在线看| 秋霞影院一区二区| 日本午夜精品视频在线观看| 亚洲成人资源网| 亚洲成人av一区二区三区| 亚洲综合色自拍一区| 亚洲欧美激情插| 亚洲欧美日本在线| 中文久久乱码一区二区| 亚洲国产精品99久久久久久久久| 国产亚洲一本大道中文在线| 国产亚洲欧美激情| 国产欧美日韩在线视频| 日本一区二区视频在线| 欧美激情一区二区三区四区| 国产精品免费视频网站| 久久久久久久综合色一本| 26uuu色噜噜精品一区二区| 久久亚洲欧美国产精品乐播 | 国产69精品久久99不卡| 国产精品亚洲综合一区在线观看| 国产精品亚洲一区二区三区在线| 国产精品一区二区三区乱码| 国产一区二区在线影院| 国产成人一区在线| 91麻豆自制传媒国产之光| 欧美丝袜自拍制服另类| 欧美一区二区三区在线观看视频| 91精品国产福利在线观看| 精品国产91久久久久久久妲己| 欧美精品一区二区三区蜜桃| 国产精品美女久久久久aⅴ| 亚洲同性同志一二三专区| 伊人开心综合网| 久久国产精品99精品国产| 大白屁股一区二区视频| 91亚洲精华国产精华精华液| 欧美在线观看18| 久久美女高清视频| 亚洲激情六月丁香| 蜜臀av国产精品久久久久 | 欧美专区日韩专区| 91精品国产91久久综合桃花| 国产亚洲女人久久久久毛片| 一区二区免费在线播放| 麻豆成人久久精品二区三区小说| 国产91清纯白嫩初高中在线观看| 色婷婷综合久久久中文字幕| 精品少妇一区二区三区日产乱码 | 国产精品影视网| 91理论电影在线观看| 日韩小视频在线观看专区| 国产欧美日韩一区二区三区在线观看 | 免费一级片91| 91在线免费视频观看| 91精品免费在线观看| 国产精品丝袜久久久久久app| 亚洲福利视频三区| 风流少妇一区二区| 日韩视频免费观看高清完整版在线观看| 中文字幕免费不卡| 免费人成在线不卡| 色综合久久九月婷婷色综合| 26uuu精品一区二区| 亚洲国产你懂的| 成人精品免费看| 精品少妇一区二区三区在线播放| 亚洲精品亚洲人成人网在线播放| 国产一区二区导航在线播放| 欧美性高清videossexo| 亚洲欧洲精品一区二区三区不卡| 精品一区在线看| 欧美精品国产精品| 一区二区在线观看免费| 国产成人av电影免费在线观看| 3d成人动漫网站| 亚洲国产综合人成综合网站| www.成人在线| 欧美激情在线一区二区| 久久精品国产77777蜜臀| 精品视频在线免费观看| 亚洲男同性恋视频| 99免费精品在线| 国产精品少妇自拍| 国产成人av一区二区三区在线| 日韩欧美一二三| 日韩成人免费在线| 欧美日韩国产色站一区二区三区| 亚洲精品高清在线| 色菇凉天天综合网| 亚洲激情图片qvod| 色老综合老女人久久久| 亚洲天堂精品视频| 91免费精品国自产拍在线不卡| **欧美大码日韩| 91蜜桃在线免费视频|