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

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

?? containview.cpp

?? 本程序是VC為平臺開發的股票資訊系統
?? CPP
字號:
// ContainView.cpp : implementation file
//

#include "stdafx.h"
#include "stockrefer.h"
#include "ContainView.h"

#include "MainFrm.h"
#include "NewsContent.h"

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

/////////////////////////////////////////////////////////////////////////////
// CContainView

IMPLEMENT_DYNCREATE(CContainView, CView)

CContainView::CContainView()
{
	NONCLIENTMETRICS ncm;
	memset(&ncm, 0, sizeof(NONCLIENTMETRICS));
	ncm.cbSize = sizeof(NONCLIENTMETRICS);

	VERIFY(::SystemParametersInfo(SPI_GETNONCLIENTMETRICS,
		sizeof(NONCLIENTMETRICS), &ncm, 0));
	ncm.lfMessageFont.lfWeight = 700;
	ncm.lfMessageFont.lfHeight = 16;
	m_CaptionFont.CreateFontIndirect(&ncm.lfMessageFont);

	m_CurDate = CTime::GetCurrentTime();
	iCurShowItem = 0;
}

CContainView::~CContainView()
{
	m_TreeIconList.DeleteImageList();
}


BEGIN_MESSAGE_MAP(CContainView, CView)
	//{{AFX_MSG_MAP(CContainView)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_WM_ERASEBKGND()
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CContainView drawing

void CContainView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CContainView diagnostics

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

void CContainView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CContainView message handlers

BOOL CContainView::PreCreateWindow(CREATESTRUCT& cs) 
{
	if(!CView::PreCreateWindow(cs))
		return FALSE;

	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
	cs.dwExStyle |=  WS_EX_STATICEDGE;

	return TRUE;
}

int CContainView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO: Add your specialized creation code here
	if (!m_Caption.Create(this, NULL))
	{
		TRACE0( "Failed to caption window.\n" );
		return -1;
	}

	// set the caption colors.
	m_Caption.SetCaptionColors(::GetSysColor(COLOR_BTNFACE),
		::GetSysColor(COLOR_BTNSHADOW), ::GetSysColor(COLOR_WINDOW));

	// set the caption style.
	m_Caption.ModifyCaptionStyle(4, &m_CaptionFont, NULL, NULL);

	// The context information is passed on from the framework
	CCreateContext *pContext = (CCreateContext*)lpCreateStruct->lpCreateParams;

	// Create the splitter window with two columns
	if (!m_wndSplitter.CreateStatic(this, 1, 2))
	{
		TRACE0("Failed to create splitter window\n");
		return FALSE;
	}

	if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CTitleView),
		CSize(0, 0), pContext))
	{
		m_wndSplitter.DestroyWindow();
		return -1;
	}

	// now create the two views inside the nested splitter
	if (!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CStockReferView),
		CSize(0, 0), pContext))
	{
		m_wndSplitter.DestroyWindow();
		return FALSE;
	}

	// Set TitleView Width
	int m_NewsListLength = AfxGetApp()->GetProfileInt(_T("Base"),_T("NewsListLength"),200);
	m_wndSplitter.SetColumnInfo(0,m_NewsListLength,0);
	m_wndSplitter.RecalcLayout();

	return 0;
}

CStockReferView* CContainView::GetStockReferView()
{
	CWnd* pWnd;
	if(!m_bViewList)
		pWnd = m_wndSplitter.GetPane(0,0);
	else
		pWnd = m_wndSplitter.GetPane(0,1);

	return (CStockReferView*)pWnd;
}

void CContainView::OnDestroy() 
{
	CView::OnDestroy();
	
	// TODO: Add your message handler code here
	if(m_ContentDb.IsOpen()) m_ContentDb.Close();

	// Save SplitterWnd states
	AfxGetApp()->WriteProfileInt(_T("Base"),_T("ViewList"),m_bViewList);
	if(m_bViewList)
	{
		int m_NewsListLength,cxMix;
		m_wndSplitter.GetColumnInfo(0,m_NewsListLength,cxMix);
		AfxGetApp()->WriteProfileInt(_T("Base"),_T("NewsListLength"),m_NewsListLength);
	}

	// HistoryNews Set
	AfxGetApp()->WriteProfileInt(_T("Base"),_T("HistoryNewsSet"),m_SaveNewsChk);
	AfxGetApp()->WriteProfileInt(_T("Base"),_T("SaveDays"),m_SaveDays);
}

BOOL CContainView::InitColum(LPCTSTR lpszTitle, HICON hIcon)
{
	m_SaveNewsChk = AfxGetApp()->GetProfileInt(_T("Base"),_T("HistoryNewsSet"),0);
	m_SaveDays = AfxGetApp()->GetProfileInt(_T("Base"),_T("SaveDays"),HISTORYNEWS_DAY);
	m_bViewList = AfxGetApp()->GetProfileInt(_T("Base"),_T("ViewList"),1);

	m_Caption.UpdateCaption(lpszTitle,hIcon);

	if(!OpenContentDb()) return FALSE;
	for(int i=0;i<CATEGORY_NUM;i++) HasInit[i] = FALSE;
	SetTitleTree();
	BOOL m_bRtn = TRUE;
	if(!m_bViewList)
		m_wndSplitter.HideColumn(0);
	m_bRtn = InitTitleTree();

	iCurShowItem = iCurSel;
	GetTitleTree(iCurSel).ShowWindow(SW_SHOW);

	return m_bRtn;
}

BOOL CContainView::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	UNUSED_ALWAYS(pDC);

	return FALSE;
}

void CContainView::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	if( m_wndSplitter.GetSafeHwnd())
	{
		int nCX = ::GetSystemMetrics(SM_CXEDGE);
		int nCY = ::GetSystemMetrics(SM_CYEDGE);
		
		// move and grow view to clip border
		m_wndSplitter.MoveWindow(-nCX, 30, cx+(nCX*2), cy+(nCY*2)-34);	
	}

	if( m_Caption.GetSafeHwnd())
		m_Caption.MoveWindow(0,0,cx,31);
}

CTreeCtrlEx& CContainView::GetTitleTree(int iTitleTree)
{
	return CTitleView::m_TitleTree[iTitleTree];
}

BOOL CContainView::OpenContentDb()
{
	try
	{
		m_ContentDb.Open(CONTENT_DATABASE,TRUE,FALSE,_T(";PWD=新_NS_???_dat!09股"));
	}
	catch(CDaoException *ex)
	{
		if(m_ContentDb.IsOpen()) m_ContentDb.Close();
		ex->Delete();

		return FALSE;
	}

	return TRUE;
}

void CContainView::SetTitleTree()
{
	CBitmap bitmap;
	m_TreeIconList.Create(20, 16, ILC_COLOR24 | ILC_MASK, 2, 0);
	bitmap.LoadBitmap(IDB_TITLE_TREE);
	m_TreeIconList.Add(&bitmap,RGB(255,0,255));
	for(int i = 0; i < CATEGORY_NUM; i++)
		GetTitleTree(i).SetImageList(&m_TreeIconList, TVSIL_NORMAL);

	for(i = 0; i < 10; i++)
		strParents[i].LoadString(IDS_PARENT_TITLE0 + i);

	CTime tmpday = m_CurDate;
	weekday = m_CurDate.GetDayOfWeek();
	weekday--;
	if(weekday == 0) weekday = 7;

	CString strFmtDate;
	for(i = 2 + weekday; i > 3; i--)
	{
		tmpday -= CTimeSpan(1,0,0,0);
		strToday = tmpday.Format(IDS_DATE_FORMAT);
		strParents[i] += strToday;
	}
	strToday.LoadString(IDS_PARENT_TODAY);
	strFmtDate.LoadString(IDS_DATE_FORMAT);
	strToday = strToday + strFmtDate;
	strToday = m_CurDate.Format(strToday);
	strParents[3+weekday] = strToday;
}

BOOL CContainView::DeleteHistoryNews(int m_iHistoryTime)
{
	CNewsContent item(&m_ContentDb);
	try
	{
		CString sql;
		sql.Format(_T("SELECT * FROM list%d ORDER BY col3"),iCurSel);
		item.Open(dbOpenDynaset,sql,0);

		if(!item.IsEOF())
		{
			CTime delday = m_CurDate - CTimeSpan(m_iHistoryTime,0,0,0);
			sql.Format(_T("DELETE FROM list%d WHERE col3 < #%s#;"),iCurSel,delday.Format(_T("%Y-%m-%d")));
			item.m_pDatabase->Execute(sql);
		}
		item.Close();

		return TRUE;
	}
	catch(CDaoException *ex)
	{
		if(item.IsOpen()) item.Close();
		ex->Delete();

		return FALSE;
	}
}

void CContainView::AddTreeItem(int iCurNewsItem, LPCTSTR lpszTitle, int pos/* = -1*/)
{
	HTREEITEM m_tmpItem;
	if(pos == -1) pos = 3 + weekday;
	CString title = lpszTitle;
	if(!HasCreate[pos])
	{
		curTreeItem.hParent = NULL;
		curTreeItem.hInsertAfter = TVI_LAST;
		curTreeItem.item.iImage = 0;
		curTreeItem.item.iSelectedImage = 0;
		curTreeItem.item.pszText = strParents[pos].GetBuffer(strParents[pos].GetLength());
		curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
		m_hisItem[iCurNewsItem][pos] = GetTitleTree(iCurNewsItem).InsertItem(&curTreeItem);
		HasCreate[pos] = TRUE;
	}
	curTreeItem.hParent = m_hisItem[iCurNewsItem][pos];
	curTreeItem.hInsertAfter = TVI_LAST;
	curTreeItem.item.iImage = 1;
	curTreeItem.item.iSelectedImage = 1;
	curTreeItem.item.pszText = title.GetBuffer(title.GetLength());
	curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
	m_tmpItem = GetTitleTree(iCurNewsItem).InsertItem(&curTreeItem);
	if(pos == 3 + weekday)
		GetTitleTree(iCurNewsItem).Expand(m_hisItem[iCurNewsItem][pos],TVE_EXPAND);
}

BOOL CContainView::InitTitleTree()
{
	int m_iHistoryTime;
	if(m_SaveNewsChk == 0) m_iHistoryTime = m_SaveDays;
	else if(m_SaveNewsChk == 1) m_iHistoryTime = 0;
	else m_iHistoryTime = -1;
	if(m_iHistoryTime >= 0)
	{
		if(!DeleteHistoryNews(m_iHistoryTime))
			return FALSE;
	}

	CTime curTime,hisTime;
	CTimeSpan ts;
	int sepday,i;
	for(i = 0; i < 11; i++) HasCreate[i] = FALSE;
	CNewsContent item(&m_ContentDb);
	try
	{
		CString sql;
		sql.Format(_T("SELECT * FROM list%d  WHERE col3 <= %s ORDER BY col3"),iCurSel,
			(m_CurDate+1).Format(_T("#%m/%d/%Y#")));
		item.Open(dbOpenDynaset,sql,0);
		
		while(!item.IsEOF())
		{
			curTime = CTime(m_CurDate.GetYear(),m_CurDate.GetMonth(),m_CurDate.GetDay(),0,0,0);
			hisTime = CTime(item.m_today.GetYear(),item.m_today.GetMonth(),item.m_today.GetDay(),0,0,0);
			ts = curTime - hisTime;
			sepday = ts.GetDays();
			if(sepday == 0) i = weekday + 3;
			else if(sepday >= weekday)
			{
				sepday = sepday - weekday;
				i = 3 - sepday/7;
				if(i<0)	i=0;
			}
			else if(sepday < weekday)
				i = weekday - sepday + 3;
			AddTreeItem(iCurSel,item.m_title,i);
			item.MoveNext();
		}
		item.Close();

		i = 3 + weekday;
		if(!HasCreate[i])
		{
			curTreeItem.hParent = NULL;
			curTreeItem.hInsertAfter = TVI_LAST;
			curTreeItem.item.iImage = 0;
			curTreeItem.item.iSelectedImage = 0;
			curTreeItem.item.pszText = strParents[i].GetBuffer(strParents[i].GetLength());
			curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
			m_hisItem[iCurSel][i] = GetTitleTree(iCurSel).InsertItem(&curTreeItem);
			HasCreate[i] = TRUE;
		}

		HasInit[iCurSel] = TRUE;
		return TRUE;
	}
	catch(CDaoException *ex)
	{
		if(item.IsOpen()) item.Close();
		ex->Delete();

		return FALSE;
	}
}

BOOL CContainView::OnCateogryChanged(LPCTSTR lpszTitle, HICON hIcon)
{
	BOOL m_bRtn = TRUE;
	m_Caption.UpdateCaption(lpszTitle,hIcon);

	if(!HasInit[iCurSel]) m_bRtn = InitTitleTree();

	GetTitleTree(iCurShowItem).ShowWindow(SW_HIDE);
	iCurShowItem = iCurSel;
	GetTitleTree(iCurSel).ShowWindow(SW_SHOW);

	return m_bRtn;
}

void CContainView::ShowCaptButton()
{
	m_bViewList = !m_bViewList;
	if(m_bViewList)
		m_wndSplitter.ShowColumn();
	else
		m_wndSplitter.HideColumn(0);
}

BOOL CContainView::CanExport()
{
	BOOL m_bEnable;
	if(m_bViewList)
	{
		CTitleView *pView = (CTitleView *)m_wndSplitter.GetPane(0,0);
		ASSERT(pView);
		m_bEnable = pView->CanExport();
	}
	else
		m_bEnable = GetStockReferView()->CanExport();

	return m_bEnable;
}

void CContainView::DeleteOption()
{
	CTitleView *pView = (CTitleView*)m_wndSplitter.GetPane(0,0);
	pView->DeleteOption(&m_ContentDb,strToday);
}

BOOL CContainView::CanDeleteOption()
{
	if(m_bViewList)
		return ((CTitleView*)m_wndSplitter.GetPane(0,0))->CanDeleteOption();
	else
		return FALSE;
}

BOOL CContainView::AcceptBody(int iCurItem, LPCTSTR lpszBody)
{
	CString stoday,title,tofind,body;
	int i;
	
	body = lpszBody;
	i = body.Find(_T("\n"));
	if(i == -1) return FALSE;
	stoday = body.Left(i);
	body = body.Mid(i + 1);
	i = body.Find(_T("\n"));
	if(i == 0) return FALSE;
	title = body.Left(i);
	body = body.Mid(i + 1);
	body.Replace(_T("|"),_T("\7c"));
	
	CNewsContent item(&m_ContentDb);
	try
	{
		CString sql;
		sql.Format(_T("SELECT * FROM list%d ORDER BY col3"),iCurItem);
		item.Open(dbOpenDynaset,sql,0);
		tofind.Format(_T("col1 = '%s'"),title);
		if(!item.FindFirst(tofind))
		{
			sql.Format(_T("INSERT INTO list%d(col1,col2,col3) VALUES('%s','%s',#%s#)"),
				iCurItem,title,body,stoday);
			item.m_pDatabase->Execute(sql);
			CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
			ASSERT(pFrame);
			CString str;
			str.Format(IDS_RECEIVE_NEWS,title);
			pFrame->SetPaneText(1,str);
			AddTreeItem(iCurItem,title);
			
			item.Close();
			
			return TRUE;
		}
		else
		{
			item.Close();
			
			return FALSE;
		}
	}
	catch(CDaoException *ex)
	{
		if(item.IsOpen()) item.Close();
		ex->Delete();
		
		return FALSE;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美你懂的| 日韩国产精品大片| 午夜精品福利久久久| 国产精品影视网| 欧美专区日韩专区| 欧美韩国一区二区| 老司机精品视频线观看86| av成人动漫在线观看| 日韩一级完整毛片| 亚洲高清三级视频| 99麻豆久久久国产精品免费| 日韩欧美亚洲国产精品字幕久久久| 中文字幕视频一区| 国产成人aaaa| 国产夜色精品一区二区av| 午夜av区久久| 在线观看av不卡| 最新国产精品久久精品| 国产成人免费视频网站| 精品黑人一区二区三区久久 | 91婷婷韩国欧美一区二区| 日韩免费观看2025年上映的电影 | 一区二区三区**美女毛片| 成人精品鲁一区一区二区| 精品国产乱码久久久久久蜜臀| 午夜电影网一区| 欧美区在线观看| 无码av免费一区二区三区试看 | 在线免费观看成人短视频| 国产精品久久久久三级| 国产99久久久国产精品免费看| 欧美成人官网二区| 日本强好片久久久久久aaa| 欧美日韩一二区| 亚洲 欧美综合在线网络| 欧美图区在线视频| 亚洲亚洲精品在线观看| 欧美日韩在线精品一区二区三区激情| 亚洲日本电影在线| 色狠狠av一区二区三区| 亚洲乱码日产精品bd| 日本韩国一区二区三区视频| 亚洲精品视频在线观看网站| 欧美在线视频日韩| 日韩电影在线观看电影| 精品久久人人做人人爽| 国产成人精品三级麻豆| 国产精品久久久久久亚洲伦| 99久久777色| 亚洲国产一区视频| 91精品国产色综合久久久蜜香臀| 视频在线观看一区| 欧美精品一区二区久久久| 国产成人在线视频网址| 亚洲欧美aⅴ...| 欧美揉bbbbb揉bbbbb| 久久国产精品99久久人人澡| 国产亚洲欧美一级| 97久久超碰国产精品电影| 亚洲综合一二区| 欧美成人a视频| www.激情成人| 图片区小说区区亚洲影院| 日韩美一区二区三区| 国产高清成人在线| 亚洲综合在线视频| 欧美成人激情免费网| 成人av电影免费在线播放| 亚洲aaa精品| 久久精品夜色噜噜亚洲aⅴ| 色狠狠综合天天综合综合| 奇米精品一区二区三区在线观看一| 精品动漫一区二区三区在线观看| 成人h动漫精品| 美洲天堂一区二卡三卡四卡视频| 国产精品每日更新| 日韩欧美中文字幕公布| zzijzzij亚洲日本少妇熟睡| 日韩高清一区二区| 国产精品白丝在线| 日韩一二三区不卡| 色婷婷香蕉在线一区二区| 久久福利资源站| 亚洲地区一二三色| 中文字幕日韩精品一区| 日韩欧美一级精品久久| 色噜噜狠狠色综合欧洲selulu| 精品一区二区国语对白| 夜色激情一区二区| 日本一区二区成人在线| 日韩一区二区三区四区五区六区| 成人动漫一区二区三区| 久久99精品国产91久久来源| 亚洲精品亚洲人成人网在线播放| 久久综合av免费| 欧美日韩精品是欧美日韩精品| 不卡的电视剧免费网站有什么| 日韩精品电影一区亚洲| 亚洲精品乱码久久久久久黑人 | 91精品欧美久久久久久动漫| 成人黄色免费短视频| 免费在线视频一区| 亚洲第一久久影院| 亚洲精品自拍动漫在线| 国产精品久久久久久久久快鸭| 欧美va亚洲va| 日韩午夜激情免费电影| 欧美精品一二三| 欧美在线免费视屏| 99视频热这里只有精品免费| 国产精品影视天天线| 精品亚洲国产成人av制服丝袜| 日韩精品国产欧美| 午夜精品视频在线观看| 一区二区三区欧美日| 亚洲日本成人在线观看| 亚洲欧洲精品一区二区三区不卡| 国产网红主播福利一区二区| 久久日韩粉嫩一区二区三区| 日韩欧美一级片| 精品久久国产97色综合| 日韩精品一区二区在线| 精品日韩一区二区三区免费视频| 91精品国产一区二区三区| 91精品国产色综合久久不卡蜜臀 | 精品中文字幕一区二区| 美女一区二区视频| 久久成人久久鬼色| 狠狠色狠狠色综合系列| 精品亚洲porn| 国产成人免费av在线| 成人黄色电影在线 | 欧美色国产精品| 欧美精选午夜久久久乱码6080| 欧美日韩免费在线视频| 欧美精三区欧美精三区| 91精品国模一区二区三区| 欧美一区二区三区性视频| 精品国产亚洲在线| 中文在线资源观看网站视频免费不卡| 亚洲国产精华液网站w| 亚洲欧美色一区| 视频一区中文字幕国产| 久久99精品国产麻豆婷婷洗澡| 国产精品一卡二| av动漫一区二区| 欧美日韩一本到| 久久精品在线观看| 亚洲免费观看在线观看| 三级久久三级久久久| 国产一区二区日韩精品| 99re热这里只有精品免费视频| 欧洲人成人精品| 欧美刺激午夜性久久久久久久| 欧美极品美女视频| 亚洲成人免费在线| 国产精品一区二区三区乱码| av激情综合网| 欧美一区二区视频免费观看| 久久精品免费在线观看| 亚洲最大成人综合| 国产自产视频一区二区三区| 99精品久久只有精品| 日韩欧美中文一区| 中文字幕亚洲精品在线观看| 日韩中文字幕亚洲一区二区va在线| 国产精品一级在线| 欧美日韩一级二级三级| 国产性天天综合网| 丝袜美腿亚洲一区二区图片| 成人自拍视频在线| 3d成人动漫网站| 国产精品久久久久天堂| 日本欧美久久久久免费播放网| 懂色av噜噜一区二区三区av| 欧美一区二区三区四区视频| ㊣最新国产の精品bt伙计久久| 青青草成人在线观看| 91精品91久久久中77777| 久久久久久久久岛国免费| 亚洲高清在线精品| 91麻豆6部合集magnet| 精品久久久久久久人人人人传媒| 一区二区三区蜜桃| 成人美女在线观看| 精品免费一区二区三区| 五月婷婷久久综合| 99这里只有久久精品视频| 国产亚洲va综合人人澡精品| 日韩电影免费一区| 国产综合色产在线精品| 美女尤物国产一区| 亚洲一区成人在线| 成人精品免费看| 亚洲精品一线二线三线| 亚洲成a人v欧美综合天堂下载| www.色精品| 国产精品福利电影一区二区三区四区| 日本v片在线高清不卡在线观看| 欧洲在线/亚洲|