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

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

?? cardsctl.cpp

?? Active控件Card調用和自制.rar
?? CPP
字號:
// CardsCtl.cpp : Implementation of the CCardsCtrl ActiveX Control class.

#include "stdafx.h"
#include "Cards.h"
#include "CardsCtl.h"
#include "CardsPpg.h"


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


IMPLEMENT_DYNCREATE(CCardsCtrl, COleControl)


/////////////////////////////////////////////////////////////////////////////
// Message map

BEGIN_MESSAGE_MAP(CCardsCtrl, COleControl)
	//{{AFX_MSG_MAP(CCardsCtrl)
	ON_WM_CONTEXTMENU()
	ON_COMMAND(ID_MENUITEM_ABOUT, OnMenuitemAbout)
	ON_UPDATE_COMMAND_UI(ID_MENUITEM_ABOUT, OnUpdateMenuitemAbout)
	ON_COMMAND(ID_MENUITEM_HELP, OnMenuitemHelp)
	ON_UPDATE_COMMAND_UI(ID_MENUITEM_HELP, OnUpdateMenuitemHelp)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	//}}AFX_MSG_MAP
	ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// Dispatch map

BEGIN_DISPATCH_MAP(CCardsCtrl, COleControl)
	//{{AFX_DISPATCH_MAP(CCardsCtrl)
	DISP_PROPERTY_EX(CCardsCtrl, "value", GetValue, SetValue, VT_I2)
	DISP_PROPERTY_EX(CCardsCtrl, "background", GetBackground, SetBackground, VT_BOOL)
	DISP_PROPERTY_EX(CCardsCtrl, "backbmp", GetBackbmp, SetBackbmp, VT_I2)
	DISP_PROPERTY_EX(CCardsCtrl, "CancelPopup", GetCancelPopup, SetCancelPopup, VT_BOOL)
	DISP_PROPERTY_EX(CCardsCtrl, "IsMove", GetIsMove, SetIsMove, VT_BOOL)
	DISP_PROPERTY_EX(CCardsCtrl, "IsGoHome", GetIsGoHome, SetIsGoHome, VT_BOOL)
	//}}AFX_DISPATCH_MAP
	DISP_FUNCTION_ID(CCardsCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()


/////////////////////////////////////////////////////////////////////////////
// Event map

BEGIN_EVENT_MAP(CCardsCtrl, COleControl)
	//{{AFX_EVENT_MAP(CCardsCtrl)
	EVENT_STOCK_CLICK()
	EVENT_STOCK_DBLCLICK()
	EVENT_STOCK_MOUSEDOWN()
	EVENT_STOCK_MOUSEMOVE()
	EVENT_STOCK_MOUSEUP()
	//}}AFX_EVENT_MAP
END_EVENT_MAP()


/////////////////////////////////////////////////////////////////////////////
// Property pages

// TODO: Add more property pages as needed.  Remember to increase the count!
BEGIN_PROPPAGEIDS(CCardsCtrl, 1)
	PROPPAGEID(CCardsPropPage::guid)
END_PROPPAGEIDS(CCardsCtrl)


/////////////////////////////////////////////////////////////////////////////
// Initialize class factory and guid

IMPLEMENT_OLECREATE_EX(CCardsCtrl, "CARDS.CardsCtrl.1",
	0xf968806, 0xd214, 0x11d5, 0x90, 0x22, 0x52, 0x54, 0xab, 0x12, 0x3a, 0x61)


/////////////////////////////////////////////////////////////////////////////
// Type library ID and version

IMPLEMENT_OLETYPELIB(CCardsCtrl, _tlid, _wVerMajor, _wVerMinor)


/////////////////////////////////////////////////////////////////////////////
// Interface IDs

const IID BASED_CODE IID_DCards =
		{ 0xf968804, 0xd214, 0x11d5, { 0x90, 0x22, 0x52, 0x54, 0xab, 0x12, 0x3a, 0x61 } };
const IID BASED_CODE IID_DCardsEvents =
		{ 0xf968805, 0xd214, 0x11d5, { 0x90, 0x22, 0x52, 0x54, 0xab, 0x12, 0x3a, 0x61 } };


/////////////////////////////////////////////////////////////////////////////
// Control type information

static const DWORD BASED_CODE _dwCardsOleMisc =
	OLEMISC_ACTIVATEWHENVISIBLE |
	OLEMISC_SETCLIENTSITEFIRST |
	OLEMISC_INSIDEOUT |
	OLEMISC_CANTLINKINSIDE |
	OLEMISC_RECOMPOSEONRESIZE;

IMPLEMENT_OLECTLTYPE(CCardsCtrl, IDS_CARDS, _dwCardsOleMisc)


/////////////////////////////////////////////////////////////////////////////
// CCardsCtrl::CCardsCtrlFactory::UpdateRegistry -
// Adds or removes system registry entries for CCardsCtrl

BOOL CCardsCtrl::CCardsCtrlFactory::UpdateRegistry(BOOL bRegister)
{
	// TODO: Verify that your control follows apartment-model threading rules.
	// Refer to MFC TechNote 64 for more information.
	// If your control does not conform to the apartment-model rules, then
	// you must modify the code below, changing the 6th parameter from
	// afxRegApartmentThreading to 0.

	if (bRegister)
		return AfxOleRegisterControlClass(
			AfxGetInstanceHandle(),
			m_clsid,
			m_lpszProgID,
			IDS_CARDS,
			IDB_CARDS,
			afxRegApartmentThreading,
			_dwCardsOleMisc,
			_tlid,
			_wVerMajor,
			_wVerMinor);
	else
		return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
}


/////////////////////////////////////////////////////////////////////////////
// CCardsCtrl::CCardsCtrl - Constructor

CCardsCtrl::CCardsCtrl()
{
	InitializeIIDs(&IID_DCards, &IID_DCardsEvents);
	value=1;backbmp=1;
	IsMove=false;m_IsMove=false;IsGoHome=true;
	// TODO: Initialize your control's instance data here.
}


/////////////////////////////////////////////////////////////////////////////
// CCardsCtrl::~CCardsCtrl - Destructor

CCardsCtrl::~CCardsCtrl()
{
	// TODO: Cleanup your control's instance data here.
}


/////////////////////////////////////////////////////////////////////////////
// CCardsCtrl::OnDraw - Drawing function

void CCardsCtrl::OnDraw(
			CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
	// TODO: Replace the following code with your own drawing code.
	//讓控件里顯示撲克牌的圖形
	CBitmap *pOldBitmap;
	CBitmap bitmap;
	CRect rect;
	GetClientRect(rect);
	CDC ppdc;
	CClientDC dc(this);
	ppdc.CreateCompatibleDC(&dc);
	if(background)//背景圖案
	{
		if(backbmp==1)bitmap.LoadBitmap(255);
		if(backbmp==2)bitmap.LoadBitmap(256);
	}
	else//前景圖案
		bitmap.LoadBitmap(IDB_BITMAP1+value-1);
	pOldBitmap=ppdc.SelectObject(&bitmap);
	dc.BitBlt(0,0,rect.Width(),rect.Height(),&ppdc,0,0,SRCCOPY);
	ppdc.SelectObject(pOldBitmap);
}


/////////////////////////////////////////////////////////////////////////////
// CCardsCtrl::DoPropExchange - Persistence support

void CCardsCtrl::DoPropExchange(CPropExchange* pPX)
{
	ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
	COleControl::DoPropExchange(pPX);

	// TODO: Call PX_ functions for each persistent custom property.

}


/////////////////////////////////////////////////////////////////////////////
// CCardsCtrl::OnResetState - Reset control to default state

void CCardsCtrl::OnResetState()
{
	COleControl::OnResetState();  // Resets defaults found in DoPropExchange

	// TODO: Reset any other control state here.
}


/////////////////////////////////////////////////////////////////////////////
// CCardsCtrl::AboutBox - Display an "About" box to the user

void CCardsCtrl::AboutBox()
{
	CDialog dlgAbout(IDD_ABOUTBOX_CARDS);
	dlgAbout.DoModal();
}


/////////////////////////////////////////////////////////////////////////////
// CCardsCtrl message handlers

short CCardsCtrl::GetValue() 
{
	// TODO: Add your property handler here
	return value;
}

void CCardsCtrl::SetValue(short nNewValue) 
{
	// TODO: Add your property handler here
	value=nNewValue;
	SetModifiedFlag();
	Invalidate();//立即刷新
}

BOOL CCardsCtrl::GetBackground() 
{
	// TODO: Add your property handler here
	return background;
}

void CCardsCtrl::SetBackground(BOOL bNewValue) 
{
	// TODO: Add your property handler here
	background=bNewValue;
	SetModifiedFlag();
	Invalidate();
}

short CCardsCtrl::GetBackbmp() 
{
	// TODO: Add your property handler here
	return backbmp;
}

void CCardsCtrl::SetBackbmp(short nNewValue) 
{
	// TODO: Add your property handler here
	backbmp=nNewValue;
	SetModifiedFlag();
	Invalidate();
}

void CCardsCtrl::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	// TODO: Add your message handler code here
	if(!CancelPopup)
	{
		CMenu menu1;
		menu1.LoadMenu(IDR_MENU1);
		menu1.GetSubMenu(0)->TrackPopupMenu(TPM_CENTERALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,point.x,point.y,this);
	}
}

void CCardsCtrl::OnMenuitemAbout() 
{
	// TODO: Add your command handler code here
	MessageBox("控件制作:龍浩天\r\nE_mail:cyuyan@sohu.com","54張牌的撲克控件1.0");
}

void CCardsCtrl::OnUpdateMenuitemAbout(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CCardsCtrl::OnMenuitemHelp() 
{
	// TODO: Add your command handler code here
	MessageBox("此控件有五十四張牌,包括了大小王。能夠處\r\n理的事件有單擊和雙擊。如果你在使用中覺\r\n得有什么不足之處,請通知我。","54張牌的撲克控件1.0");
}

void CCardsCtrl::OnUpdateMenuitemHelp(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

BOOL CCardsCtrl::GetCancelPopup() 
{
	// TODO: Add your property handler here
	return CancelPopup;
}

void CCardsCtrl::SetCancelPopup(BOOL bNewValue) 
{
	// TODO: Add your property handler here
	CancelPopup=bNewValue;
	SetModifiedFlag();
	Invalidate();
}

void CCardsCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(IsMove)//屬性框中設置的是否是允許拖動鼠標
	{
		m_IsMove=true;
		SetCapture();//捕獲鼠標
		xx=point.x;//得到鼠標(相對于控件左上角)的坐標
		yy=point.y;

		GetClientRect(&rect);//保存拖動前的撲克位置
		::ClientToScreen(m_hWnd,&rect.TopLeft());
		OldPoint=rect.TopLeft();

		MoveWindow(0,0,71,96);//得到相對量
		GetClientRect(&rect);
		::ClientToScreen(m_hWnd,&rect.TopLeft());
	}
	COleControl::OnLButtonDown(nFlags, point);
}

void CCardsCtrl::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CPoint MyPoint=point;
	if(m_IsMove)
	{
		ClientToScreen(&MyPoint);
        MoveWindow(MyPoint.x-xx-rect.left,MyPoint.y-yy-rect.top,71,96);
	}
	COleControl::OnMouseMove(nFlags, point);
}

void CCardsCtrl::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_IsMove)
	{
		ReleaseCapture();
		m_IsMove=false;
		if(IsGoHome)
		    MoveWindow(OldPoint.x-rect.left,OldPoint.y-rect.top,71,96);//還原到撲克牌拖動前的位置
	}
	COleControl::OnLButtonUp(nFlags, point);
}


BOOL CCardsCtrl::GetIsMove() 
{
	// TODO: Add your property handler here
	return IsMove;
}

void CCardsCtrl::SetIsMove(BOOL bNewValue) 
{
	// TODO: Add your property handler here
	IsMove=bNewValue;
	SetModifiedFlag();
	Invalidate();
}

BOOL CCardsCtrl::GetIsGoHome() 
{
	// TODO: Add your property handler here

	return IsGoHome;
}

void CCardsCtrl::SetIsGoHome(BOOL bNewValue) 
{
	// TODO: Add your property handler here
	IsGoHome=bNewValue;
	SetModifiedFlag();
	Invalidate();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久快鸭 | 日本伊人色综合网| 国产精品一卡二卡| 欧美成人bangbros| 日韩成人精品视频| 制服丝袜亚洲播放| 亚洲国产aⅴ天堂久久| 欧美在线高清视频| 亚洲一区二区三区视频在线| 欧美性生交片4| 天堂成人国产精品一区| 日韩一级大片在线观看| 久久国产尿小便嘘嘘| 精品久久一二三区| 懂色av一区二区夜夜嗨| 91麻豆精品国产91久久久资源速度| 一区2区3区在线看| 欧美顶级少妇做爰| 久久草av在线| 中文成人综合网| 2020日本不卡一区二区视频| 国产成人无遮挡在线视频| 精品国产一区二区三区久久影院| 国产欧美va欧美不卡在线| 成人99免费视频| 亚瑟在线精品视频| 久久久国产一区二区三区四区小说 | 麻豆成人在线观看| 亚洲色图欧美偷拍| 欧美精品一二三区| 成人综合在线视频| 美洲天堂一区二卡三卡四卡视频| 国产精品久久久久久久蜜臀| 91麻豆精品国产无毒不卡在线观看| 国产美女视频91| 日韩不卡免费视频| 一级中文字幕一区二区| 26uuu国产在线精品一区二区| 色狠狠桃花综合| 国产一区二区看久久| 日韩精品久久理论片| 中文字幕巨乱亚洲| 国产无一区二区| 久久久久久久av麻豆果冻| 欧美三级韩国三级日本一级| 91在线观看污| 国产成人精品亚洲777人妖| 美女网站色91| 精品一区二区免费在线观看| 美日韩一区二区| 精品一区二区三区在线观看国产 | √…a在线天堂一区| 亚洲国产成人在线| √…a在线天堂一区| 亚洲精品福利视频网站| 亚洲激情图片小说视频| 亚洲在线视频网站| 亚洲成国产人片在线观看| 色婷婷综合在线| 亚洲第一福利视频在线| 亚洲国产精品精华液ab| 久久久99精品久久| 自拍偷拍欧美精品| 国产一区二区三区久久悠悠色av | 国产精品欧美极品| 曰韩精品一区二区| 久久99国产精品成人| 丰满少妇久久久久久久| 91蜜桃在线免费视频| 欧美一区三区二区| 国产情人综合久久777777| 18成人在线观看| 久久精工是国产品牌吗| aa级大片欧美| 日韩欧美一区电影| 亚洲美女在线一区| 国产盗摄一区二区| 制服丝袜av成人在线看| 国产精品久久国产精麻豆99网站| 一区二区三区电影在线播| 经典三级视频一区| 在线观看一区二区视频| 久久尤物电影视频在线观看| 亚洲精品你懂的| 成人久久视频在线观看| 日韩精品影音先锋| 日韩中文字幕不卡| 欧美在线观看视频一区二区| 日本一区二区动态图| 激情综合网av| 91精品国产乱| 日本免费在线视频不卡一不卡二| www.成人在线| 国产精品网站一区| 国产黑丝在线一区二区三区| 久久综合资源网| 九九热在线视频观看这里只有精品| 在线观看亚洲一区| 亚洲国产一区二区三区青草影视| 不卡视频在线看| 中文一区二区在线观看| 国内欧美视频一区二区| 久久久不卡网国产精品一区| 久久国产免费看| 久久奇米777| 成人精品小蝌蚪| 亚洲欧美日韩国产一区二区三区| 91浏览器入口在线观看| 亚洲精品视频在线看| 欧美性猛交xxxx黑人交| 天天av天天翘天天综合网色鬼国产| 欧美日韩你懂的| 精品一二三四区| 国产精品三级久久久久三级| 日本精品一区二区三区四区的功能| 亚洲国产电影在线观看| 国产精品91一区二区| 亚洲久草在线视频| 日韩一区二区麻豆国产| 成人免费福利片| 日韩精品久久理论片| 国产精品久久免费看| 91.成人天堂一区| 粉嫩欧美一区二区三区高清影视| 国产精品传媒入口麻豆| 91精品国产欧美一区二区成人| 国产大片一区二区| 视频精品一区二区| 国产精品国产三级国产aⅴ原创| 7777精品伊人久久久大香线蕉 | 91精品国产全国免费观看| 成人黄色小视频在线观看| 免费观看91视频大全| 亚洲精品中文字幕乱码三区| 精品免费日韩av| 8x8x8国产精品| 在线观看av一区| 91蝌蚪国产九色| 成人av免费观看| 国产成人激情av| 福利视频网站一区二区三区| 日韩av中文字幕一区二区三区| 国产精品高潮呻吟| 中文字幕欧美日本乱码一线二线| 欧美成人三级在线| 欧美成人一区二区三区| 欧美日本一区二区三区四区| 欧美在线色视频| 欧美日韩五月天| 91精品在线免费观看| 欧美日韩综合一区| 欧美三级一区二区| 欧美综合色免费| 欧美美女黄视频| 欧美一区二区三区四区高清| 91精品国产色综合久久不卡电影 | 激情欧美一区二区| 国产不卡一区视频| 97精品久久久久中文字幕| 色一区在线观看| 欧美一区二区三区四区视频 | 一本色道a无线码一区v| 911精品产国品一二三产区| 亚洲制服丝袜av| 亚洲国产高清在线| 精品国产一区二区三区av性色| 欧美日韩在线综合| 欧美成人一区二区三区在线观看| 久久综合狠狠综合久久激情 | 91视频在线观看| 欧美美女一区二区| 中文文精品字幕一区二区| 亚洲一区二区三区四区五区中文| 青青草97国产精品免费观看无弹窗版| 另类欧美日韩国产在线| 成人免费高清视频在线观看| 欧洲在线/亚洲| 中文字幕一区av| 精品综合久久久久久8888| 欧美亚洲自拍偷拍| 国产欧美在线观看一区| 日韩电影在线免费观看| av成人老司机| 2020国产精品| 另类调教123区| 日韩精品一区二区三区视频播放 | 精品国产一区a| 婷婷亚洲久悠悠色悠在线播放| www.性欧美| 国产精品免费网站在线观看| 国产一区亚洲一区| 337p日本欧洲亚洲大胆色噜噜| 午夜精品久久久| 欧美日韩精品一区二区天天拍小说 | 色一情一乱一乱一91av| 国产精品美女久久久久久久久| 国产一区福利在线| 精品国产91亚洲一区二区三区婷婷 | 日韩免费电影一区| 蜜桃av噜噜一区|