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

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

?? tabbedmdisave.cpp

?? 一款最完整的工業組態軟源代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
	{
		// HDS_FULLDRAG is not set, so the contents aren't updated as they
		// drag the column header divider until they let up on the mouse.
		NMHEADER* headerInfo = (NMHEADER*)pnmh;
		if(	headerInfo && 
			headerInfo->pitem &&
			(headerInfo->pitem->mask & HDI_WIDTH) == HDI_WIDTH)
		{
			if(m_trackColumnIndex == headerInfo->iItem)
			{
				int columnRight = headerInfo->iItem + 1;
				// Find the first column to the right that isn't being hidden.
				while((columnRight < m_lastVisibleColumn) && !m_showColumn[columnRight])
				{
					++columnRight;
				}

				if(columnRight <= m_lastVisibleColumn)
				{
					int widthLeft = headerInfo->pitem->cxy;
					int widthRight = m_list.GetColumnWidth(columnRight);
					int newWidth = widthRight - (widthLeft - m_trackColumnWidth);
					if((widthLeft > eMinimumColumnWidth) && (newWidth > eMinimumColumnWidth))
					{
						// TODO: When making the right column bigger before the
						//  left column has gotten smaller, the scroll bars flash
						//  visible.  Do something to prevent that.
						m_list.SetColumnWidth(columnRight, newWidth);

						m_trackColumnWidth = widthLeft;
					}
					else
					{
						headerInfo->pitem->cxy = m_trackColumnWidth;
					}
				}
			}
		}
	}

	m_list.Invalidate();
	m_trackColumnIndex = -1;
	m_trackColumnWidth = 0;

	bHandled = FALSE;
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnHeaderItemChanging(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
	if((m_header.GetStyle() & HDS_FULLDRAG) == HDS_FULLDRAG)
	{
		// HDS_FULLDRAG is set, so the contents are updated as they
		// drag the column header divider.
		NMHEADER* headerInfo = (NMHEADER*)pnmh;
		if(	headerInfo && 
			headerInfo->pitem &&
			(headerInfo->pitem->mask & HDI_WIDTH) == HDI_WIDTH)
		{
			if(m_trackColumnIndex == headerInfo->iItem)
			{
				int columnRight = headerInfo->iItem + 1;
				// Find the first column to the right that isn't being hidden.
				while((columnRight < m_lastVisibleColumn) && !m_showColumn[columnRight])
				{
					++columnRight;
				}

				if(columnRight <= m_lastVisibleColumn)
				{
					int widthLeft = headerInfo->pitem->cxy;
					int widthRight = m_list.GetColumnWidth(columnRight);
					int newWidth = widthRight - (widthLeft - m_trackColumnWidth);
					if((widthLeft > eMinimumColumnWidth) && (newWidth > eMinimumColumnWidth))
					{
						// TODO: When making the right column bigger before the
						//  left column has gotten smaller, the scroll bars flash
						//  visible.  Do something to prevent that.
						m_list.SetColumnWidth(columnRight, newWidth);

						m_trackColumnWidth = widthLeft;
					}
					else
					{
						// Don't allow the change
						bHandled = TRUE;
						return TRUE;
					}
				}
			}
		}
	}
	bHandled = FALSE;
	return 0;
}

LRESULT CSaveModifiedItemsDialog::OnHeaderDividerDoubleClick(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& bHandled)
{
	// TODO: Deal with this (and with Ctrl + NumPad+)
	bHandled = FALSE;
	return 0;
}

// CDialogResize overrides
void CSaveModifiedItemsDialog::DlgResize_UpdateLayout(int cxWidth, int cyHeight)
{
	//m_list.SetRedraw(FALSE);
	resizeClass::DlgResize_UpdateLayout(cxWidth, cyHeight);
	if(m_list.IsWindow())
	{
		// Adjust width of the description column to account for resizing the dialog
		CRect rcList;
		m_list.GetClientRect(&rcList);

		int headerCount = m_header.GetItemCount();
		int columnWidths = 0;
		for(int i=0; i<headerCount; ++i)
		{
			columnWidths += m_list.GetColumnWidth(i);
		}

		int difference = (rcList.Width() - columnWidths);
		if(difference != 0)
		{
			// Make up the difference by resizing the description column (if its visible).
			// If the description column isn't visible, make up the difference with the name column.
			int columnIndexToMakeUpDifference = eColumn_Description;
			if(m_showColumn[eColumn_Description])
			{
				columnIndexToMakeUpDifference = eColumn_Description;
			}
			else
			{
				columnIndexToMakeUpDifference = eColumn_Name;
			}

			int columnWidth = m_list.GetColumnWidth(columnIndexToMakeUpDifference);
			columnWidth += difference;
			if(columnWidth > eMinimumColumnWidth)
			{
				m_list.SetColumnWidth(columnIndexToMakeUpDifference, columnWidth);
			}
			else
			{
				m_list.SetColumnWidth(columnIndexToMakeUpDifference, eMinimumColumnWidth);
			}

			// TODO: When resizing the dialog smaller, the scroll bars
			//  flash visible.  Do something about that.
		}
	}
	//m_list.SetRedraw(TRUE);
	//m_list.Invalidate();
}

bool CSaveModifiedItemsDialog::ConstructDialogResource(void)
{
// For a smaller dialog:
//IDD_SAVEMODIFIEDFILES DIALOGEX 0, 0, 262, 114
//STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | 
//    WS_SYSMENU | WS_THICKFRAME
//EXSTYLE WS_EX_CONTROLPARENT
//CAPTION "Save Modified Files"
//FONT 8, "MS Shell Dlg", 400, 0, 0x1
//BEGIN
//    LTEXT           "Do you want to save changes to the modified files?",
//                    IDC_STATIC,7,7,180,8
//    CONTROL         "",IDC_LIST_FILES,"SysListView32",LVS_REPORT | 
//                    LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | 
//                    WS_TABSTOP,7,20,248,66
//    DEFPUSHBUTTON   "&Yes",IDYES,95,93,50,14
//    PUSHBUTTON      "&No",IDNO,150,93,50,14
//    PUSHBUTTON      "Cancel",IDCANCEL,205,93,50,14
//END

// The dialog template we'll use:
//IDD_SAVEMODIFIEDFILES DIALOGEX 0, 0, 300, 150
//STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | 
//    WS_SYSMENU | WS_THICKFRAME
//EXSTYLE WS_EX_CONTROLPARENT
//CAPTION "Save Modified Files"
//FONT 8, "MS Shell Dlg", 400, 0, 0x1
//BEGIN
//    LTEXT           "Do you want to save changes to the modified files?",
//                    IDC_STATIC,7,7,180,8
//    CONTROL         "",IDC_LIST_FILES,"SysListView32",LVS_REPORT | 
//                    LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | 
//                    WS_TABSTOP,7,20,286,102
//    DEFPUSHBUTTON   "&Yes",IDYES,133,129,50,14
//    PUSHBUTTON      "&No",IDNO,188,129,50,14
//    PUSHBUTTON      "Cancel",IDCANCEL,243,129,50,14
//END

	DynamicDialogItemSize itemSizeYes, itemSizeNo, itemSizeCancel;
	DWORD visibleStyle_Cancel = 0;
	if(m_canCancel)
	{
		itemSizeYes.Set(133,129,50,14);
		itemSizeNo.Set(188,129,50,14);
		itemSizeCancel.Set(243,129,50,14);

		visibleStyle_Cancel = WS_VISIBLE;
	}
	else
	{
		itemSizeYes.Set(188,129,50,14);
		itemSizeNo.Set(243,129,50,14);
		itemSizeCancel.Set(243,129,50,14);
	}

	bool success = m_dynamicDialogTemplate.Create(
		300, 150,
		(WS_POPUP | WS_CAPTION | WS_CLIPCHILDREN | WS_SYSMENU | WS_THICKFRAME | DS_3DLOOK | DS_SETFONT),
		WS_EX_CONTROLPARENT,
		L"Save Modified Items", L"MS Shell Dlg", 8);

	if(success)
	{
		// Header text
		m_dynamicDialogTemplate.AddStaticControl(
			(WS_CHILD | WS_VISIBLE | WS_GROUP | SS_LEFT), 0,
			7,7,180,8, (WORD)IDC_STATIC, L"Do you want to save changes to these modified items?");

		// List of items
		m_dynamicDialogTemplate.AddControl(
			(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER |
			LVS_REPORT | LVS_ALIGNLEFT | LVS_NOSORTHEADER), 0,
			7,20,286,102, _IDC_LIST, L"", L"SysListView32");

		// Yes, No, Cancel buttons
		m_dynamicDialogTemplate.AddButtonControl(
			(WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON), 0,
			itemSizeYes, IDYES, L"&Yes");
		m_dynamicDialogTemplate.AddButtonControl(
			(WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON), 0,
			itemSizeNo, IDNO, L"&No");
		m_dynamicDialogTemplate.AddButtonControl(
			(WS_CHILD | visibleStyle_Cancel | WS_TABSTOP | BS_PUSHBUTTON), 0,
			itemSizeCancel, IDCANCEL, L"Cancel");
	}

	return success;
}

bool CSaveModifiedItemsDialog::InitializeControls(void)
{
	//m_list = this->GetDlgItem(_IDC_LIST);
	m_list.SubclassWindow(this->GetDlgItem(_IDC_LIST));
	m_header = m_list.GetHeader();
	// For now, don't allow full drag or drag drop
	m_header.ModifyStyle((HDS_FULLDRAG | HDS_DRAGDROP), 0);

	// NOTE: See MSDN about custom drawing as to this message.
	//  This avoids getting the text clipped if we change the font
	//  during custom drawing.
	m_list.SendMessage(CCM_SETVERSION, 5, 0);

	// NOTE: Instead of using LVS_EX_CHECKBOXES,
	//  we implement the logic ourselves, because we want
	//  to allow for a partial/indeterminate checkbox.
	//m_list.SetExtendedListViewStyle(
	//	(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT),
	//	(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT));
	m_list.SetExtendedListViewStyle(LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);

	m_images.Create(
		::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON),
		ILC_COLOR32 | ILC_MASK, 4, 4);
	m_list.SetImageList(m_images, LVSIL_SMALL);
	this->CreateDefaultImages();

	m_stateImages.Create(
		::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON),
		ILC_COLOR32 | ILC_MASK, 4, 4);
	m_list.SetImageList(m_stateImages, LVSIL_STATE);
	this->CreateDefaultStateImages();

	this->AutoHideUnusedColumns();

	this->InitializeColumns();

	return true;
}

bool CSaveModifiedItemsDialog::InitializeValues(void)
{
	bool success = true;

	success = this->AddItems(m_modifiedList, 0);

	return success;
}

bool CSaveModifiedItemsDialog::InitializeColumns(void)
{
	CRect rcList;
	m_list.GetClientRect(&rcList);

	int nameWidth = 0;
	int descriptionWidth = 0;
	int lastModifiedWidth = 0;

	if(!m_showColumn[eColumn_Description] && !m_showColumn[eColumn_LastModified])
	{
		nameWidth = rcList.Width();
	}
	else if(!m_showColumn[eColumn_Description])
	{
		nameWidth = ::MulDiv(rcList.Width(), 75, 100);
		lastModifiedWidth = rcList.Width() - nameWidth;
	}
	else if(!m_showColumn[eColumn_LastModified])
	{
		nameWidth = ::MulDiv(rcList.Width(), 35, 100);
		descriptionWidth = rcList.Width() - nameWidth;
	}
	else
	{
		nameWidth = ::MulDiv(rcList.Width(), 30, 100);
		descriptionWidth = ::MulDiv(rcList.Width(), 45, 100);
		lastModifiedWidth = rcList.Width() - (nameWidth + descriptionWidth);
	}


	LVCOLUMN lvColumn = {0};
	lvColumn.mask = (LVCF_FMT | LVCF_WIDTH | LVCF_TEXT);
	lvColumn.fmt = LVCFMT_LEFT;
	lvColumn.cx = nameWidth;
	lvColumn.pszText = _T("Name");
	m_list.InsertColumn(eColumn_Name, &lvColumn);

	lvColumn.mask = (LVCF_FMT | LVCF_WIDTH | LVCF_TEXT);
	lvColumn.fmt = LVCFMT_LEFT;
	lvColumn.cx = descriptionWidth;
	lvColumn.pszText = _T("Description");
	m_list.InsertColumn(eColumn_Description, &lvColumn);

	lvColumn.mask = (LVCF_FMT | LVCF_WIDTH | LVCF_TEXT);
	lvColumn.fmt = LVCFMT_LEFT;
	lvColumn.cx = lastModifiedWidth;
	lvColumn.pszText = _T("Last Modified");
	m_list.InsertColumn(eColumn_LastModified, &lvColumn);

	return true;
}

int CSaveModifiedItemsDialog::AutoHideUnusedColumns(void)
{
	int columnsHidden = 0;
	int columnUseCount[eColumn_Count] = {0};

	this->FindUsedColumns(m_modifiedList, columnUseCount);
	for(int i=0; i<eColumn_Count; ++i)
	{
		if(columnUseCount[i] == 0)
		{
			++columnsHidden;
			this->HideColumn((ColumnIndex)i);
		}
	}

	return columnsHidden;
}

bool CSaveModifiedItemsDialog::FindUsedColumns(ITabbedMDIChildModifiedList* list, int columnUseCount[eColumn_Count])
{
	if(list == NULL)
	{
		return false;
	}

	bool success = true;

	long count = 0;
	list->get_Count(&count);
	for(long i=0; i<count; ++i)
	{
		CComPtr<ITabbedMDIChildModifiedItem> item;
		list->get_Item(i, &item);
		if(item)
		{
			if(m_showColumn[eColumn_Name])
			{
				CComBSTR displayName;
				item->get_DisplayName(&displayName);
				if(displayName.Length() > 0)
				{
					columnUseCount[eColumn_Name] += 1;
				}
			}
			if(m_showColumn[eColumn_Description])
			{
				CComBSTR description;
				item->get_Description(&description);
				if(description.Length() > 0)
				{
					columnUseCount[eColumn_Description] += 1;
				}
			}
			if(m_showColumn[eColumn_LastModified])
			{
				DATE lastModified = 0;
				item->get_LastModifiedUTC(&lastModified);
				if(lastModified != 0)
				{
					columnUseCount[eColumn_LastModified] += 1;
				}
			}

			CComPtr<ITabbedMDIChildModifiedList> subItems;
			item->get_SubItems(&subItems);
			if(subItems)
			{
				this->FindUsedColumns(subItems, columnUseCount);
			}
		}
	}

	return success;
}

bool CSaveModifiedItemsDialog::AddItems(ITabbedMDIChildModifiedList* list, int indent)
{
	if(list == NULL)
	{
		return false;
	}

	bool success = true;

	long count = 0;
	list->get_Count(&count);
	for(long i=0; i<count; ++i)
	{
		CComPtr<ITabbedMDIChildModifiedItem> item;
		list->get_Item(i, &item);
		if(item)
		{
			CComBSTR displayName, description;
			item->get_DisplayName(&displayName);
			item->get_Description(&description);

			DATE lastModified = 0;
			item->get_LastModifiedUTC(&lastModified);

			CString displayNameForItem(displayName);
			CString descriptionForItem(description);
			CString lastModifiedForItem = this->FormatLastModifiedDateString(lastModified);

			int imageIndex = 0;
			HICON hIcon = NULL;
			item->get_Icon(&hIcon);
			if(hIcon != NULL)
			{
				imageIndex = m_images.AddIcon(hIcon);
			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文国产| 日韩精品一区二区在线观看| 免费一级片91| 亚洲女人的天堂| 国产日韩视频一区二区三区| 欧美性猛交xxxxxx富婆| 懂色中文一区二区在线播放| 久久精品国产亚洲一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 久久精品亚洲精品国产欧美 | 26uuu亚洲| 欧美精品久久久久久久久老牛影院| www.亚洲精品| 国产精品乡下勾搭老头1| 日韩电影一区二区三区四区| 最新高清无码专区| 中文字幕av一区二区三区高 | 婷婷中文字幕综合| 亚洲男人天堂一区| 国产精品久久久久7777按摩| 国产亚洲va综合人人澡精品| 精品久久一区二区三区| 91精品在线一区二区| 欧美日韩免费观看一区三区| 欧美在线视频你懂得| 91免费观看国产| 97超碰欧美中文字幕| 欧美一区二区三区在线观看视频| 欧洲视频一区二区| 色噜噜狠狠色综合中国| 91麻豆免费看片| 91一区二区在线观看| 成人高清免费观看| 96av麻豆蜜桃一区二区| 不卡的av电影在线观看| 91麻豆免费在线观看| 色综合久久久久综合体| 色天天综合久久久久综合片| 在线影视一区二区三区| 在线视频观看一区| 欧美丰满高潮xxxx喷水动漫| 欧美另类z0zxhd电影| 欧美一区二区三区性视频| 777欧美精品| 日韩欧美综合一区| 2020国产成人综合网| 久久精品人人做人人综合| 中文字幕欧美区| 亚洲色图在线播放| 亚洲成人精品一区二区| 久久精品国产久精国产爱| 韩国成人在线视频| 波多野结衣91| 欧美写真视频网站| 91精品久久久久久蜜臀| 久久女同精品一区二区| 国产精品私人影院| 一区二区三区日韩欧美| 欧美aaaaaa午夜精品| 国产福利一区在线| 色哟哟国产精品免费观看| 在线电影国产精品| 久久久久久黄色| 亚洲精品视频观看| 麻豆91精品视频| 成人免费福利片| 欧美日韩一区二区在线观看视频| 日韩精品一区二区三区视频播放| 国产欧美视频在线观看| 亚洲一区二区三区四区在线观看| 免费看日韩a级影片| 不卡一区二区在线| 欧美肥大bbwbbw高潮| 国产精品网站在线| 午夜精品一区二区三区电影天堂| 国产麻豆91精品| 欧美色图一区二区三区| 精品国产百合女同互慰| 亚洲男同性恋视频| 精品亚洲国内自在自线福利| 色综合久久久久久久久| 精品国产sm最大网站| 一区二区三区四区高清精品免费观看 | 一区二区三区高清在线| 精品一二三四在线| 欧美国产一区视频在线观看| 亚洲一区视频在线| 国产一区二区三区四区五区美女| 色综合天天在线| 欧美一级艳片视频免费观看| 国产精品成人网| 精品在线播放午夜| 欧美三区在线视频| 中文字幕久久午夜不卡| 日本中文字幕一区| 日本道色综合久久| 欧美国产日韩一二三区| 美女视频一区二区三区| 在线视频你懂得一区| 国产精品美女www爽爽爽| 麻豆久久久久久| 欧美麻豆精品久久久久久| 亚洲欧美日韩电影| av在线不卡免费看| 国产亚洲va综合人人澡精品 | 91污片在线观看| 久久久蜜臀国产一区二区| 午夜av电影一区| 在线观看不卡视频| 亚洲天堂免费看| 风间由美一区二区av101| 久久影视一区二区| 另类中文字幕网| 91麻豆精品国产自产在线观看一区| 亚洲少妇最新在线视频| 成人av在线网| 中文字幕av一区二区三区免费看| 国产麻豆精品久久一二三| 精品欧美黑人一区二区三区| 日韩成人一级片| 制服丝袜日韩国产| 日本vs亚洲vs韩国一区三区| 欧美综合在线视频| 亚洲日穴在线视频| 色综合久久综合网97色综合| 国产精品久久久久久久久免费樱桃 | 日日夜夜一区二区| 欧美日韩一级视频| 亚洲1区2区3区4区| 欧美精品久久99久久在免费线 | 香蕉成人伊视频在线观看| 日本精品一区二区三区四区的功能| 综合在线观看色| 91免费看视频| 亚洲午夜影视影院在线观看| 在线看国产一区二区| 亚洲香蕉伊在人在线观| 欧美性做爰猛烈叫床潮| 午夜精品免费在线| 欧美电影免费提供在线观看| 久久国产精品72免费观看| 久久新电视剧免费观看| 粉嫩一区二区三区性色av| 国产精品理论片在线观看| av动漫一区二区| 一区二区成人在线视频| 欧美精品乱码久久久久久按摩| 91免费国产在线| 亚洲激情av在线| 欧美精品久久一区| 国产中文字幕一区| 欧美韩日一区二区三区| 99精品久久只有精品| 亚洲成av人片一区二区梦乃| 欧美一区二区三区在线电影| 国产在线一区观看| 国产精品午夜在线| 欧美色图天堂网| 久久精品国产秦先生| 国产精品久久久久久久久晋中| 色综合色综合色综合| 日日噜噜夜夜狠狠视频欧美人 | 国产一区二区三区精品欧美日韩一区二区三区 | 一本一道久久a久久精品| 亚洲一区欧美一区| 精品国产一区二区三区不卡| 国产精品亚洲午夜一区二区三区| 亚洲色图制服丝袜| 日韩三级精品电影久久久 | 777午夜精品视频在线播放| 国产麻豆一精品一av一免费 | 久久久国产一区二区三区四区小说| 成人精品视频一区| 天天影视涩香欲综合网| 国产欧美中文在线| 欧美区一区二区三区| 国产成人免费在线| 亚洲国产精品久久人人爱蜜臀| 精品成人a区在线观看| 色吧成人激情小说| 国产激情视频一区二区在线观看| 亚洲福利国产精品| 国产欧美精品日韩区二区麻豆天美| 欧美三级三级三级| 成人免费高清视频| 久久精品国内一区二区三区| 一区二区在线观看视频| 久久久精品免费免费| 这里只有精品视频在线观看| 97se亚洲国产综合自在线| 国产一区二区导航在线播放| 亚洲福利视频三区| 亚洲视频综合在线| 国产日韩精品一区二区三区| 欧美一区二区福利视频| 91年精品国产| 成人国产电影网| 国产美女久久久久| 日本女人一区二区三区| 夜夜嗨av一区二区三区网页 |