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

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

?? stockcontrolctl.cpp

?? 股票控件activx源代碼,實現了K線圖等技術指標
?? CPP
字號:
// StockControlCtl.cpp : Implementation of the CStockControlCtrl ActiveX Control class.

#include "stdafx.h"
#include "StockControl.h"
#include "StockControlCtl.h"
#include "StockControlPpg.h"


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

int api_get_jjz_ai_mark(CString str);
IMPLEMENT_DYNCREATE(CStockControlCtrl, COleControl)


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

BEGIN_MESSAGE_MAP(CStockControlCtrl, COleControl)
	//{{AFX_MSG_MAP(CStockControlCtrl)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_MOUSEMOVE()
	ON_WM_RBUTTONDOWN()
	ON_WM_RBUTTONDBLCLK()
	ON_WM_RBUTTONUP()
	ON_WM_KEYDOWN()
	ON_WM_KEYUP()
	ON_WM_ACTIVATE()
	//}}AFX_MSG_MAP
	ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
END_MESSAGE_MAP()


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

BEGIN_DISPATCH_MAP(CStockControlCtrl, COleControl)
	//{{AFX_DISPATCH_MAP(CStockControlCtrl)
	DISP_PROPERTY_NOTIFY(CStockControlCtrl, "Action", m_nAction, OnActionChanged, VT_I2)
	DISP_FUNCTION(CStockControlCtrl, "LoadKLines", LoadKLines, VT_EMPTY, VTS_BSTR)
	//}}AFX_DISPATCH_MAP
	DISP_FUNCTION_ID(CStockControlCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()


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

BEGIN_EVENT_MAP(CStockControlCtrl, COleControl)
	//{{AFX_EVENT_MAP(CStockControlCtrl)
	// NOTE - ClassWizard will add and remove event map entries
	//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_EVENT_MAP
END_EVENT_MAP()


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

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


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

IMPLEMENT_OLECREATE_EX(CStockControlCtrl, "STOCKCONTROL.StockControlCtrl.1",
	0xd810d9c5, 0x475c, 0x4f5d, 0x81, 0x8e, 0xe2, 0x84, 0xb, 0x9c, 0xbb, 0x54)


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

IMPLEMENT_OLETYPELIB(CStockControlCtrl, _tlid, _wVerMajor, _wVerMinor)


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

const IID BASED_CODE IID_DStockControl =
		{ 0x1bb07a08, 0x9605, 0x4975, { 0x9b, 0xe0, 0x64, 0x18, 0x21, 0xc1, 0xe9, 0xd5 } };
const IID BASED_CODE IID_DStockControlEvents =
		{ 0xfb9af3fb, 0xc2f1, 0x436f, { 0x94, 0x1, 0xef, 0x45, 0xf4, 0x88, 0xb5, 0x72 } };


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

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

IMPLEMENT_OLECTLTYPE(CStockControlCtrl, IDS_STOCKCONTROL, _dwStockControlOleMisc)


/////////////////////////////////////////////////////////////////////////////
// CStockControlCtrl::CStockControlCtrlFactory::UpdateRegistry -
// Adds or removes system registry entries for CStockControlCtrl

BOOL CStockControlCtrl::CStockControlCtrlFactory::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_STOCKCONTROL,
			IDB_STOCKCONTROL,
			afxRegApartmentThreading,
			_dwStockControlOleMisc,
			_tlid,
			_wVerMajor,
			_wVerMinor);
	else
		return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
}


/////////////////////////////////////////////////////////////////////////////
// CStockControlCtrl::CStockControlCtrl - Constructor

CStockControlCtrl::CStockControlCtrl()
{
	InitializeIIDs(&IID_DStockControl, &IID_DStockControlEvents);
    m_pStockView=NULL;
	// TODO: Initialize your control's instance data here.
}


/////////////////////////////////////////////////////////////////////////////
// CStockControlCtrl::~CStockControlCtrl - Destructor

CStockControlCtrl::~CStockControlCtrl()
{
	// TODO: Cleanup your control's instance data here.
//	delete m_pKline;
	delete m_pStockView;
}


/////////////////////////////////////////////////////////////////////////////
// CStockControlCtrl::OnDraw - Drawing function

void CStockControlCtrl::OnDraw(
			CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
	// TODO: Replace the following code with your own drawing code.
	
	pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
	if(!m_pStockView)
	{
		m_pKline=new CStockKline;
		CRect rc;
		GetClientRect(&rc);
		int nWidth=rc.Width();
		int nHigh=rc.Height();
		rc.SetRect(rc.TopLeft().x+20,rc.TopLeft().y+40,rc.BottomRight().x-60,rc.BottomRight().y-40);
		nWidth=rc.Width();
		nHigh=rc.Height();
		//在此裝載K線圖,設置視圖區域
		m_pStockView=new CStockView(this,m_pKline,rc);
	}
	if(m_pStockView)
	   m_pStockView->OnDraw(pdc);

}


/////////////////////////////////////////////////////////////////////////////
// CStockControlCtrl::DoPropExchange - Persistence support

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

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

}


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

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

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


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

void CStockControlCtrl::AboutBox()
{
	CDialog dlgAbout(IDD_ABOUTBOX_STOCKCONTROL);
	dlgAbout.DoModal();
}


/////////////////////////////////////////////////////////////////////////////
// CStockControlCtrl message handlers
/////////////////////////////////////////////////////////////////////////////
// CCadGraphControlCtrl message handlers


//控件視圖操作的方法
//如縮放、平移、開窗顯示
void CStockControlCtrl::OnActionChanged() 
{
	// TODO: Add notification handler code
    m_pStockView->SetEvent(m_nAction);
	SetModifiedFlag();
}
//下面是對一系列的鼠標、鍵盤消息的重載

void CStockControlCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	    m_pStockView->OnLButtonDown(nFlags,point);
	COleControl::OnLButtonDown(nFlags, point);
}

void CStockControlCtrl::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	    m_pStockView->OnLButtonUp(nFlags,point);
	COleControl::OnLButtonUp(nFlags, point);
}

void CStockControlCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	    m_pStockView->OnLButtonDblClk(nFlags,point);
	COleControl::OnLButtonDblClk(nFlags, point);
}

void CStockControlCtrl::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	    m_pStockView->OnMouseMove(nFlags,point);
	COleControl::OnMouseMove(nFlags, point);
}

void CStockControlCtrl::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	   m_pStockView->OnRButtonDown(nFlags,point);
	COleControl::OnRButtonDown(nFlags, point);
}

void CStockControlCtrl::OnRButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	    m_pStockView->OnRButtonDblClk(nFlags,point);
	COleControl::OnRButtonDblClk(nFlags, point);
}

void CStockControlCtrl::OnRButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	    m_pStockView->OnRButtonUp(nFlags,point);
	COleControl::OnRButtonUp(nFlags, point);
}

void CStockControlCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	    m_pStockView->OnKeyDown(nChar,nRepCnt,nFlags);
	COleControl::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CStockControlCtrl::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_pStockView)
	    m_pStockView->OnKeyUp(nChar,nRepCnt,nFlags);
	COleControl::OnKeyUp(nChar, nRepCnt, nFlags);
}

void CStockControlCtrl::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
{
	COleControl::OnActivate(nState, pWndOther, bMinimized);

	// TODO: Add your message handler code here
	
}

//用戶自定義函數,在此對線的各個節點的參數進行賦值
//其數據源可以是文件、數據庫、網絡數據包
//在此的示范程序是以自定義的文件格式提供
BOOL CStockControlCtrl::LoadKLine(CString strFileName)
{
	CString buffer;
	CStdioFile* stfile = new CStdioFile(strFileName,CFile::modeRead);

	while(stfile->ReadString(buffer) != FALSE)	
	{
		buffer.TrimLeft("(");
		buffer.TrimRight(")");
		int no = buffer.Find(" ");
		CString _date = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _open = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _high = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _low = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
//		CString _close = buffer.Left(no);
		CString _close = buffer;
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _kl = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _ks = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _km = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _km1 = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _km2 = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _ai0 = buffer.Left(no);
		buffer = buffer.Right(buffer.GetLength() - no-1);
		no = buffer.Find(" ");
		CString _ai1 = buffer.Left(no);
		
		int i_ai0 = api_get_jjz_ai_mark(_ai0);
		int i_ai1 = api_get_jjz_ai_mark(_ai1);
		int ai_flag = i_ai0|i_ai1;
		CScn *pScn=m_pStockView->GetScn();
		m_pKline->AddKlineNode(pScn,atoi(_date),atof(_open)/10000,atof(_high)/10000,atof(_low)/10000,atof(_close)/10000,
			atof(_kl),atof(_ks),atof(_km),atof(_km1),atof(_km2),ai_flag);

	}
	delete stfile;
	return TRUE;
}



int api_get_jjz_ai_mark(CString str)
{
	CString _ai0 = str;
	_ai0.MakeUpper();
	int i_ai0 = 0x0000;
	if(_ai0.Compare("AIBUY_L") == 0)
			i_ai0 = JJZ_AIBUY_L;
		else if(_ai0.Compare("AIBUY_S")== 0)
			i_ai0 = JJZ_AIBUY_S;
		else if(_ai0.Compare("AIBUY_W")== 0)
			i_ai0 = JJZ_AIBUY_W;
		else if(_ai0.Compare("AISEL_M")== 0)
			i_ai0 = JJZ_AISEL_M;
		else if(_ai0.Compare("AIDN")== 0)
			i_ai0 = JJZ_AIDN;
		else if(_ai0.Compare("AIUP")== 0)
			i_ai0 = JJZ_AIUP;
		else if(_ai0.Compare("AIDN_S")== 0)
			i_ai0 = JJZ_AIDN_S;
		else if(_ai0.Compare("AIUP_S")== 0)
			i_ai0 = JJZ_AIUP_S;
		else if(_ai0.Compare("AISEL_L")== 0)
			i_ai0 = JJZ_AISEL_L;
		else if(_ai0.Compare("AISEL_S")== 0)
			i_ai0 = JJZ_AISEL_S;
		else if(_ai0.Compare("WARN")== 0)
			i_ai0 = JJZ_AIWARN;
		return i_ai0;
}

//控件的打開K線圖的方法
void CStockControlCtrl::LoadKLines(LPCTSTR sFileName) 
{
	// TODO: Add your dispatch handler code here

//		LoadKLine("E:\\Paper\\Data\\jjz_data.txt");
    LoadKLine(sFileName);
	Invalidate();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人高清免费观看| 一区二区久久久久| 亚洲人午夜精品天堂一二香蕉| 亚洲欧洲日产国码二区| 亚洲成人免费影院| 韩国三级在线一区| 91女厕偷拍女厕偷拍高清| 欧美精品xxxxbbbb| 亚洲激情在线激情| 另类人妖一区二区av| 成人一级片网址| 欧美手机在线视频| 欧美成人a在线| 亚洲三级电影网站| 美国一区二区三区在线播放| 不卡的电影网站| 欧美丰满嫩嫩电影| 国产精品久久久久永久免费观看| 亚洲成a人片在线观看中文| 国产成人精品亚洲午夜麻豆| 欧美日韩在线综合| 中文字幕免费一区| 秋霞av亚洲一区二区三| 91小视频免费看| 久久综合视频网| 亚洲chinese男男1069| 国产999精品久久久久久绿帽| 欧美日本一区二区三区| 中文字幕欧美国产| 精品一区二区在线观看| 欧美主播一区二区三区| 国产精品免费视频观看| 精品一区二区三区视频| 欧美色精品天天在线观看视频| 欧美激情一区在线观看| 日韩电影在线观看一区| 色综合天天综合色综合av| 久久久精品国产免费观看同学| 午夜精品免费在线| 91美女蜜桃在线| 欧美激情艳妇裸体舞| 久久99九九99精品| 884aa四虎影成人精品一区| 亚洲视频在线一区二区| 国产69精品久久久久777| 日韩一区二区三区电影| 午夜精品久久久久久久99水蜜桃| 99re6这里只有精品视频在线观看| 久久精子c满五个校花| 美国av一区二区| 91精品国产综合久久精品 | 国产一区二区三区四区五区美女| 欧美日韩综合不卡| 亚洲人精品午夜| 国产成人超碰人人澡人人澡| 日韩精品一区二区三区视频播放| 亚洲成人激情综合网| 欧洲色大大久久| 亚洲男人的天堂av| 国产精品18久久久久久久网站| 欧美大度的电影原声| 亚洲二区视频在线| 欧美优质美女网站| 一区二区视频免费在线观看| 一本大道av一区二区在线播放| 国产精品亲子伦对白| 在线精品国精品国产尤物884a| 国产精品久久一卡二卡| 国产成人精品综合在线观看| 久久午夜羞羞影院免费观看| 精品亚洲国内自在自线福利| 日韩一区二区三| 日韩av一区二区在线影视| 欧美日韩精品一区二区天天拍小说| 亚洲一区影音先锋| 欧美日本在线一区| 婷婷国产v国产偷v亚洲高清| 在线播放91灌醉迷j高跟美女| 亚洲国产欧美日韩另类综合 | 亚洲免费观看视频| 91麻豆文化传媒在线观看| 18欧美亚洲精品| 色老汉av一区二区三区| 亚洲在线观看免费视频| 欧美日韩午夜精品| 青青草原综合久久大伊人精品优势| 91精品综合久久久久久| 麻豆专区一区二区三区四区五区| 精品少妇一区二区| 国产成人自拍网| 亚洲欧美日韩系列| 欧美二区三区的天堂| 免费成人av在线播放| 久久综合九色综合97婷婷女人| 国产乱淫av一区二区三区| 国产精品无人区| 色欧美乱欧美15图片| 午夜欧美在线一二页| 日韩欧美国产综合| 国产成人在线免费| 一区二区三区免费在线观看| 欧美日韩高清一区二区三区| 狠狠色综合日日| 国产精品成人在线观看| 欧美三级中文字| 狠狠v欧美v日韩v亚洲ⅴ| 中文字幕精品综合| 在线精品亚洲一区二区不卡| 美女网站在线免费欧美精品| 中文字幕乱码亚洲精品一区| 欧美性猛片xxxx免费看久爱| 日本vs亚洲vs韩国一区三区| 久久精品日韩一区二区三区| 91亚洲精品久久久蜜桃| 日韩精品成人一区二区在线| 久久久久久麻豆| 在线免费不卡电影| 国产真实乱对白精彩久久| 亚洲欧美日韩久久| 精品乱人伦小说| 99re在线视频这里只有精品| 日韩国产一二三区| 日本一区二区成人| 91精品午夜视频| 成人av综合在线| 男人的天堂亚洲一区| 久久久99精品久久| 欧美日韩一区二区电影| 国产成人在线影院| 三级在线观看一区二区 | 不卡一二三区首页| 日韩成人一级片| 欧美国产日韩a欧美在线观看| 欧美日韩国产经典色站一区二区三区| 韩国理伦片一区二区三区在线播放| 亚洲图片另类小说| 久久久久久久精| 91麻豆精品国产91久久久使用方法| 国产成人丝袜美腿| 日韩精品1区2区3区| 亚洲欧美一区二区三区久本道91 | 国产中文字幕一区| 亚洲3atv精品一区二区三区| 亚洲国产成人在线| 亚洲精品在线电影| 欧美日本在线播放| 99re这里只有精品首页| 国产美女av一区二区三区| 午夜精品成人在线视频| 亚洲三级在线播放| 亚洲一二三专区| 综合色中文字幕| 久久久久99精品国产片| 日韩欧美高清一区| 欧美日韩亚洲综合| 91国产免费看| youjizz久久| 丁香六月综合激情| 激情都市一区二区| 美女脱光内衣内裤视频久久网站 | 欧美日韩高清影院| 色一区在线观看| eeuss国产一区二区三区| 国产麻豆视频精品| 精品一区二区三区免费视频| 人禽交欧美网站| 无吗不卡中文字幕| 亚洲国产精品久久久久婷婷884| 亚洲天堂久久久久久久| 国产片一区二区三区| 久久久不卡网国产精品一区| www亚洲一区| 2020国产精品久久精品美国| 日韩欧美国产麻豆| 日韩精品一区国产麻豆| 日韩视频123| 欧美成人video| 久久这里只精品最新地址| 精品少妇一区二区三区在线播放| 91精品国模一区二区三区| 欧美日韩电影一区| 欧美日韩一区三区四区| 欧美日韩一区二区三区高清| 欧美三电影在线| 欧美精三区欧美精三区| 欧美精品乱码久久久久久按摩| 欧美日韩视频在线一区二区| 欧美年轻男男videosbes| 欧美日韩第一区日日骚| 日韩午夜在线播放| 亚洲精品一区二区三区福利 | 国产精品99精品久久免费| 国产高清精品在线| 成人h动漫精品一区二| 成人激情黄色小说| 97成人超碰视| 在线免费观看成人短视频| 欧美三级三级三级| 日韩精品最新网址| 久久免费偷拍视频|