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

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

?? tabbedmdisave.cpp

?? 一款最完整的工業組態軟源代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
		// Remove ourselves from the old parent (?)
		// (doing so would mess up the current InsertList)
		//long index = -1;
		//m_parentList->get_Index(this, &index);
		//if(index >= 0)
		//{
		//	m_parentList->Remove(index);
		//}
	}

	m_parentList = parentList;
	return S_OK;
}

STDMETHODIMP CTabbedMDIChildModifiedItem::get_SubItems(
	ITabbedMDIChildModifiedList** subItems)
{
	// The first time they ask for the sub items, we'll create it.
	HRESULT hr = S_OK;

	if(m_subItems == NULL)
	{
		CComObject<CTabbedMDIChildModifiedList>* newSubItems = NULL;
		hr = CComObject<CTabbedMDIChildModifiedList>::CreateInstance(&newSubItems);
		if(newSubItems != NULL)
		{
			newSubItems->AddRef();

			newSubItems->putref_ParentItem(this);

			m_subItems = newSubItems;

			newSubItems->Release();
		}
	}

	return m_subItems.CopyTo(subItems);
}

STDMETHODIMP CTabbedMDIChildModifiedItem::CopyTo(
	ITabbedMDIChildModifiedItem* destination)
{
	if(destination == NULL)
	{
		return E_INVALIDARG;
	}

	destination->put_Window(m_window);
	destination->put_Name(m_name);
	destination->put_DisplayName(m_displayName);
	destination->put_Description(m_description);
	destination->put_LastModifiedUTC(m_lastModified);
	destination->put_Icon(m_icon);
	destination->putref_UserData(m_userData);

	// The destination keeps its current parent
	//destination->putref_ParentList(m_parentList);

	CComPtr<ITabbedMDIChildModifiedList> subItems;
	destination->get_SubItems(&subItems);
	if(subItems)
	{
		subItems->Clear();

		if(m_subItems)
		{
			subItems->InsertList(-1, m_subItems);
		}
	}

	return S_OK;
}

// Methods not exposed over iterface

STDMETHODIMP CTabbedMDIChildModifiedItem::InitNew(HWND window,
	const wchar_t* name, const wchar_t* displayName, const wchar_t* description,
	DATE lastModified, HICON icon)
{
	this->put_Window(window);
	this->put_Name(name);
	this->put_DisplayName(displayName);
	this->put_Description(description);
	this->put_LastModifiedUTC(lastModified);
	this->put_Icon(icon);

	return S_OK;
}


/////////////////////////////////////////////////////////////////////////////
// Global functions
HRESULT CreateTabbedMDIChildModifiedList(ITabbedMDIChildModifiedList** list)
{
	HRESULT hr = E_NOINTERFACE;

	CComObject<CTabbedMDIChildModifiedList>* newItemList = NULL;
	hr = CComObject<CTabbedMDIChildModifiedList>::CreateInstance(&newItemList);
	if(newItemList != NULL)
	{
		hr = newItemList->QueryInterface(list);
	}

	return hr;
}

HRESULT CreateTabbedMDIChildModifiedItem(HWND window,
	const wchar_t* name, const wchar_t* displayName, const wchar_t* description,
	DATE lastModified, HICON icon,
	ITabbedMDIChildModifiedItem** item)
{
	HRESULT hr = E_NOINTERFACE;

	CComObject<CTabbedMDIChildModifiedItem>* newItem = NULL;
	hr = CComObject<CTabbedMDIChildModifiedItem>::CreateInstance(&newItem);
	if(newItem != NULL)
	{
		newItem->AddRef();

		hr = newItem->InitNew(window, name, displayName, description, lastModified, icon);
		if(SUCCEEDED(hr))
		{
			hr = newItem->QueryInterface(item);
		}

		newItem->Release();
	}

	return hr;
}

HRESULT CreateEmptyTabbedMDIChildModifiedItem(ITabbedMDIChildModifiedItem** item)
{
	HRESULT hr = E_NOINTERFACE;

	CComObject<CTabbedMDIChildModifiedItem>* newItem = NULL;
	hr = CComObject<CTabbedMDIChildModifiedItem>::CreateInstance(&newItem);
	if(newItem != NULL)
	{
		hr = newItem->QueryInterface(item);
	}

	return hr;
}

/////////////////////////////////////////////////////////////////////////////
// CSaveModifiedItemsDialog
#include "commctrl.h"

CSaveModifiedItemsDialog::CSaveModifiedItemsDialog(ITabbedMDIChildModifiedList* list, bool canCancel) :
	m_modifiedList(list),
	m_canCancel(canCancel),
	m_haveAtLeastOneModifiedDate(false),
	m_list(this, 1),
	m_dialogIcon(NULL),
	m_imageUnchecked(-1),
	m_imageChecked(-1),
	m_imageIndeterminate(-1),
	m_trackColumnWidth(0),
	m_trackColumnIndex(-1),
	m_lastVisibleColumn(eColumn_Last)
{
	for(int i=0; i<eColumn_Count; ++i)
	{
		m_showColumn[i] = true;
	}

	this->ConstructDialogResource();
}

CSaveModifiedItemsDialog::~CSaveModifiedItemsDialog()
{
}

bool CSaveModifiedItemsDialog::HideColumn(ColumnIndex column)
{
	ATLASSERT(((!m_header.IsWindow()) || (m_header.IsWindow() && m_header.GetItemCount() < 1)) &&
		"Please call this before InitializeColumns().");
	if(column < 0 || column > eColumn_Last || column == eColumn_Name)
	{
		ATLASSERT(0 && "Invalid column index");
		return false;
	}

	m_showColumn[column] = false;

	if(column == m_lastVisibleColumn)
	{
		// Find the new last visible column
		while((m_lastVisibleColumn > 0) && !m_showColumn[m_lastVisibleColumn])
		{
			m_lastVisibleColumn = (ColumnIndex)((int)m_lastVisibleColumn-1);
		}
	}
	return true;
}

LRESULT CSaveModifiedItemsDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	CenterWindow(GetParent());

	this->InitializeControls();
	this->InitializeValues();

	// NOTE: We need to do this init after InitializeValues, in
	//  case the default size of any control changes
	this->DlgResize_Init(true, true, WS_THICKFRAME | WS_CLIPCHILDREN);

	return 1;		// Let the dialog manager set initial focus
}

LRESULT CSaveModifiedItemsDialog::OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
	LONG dwListStyle = m_list.GetWindowLong(GWL_STYLE);
	if((dwListStyle & LVS_SHAREIMAGELISTS) == LVS_SHAREIMAGELISTS)
	{
		// We're responsible for cleaning up the list view's image list
		if(!m_images.IsNull())
		{
			m_images.Destroy();
		}
	}

	if(!m_stateImages.IsNull())
	{
		m_stateImages.Destroy();
	}

	if(m_dialogIcon != NULL)
	{
		::DestroyIcon(m_dialogIcon);
		m_dialogIcon = NULL;
	}

	if(m_list.IsWindow())
	{
		m_list.UnsubclassWindow();
	}

	// Be sure others see the message (especially DefWindowProc)
	bHandled = FALSE;

	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnYes(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	if(m_modifiedList)
	{
		int count = m_list.GetItemCount();
		for(int i=0; i<count; ++i)
		{
			CheckState checkState = this->GetTristateCheckState(i);
			if(checkState == eCheckState_Unchecked)
			{
				CComQIPtr<ITabbedMDIChildModifiedItem> item(this->GetIUnknownForItem(i));
				if(item)
				{
					CComPtr<ITabbedMDIChildModifiedList> parentList;
					item->get_ParentList(&parentList);
					if(parentList)
					{
						long index = -1;
						parentList->get_Index(item, &index);
						if(index >= 0)
						{
							parentList->Remove(index);
						}
					}
				}
			}
		}
	}

	this->EndDialog(wID);
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnEndDialog(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	this->EndDialog(wID);
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnListViewInsertItem(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
	bHandled = TRUE;
	LPNMLISTVIEW pnmLV = (LPNMLISTVIEW)pnmh;
	if(pnmLV != NULL)
	{
		// It'd be nice if they set the lParam of NMLISTVIEW, but they don't.
		// Only iItem is valid
		//LPARAM lParam = pnmLV->lParam;
		//if(lParam != NULL)
		//{
		//	// Keep an AddRef around for the item, and Release in OnDeleteItem
		//	((IUnknown*)lParam)->AddRef();
		//}
		IUnknown* punk = this->GetIUnknownForItem(pnmLV->iItem);
		if(punk)
		{
			// Keep an AddRef around for the item, and Release in OnDeleteItem
			punk->AddRef();
		}
	}
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnListViewDeleteItem(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
	bHandled = TRUE;
	LPNMLISTVIEW pnmLV = (LPNMLISTVIEW)pnmh;
	if(pnmLV != NULL)
	{
		LPARAM lParam = pnmLV->lParam;
		if(lParam != NULL)
		{
			((IUnknown*)lParam)->Release();
			pnmLV->lParam = 0;
		}
	}
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnListViewKeyDownToToggleCheck(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
	NMLVKEYDOWN* keyDown = (NMLVKEYDOWN*)pnmh;
	if(keyDown && keyDown->wVKey == VK_SPACE)
	{
		int item = m_list.GetNextItem(-1, LVNI_FOCUSED);
		if(item != -1  && ::GetKeyState(VK_CONTROL) >= 0)
		{
			this->ToggleCheckState(item);
		}
	}
	bHandled = FALSE;
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnListViewClickToToggleCheck(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
	NMITEMACTIVATE* itemActivate = (NMITEMACTIVATE*)pnmh;
	if(itemActivate)
	{
		LVHITTESTINFO lvh = { 0 };
		lvh.pt = itemActivate->ptAction;
		if(m_list.HitTest(&lvh) != -1 && lvh.flags == LVHT_ONITEMSTATEICON && ::GetKeyState(VK_CONTROL) >= 0)
		{
			this->ToggleCheckState(lvh.iItem);
		}
	}
	bHandled = FALSE;
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnListViewEraseBackground(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	// Erase the background in OnListViewPaint
	return 1;
}

LRESULT CSaveModifiedItemsDialog::OnListViewPaint(UINT uMsg, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	if(wParam != NULL)
	{
		CMemDC memdc((HDC)wParam, NULL);

		//memdc.FillSolidRect(&memdc.m_rc, ::GetSysColor(COLOR_WINDOW));
		m_list.DefWindowProc( WM_ERASEBKGND, (WPARAM)memdc.m_hDC, 0);
		m_list.DefWindowProc( uMsg, (WPARAM)memdc.m_hDC, 0);

		if(m_header.IsWindow())
		{
			m_header.SendMessage(WM_PAINT, (WPARAM)memdc.m_hDC, 0);
			m_header.ValidateRect(&memdc.m_rc);
		}
	}
	else
	{
		CPaintDC dc(m_list);
		CMemDC memdc(dc.m_hDC, &dc.m_ps.rcPaint);

		//memdc.FillSolidRect(&dc.m_ps.rcPaint, ::GetSysColor(COLOR_WINDOW));
		m_list.DefWindowProc( WM_ERASEBKGND, (WPARAM)memdc.m_hDC, 0);
		m_list.DefWindowProc( uMsg, (WPARAM)memdc.m_hDC, 0);

		if(m_header.IsWindow())
		{
			m_header.SendMessage(WM_PAINT, (WPARAM)memdc.m_hDC, 0);
			m_header.ValidateRect(&dc.m_ps.rcPaint);
		}
	}
	return 0;
}

//LRESULT CSaveModifiedItemsDialog::OnHeaderPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
//{
//	if( wParam != NULL )
//	{
//		CMemDC memdc((HDC)wParam, NULL);

//		memdc.FillSolidRect(&memdc.m_rc, ::GetSysColor(COLOR_BTNFACE));
//		m_header.DefWindowProc( uMsg, (WPARAM)memdc.m_hDC, 0);
//	}
//	else
//	{
//		CPaintDC dc(m_header);
//		CMemDC memdc(dc.m_hDC, &dc.m_ps.rcPaint);

//		memdc.FillSolidRect(&dc.m_ps.rcPaint, ::GetSysColor(COLOR_BTNFACE));
//		m_header.DefWindowProc( uMsg, (WPARAM)memdc.m_hDC, 0);
//	}
//	return 0;
//}

LRESULT CSaveModifiedItemsDialog::OnHeaderBeginTrack(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
	NMHEADER* headerInfo = (NMHEADER*)pnmh;
	if(headerInfo)
	{
		m_trackColumnIndex = headerInfo->iItem;
		m_trackColumnWidth = m_list.GetColumnWidth(m_trackColumnIndex);

		if(	(m_trackColumnIndex < 0) ||
			(m_trackColumnIndex >= m_lastVisibleColumn) ||
			!m_showColumn[m_trackColumnIndex])
		{
			// Don't allow resizing on the last column,
			// or on a column we are hiding
			m_trackColumnIndex = -1;
			bHandled = TRUE;
			return TRUE;
		}
	}
	bHandled = FALSE;
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnHeaderTrack(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& bHandled)
{
	// NOTE: See http://support.microsoft.com/?kbid=183258
	//  "INFO: HDN_TRACK Notifications and Full Window Drag Style"
	//  We only get this if the HDS_FULLDRAG style is not set
	//  (in which case, we won't get HDN_ITEMCHANGING).

	// If HDS_FULLDRAG is NOT set, the list view won't show the contents
	// as the user is dragging the divider to resize a column.
	// So we won't update the column widths as they drag,
	// but will in "End Track" when they're done

	bHandled = FALSE;
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnHeaderEndTrack(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
	if((m_header.GetStyle() & HDS_FULLDRAG) == 0)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品在线三区| 91视频在线观看| 卡一卡二国产精品| 成年人午夜久久久| 欧美在线短视频| 欧美日韩高清影院| 欧美一区二区三区四区高清| 久久亚洲精品国产精品紫薇| 午夜精品在线视频一区| 麻豆91精品91久久久的内涵| 99国产精品国产精品毛片| 777精品伊人久久久久大香线蕉| 久久天天做天天爱综合色| 亚洲乱码国产乱码精品精可以看| 日本91福利区| 欧美日韩一区二区三区高清 | 欧美高清性hdvideosex| 精品国产一区二区在线观看| 亚洲自拍偷拍图区| 高清不卡在线观看| 国产清纯白嫩初高生在线观看91| 日韩中文字幕麻豆| 91麻豆123| 制服丝袜中文字幕一区| 亚洲成av人片| 欧美日本韩国一区| 亚洲777理论| 日韩情涩欧美日韩视频| 日韩av午夜在线观看| 欧洲av一区二区嗯嗯嗯啊| 18成人在线视频| 91浏览器入口在线观看| 亚洲日本va午夜在线影院| 丁香五精品蜜臀久久久久99网站| 欧美成人艳星乳罩| 国产一区二区按摩在线观看| 国产精品女同一区二区三区| 不卡的av电影| 亚洲激情综合网| 欧美午夜在线观看| 久久精品国产99国产精品| 日韩欧美成人激情| 国产最新精品免费| 尤物在线观看一区| 中文成人综合网| 成人欧美一区二区三区白人 | 国产香蕉久久精品综合网| 亚洲成人资源网| 欧美日韩一区在线观看| 国产精品资源网站| 日韩中文字幕不卡| 国产午夜亚洲精品不卡| 91原创在线视频| 激情综合五月天| 国产欧美日韩麻豆91| 欧美亚洲日本国产| 国产精品18久久久| 美女被吸乳得到大胸91| 婷婷六月综合网| 国产精品久久久久久亚洲伦| 欧美亚洲国产一区二区三区 | 久久久久国产精品麻豆ai换脸| 国产成人av电影在线播放| 亚洲动漫第一页| 亚洲国产精品成人久久综合一区| 欧美日韩大陆一区二区| 波多野结衣中文字幕一区 | 欧美特级限制片免费在线观看| 成人午夜精品一区二区三区| 美女久久久精品| 亚洲一区二区三区影院| 亚洲激情图片小说视频| 国产精品久久久久久一区二区三区| www激情久久| 精品久久久久香蕉网| 欧美日韩久久久久久| 欧美三区免费完整视频在线观看| av在线这里只有精品| av激情亚洲男人天堂| av中文字幕一区| 欧洲精品中文字幕| 欧美高清激情brazzers| 欧美疯狂做受xxxx富婆| 欧美三级中文字| 欧美日韩一区不卡| 日韩欧美中文一区| 久久影院午夜片一区| 久久九九影视网| 亚洲美腿欧美偷拍| 日本欧美一区二区三区乱码| 麻豆成人久久精品二区三区小说| 久草在线在线精品观看| 成人午夜激情在线| 欧美三级视频在线观看| 精品国产乱码91久久久久久网站| 国产日本欧洲亚洲| 亚洲一区二区三区四区五区黄| 蜜桃精品视频在线| 91丨porny丨蝌蚪视频| 91麻豆精品国产综合久久久久久 | 亚洲va国产va欧美va观看| 久久99在线观看| 欧美综合天天夜夜久久| 欧美精品久久一区二区三区 | 美日韩一区二区| 91香蕉国产在线观看软件| 精品国产乱码久久久久久久久| 国产精品美女一区二区在线观看| 午夜一区二区三区在线观看| 成人午夜免费电影| 91精品国产欧美一区二区成人| 国产亚洲成aⅴ人片在线观看| 天堂va蜜桃一区二区三区 | 亚洲天堂福利av| 成人一区二区视频| xf在线a精品一区二区视频网站| 中文字幕一区二区三区四区| 国内精品视频一区二区三区八戒| 欧美日免费三级在线| 亚洲男同性视频| 91香蕉视频mp4| 亚洲色图.com| 色综合久久中文综合久久97| 欧美国产成人在线| 成人激情文学综合网| 国产亚洲一区二区在线观看| 蓝色福利精品导航| 日韩精品一区二区在线观看| 五月天一区二区三区| 日韩欧美在线一区二区三区| 捆绑变态av一区二区三区| 欧美videos中文字幕| 国产乱码精品一区二区三区av | 国产福利视频一区二区三区| 日本一区二区不卡视频| 成人福利视频网站| 亚洲黄色av一区| 日韩女优视频免费观看| 日本怡春院一区二区| 久久精品人人做| 欧美日韩精品欧美日韩精品| 国产一区二区三区黄视频| 国产精品成人免费| 欧美日韩免费电影| 国产成人精品aa毛片| 亚洲国产aⅴ成人精品无吗| 欧美不卡在线视频| 色天使色偷偷av一区二区| 激情国产一区二区| 亚洲图片欧美视频| 久久婷婷色综合| 69精品人人人人| 欧美系列日韩一区| 97久久人人超碰| 国产很黄免费观看久久| 日韩激情中文字幕| 亚洲图片欧美综合| 18涩涩午夜精品.www| 26uuu久久综合| 日韩精品专区在线影院观看| 欧美性一二三区| 欧美亚洲精品一区| 欧美午夜精品理论片a级按摩| 成人精品视频一区二区三区| 黄页网站大全一区二区| 日日嗨av一区二区三区四区| 亚洲男帅同性gay1069| 亚洲欧洲www| 亚洲欧美另类小说| 亚洲男同性视频| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品日韩精品欧美在线| 国产精品久久久久桃色tv| 国产精品久久久久久久第一福利| 国产精品久久国产精麻豆99网站| 国产精品每日更新| 1000精品久久久久久久久| 亚洲观看高清完整版在线观看 | 一本久久综合亚洲鲁鲁五月天| 91小视频免费观看| 欧美日韩国产中文| 精品福利一二区| 国产精品久久午夜| 三级不卡在线观看| 成人一区二区三区视频在线观看 | 亚洲免费看黄网站| 久久激情五月激情| 91视频在线观看| 欧美一区二区福利在线| 国产精品久久99| 久久国内精品自在自线400部| 成人天堂资源www在线| 91精品国产一区二区三区香蕉| 国产亚洲美州欧州综合国| 一区二区三区中文免费| 国产不卡视频在线观看| 欧美美女喷水视频| 国产精品乱码一区二三区小蝌蚪| 午夜精彩视频在线观看不卡| 大陆成人av片|