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

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

?? gridcontrol.h

?? 圖像處理的壓縮算法
?? H
?? 第 1 頁 / 共 2 頁
字號:
	
	int	toggleCheck(int nVal)
	{
		switch(nVal)
		{
		case flexChecked:
			return flexUnchecked;
		case flexUnchecked:
			return flexChecked;
		case flexTSChecked:
			return flexTSUnchecked;
		case flexTSUnchecked:
			return flexTSChecked;
		}
		ASSERT(FALSE);
		return flexTSGrayed;
	}
	void resizeAllCols(int nExtraPixcels = 8)
	{
		bool bAllColSameWidth = false;
		int nExtra = PixelsToTwips(nExtraPixcels);
		m_flx.AutoSize(0, m_flx.Cols - 1, bAllColSameWidth, nExtra);
	}
	bool is_WindowJapanese()
	{
		int nCharSet;
		string str = get_system_font_name(GSFI_TYPE_DEFAULT, &nCharSet);
		if(SHIFTJIS_CHARSET == nCharSet)
			return true;
		
		return false;
	}
public:	
	virtual string GetRuntimeClass()
	{
		return "GridControl";
	}
	void SetFont()
	{
		//---- CPY v7.5699 QA70-5000 9/19/03 GET_WINDOW_MENU_FONT 
		/*
		//---- we try to set the grid to use same font as dialog, this is needed to support
		// Japanese etc.
		if(is_win2k(false) && is_WindowJapanese())
			m_flx.FontName = get_system_font_name(SYSTEM_FONT); //"俵俽 柧挬"; // somehow setting to dlg font still won't work
		else
			m_flx.FontName = FontName();
		
		m_flx.FontSize = FontSize();
		//----
		*/
		// temp code, need clean up later, some codes need to goto base class
		if(is_WindowJapanese())
		{
			int nFontSize;
			m_flx.FontName = GetFontName(ORIGIN_MENU_FONT,&nFontSize);
			if(nFontSize < 0) // convert to pt
			{
				double vv = - PixelsToTwips(nFontSize);
				vv = vv * 72.0 / 1440.0;
				nFontSize = 0.5 + vv;
			}
			
			m_flx.FontSize = nFontSize;
		}
		else
		{
			m_flx.FontName = FontName();
			m_flx.FontSize = FontSize();
		}
		//---- end CPY QA70-5000 9/19/03 
		m_nFontSize = m_flx.CellFontSize;
		
		m_nRowHeight= m_flx.RowHeight(0);
	}	
	virtual void ClearAll() 
	{
		m_flx.Rows = m_flx.FixedRows;
	}
	//OnAfterEdit call base method first 
	virtual void OnAfterEdit(int nRow, int nCol) 
	{
		_DBINT("OnAfterEdit bToggleCheck =", m_bMouseDownToggleCheck);
		
		m_bMouseDownToggleCheck = false;//---- CPY 5/20/03 CHECK_BOX_CLICK_OUTSIDE_CHECK_TO_TOGGLE
	}
	
	// OnBeforeMouseDown call base class method last	
	void OnBeforeMouseDown(short nButton, short nShift, float X, float Y, BOOL* pCancel)
	{
		int iRow = m_flx.MouseRow;
		int iCol = m_flx.MouseCol;
		if(iRow < 0 || iCol < 0)
		{
			*pCancel = TRUE;
			return;
		}
		//---- CPY 5/20/03 CHECK_BOX_CLICK_OUTSIDE_CHECK_TO_TOGGLE
		int nVal = m_flx.Cell(flexcpChecked, iRow, iCol);// cannot use COM in == test directly
		_DBINT("OnBeforeMouseDown bToggleCheck =", m_bMouseDownToggleCheck);
		if(m_bMouseDownToggleCheck && nVal != flexNoCheckbox)
		{
			m_flx.Cell(flexcpChecked, iRow, iCol) = toggleCheck(nVal);//bWasCheck? flexUnchecked : flexChecked;

			OnAfterEdit(iRow, iCol);
		}
		m_bMouseDownToggleCheck = true;
		//---- end CPY 5/20/03 CHECK_BOX_CLICK_OUTSIDE_CHECK_TO_TOGGLE
	}
	
	//nMaxColSizeFactor = 0 will not consider max col width
	// nMaxColSizeFactor = 2 will set each col no bigger then 1/2 the width of the control width
	void ResizeCols(int nMaxColSizeFactor = 0, int nExtraPixcels = 8)
	{
		int nMaxColWidth = 0;
		
		if(nMaxColSizeFactor)
		{
			RECT rect;
			GetWindowRect(rect);
			nMaxColWidth = PixelsToTwips(RECT_WIDTH(rect)/(double)nMaxColSizeFactor);
		}
		m_flx.ColWidthMax = nMaxColWidth;
		if(nMaxColWidth)
			m_flx.ColWidthMin = PixelsToTwips(5); // ,min width

		resizeAllCols(nExtraPixcels);
	}
	// min col by row height as a factor, max col by screen width as a divider
	void ResizeCols(double dbMinColRowFactor, double dbMaxColDivScreen, int nExtraPixcels = 8)
	{		
		m_flx.ColWidthMin = 0.5 + m_nRowHeight * dbMinColRowFactor;
		int nScreenW = PixelsToTwips(GetSystemMetrics(SM_CXSCREEN));
		m_flx.ColWidthMax = 0.5 + nScreenW /dbMaxColDivScreen;

		resizeAllCols(nExtraPixcels);
	}

	void RemoveSelection()
	{
		m_flx.Col = 0;
		m_flx.Row = -1;
	}
	
	int XTwipsToPixels(int nx)	{return TwipsToPixels(nx);}
	int YTwipsToPixels(int ny)	{return TwipsToPixels(ny, false);}

	void	GridToDlgOffsets(int& dx, int &dy)
	{
		RECT rectGrid;
		GetRect(rectGrid);
	
		dx = rectGrid.left;
		dy = rectGrid.top;
	}
	bool	GetCellRect(int iRow, int iCol, RECT& rect, bool bCvtToFrame = true, bool bCvtToScree = false)
	{
		if(!getCellRect(iRow, iCol, rect))
			return false;
	
		rect.left = XTwipsToPixels(rect.left);
		rect.top = 	YTwipsToPixels(rect.top);
		rect.right = XTwipsToPixels(rect.right);
		rect.bottom = YTwipsToPixels(rect.bottom);
		InflateRect(&rect, -m_nHaldGridLineWidth, -m_nHaldGridLineWidth);
		
		if(bCvtToFrame) // convert
		{
			int dx, dy;
			GridToDlgOffsets(dx, dy);
			OffsetRect(&rect, dx, dy);
		}
		if(bCvtToScree)
		{
			ClientToScreen(rect);
		}
		return true;
	}
	void GetGridSize(int& nx, int& ny)
	{
		int nCellH;
		ny = 0;
		nx = 0;
		for(int nRow = 0; nRow < m_flx.Rows; nRow++)
		{
			nCellH = m_flx.Cell(flexcpHeight, nRow);
			ny += nCellH;
		}
		ny = TwipsToPixels(ny);
		
		int nn = 0;
		for(int nCol = 0; nCol < m_flx.Cols; nCol++)
		{
			nn += m_flx.ColWidth(nCol); //flx.Cell(flexcpWidth, 0, nCol);
		}
			
		nx = TwipsToPixels(nn);
		// gain 1 more pixels
		nx++;
		ny++;
	}
	void ClientToScreen(int &nx, int &ny, bool bCvtToFrame = true)
	{
		RECT rect;
		rect.left = rect.right = nx;
		rect.top = rect.bottom = ny;
		if(bCvtToFrame)
		{
			int dx, dy;
			GridToDlgOffsets(dx, dy);
			OffsetRect(&rect, dx, dy);
		}
		ClientToScreen(rect);
		nx = rect.left;
		ny = rect.top;
	}
	void ScreenToClient(int &nx, int &ny, bool bCvtToTwips = true, bool bCvtToFrame = true)
	{
		RECT rect;
		rect.left = rect.right = nx;
		rect.top = rect.bottom = ny;
		ScreenToClient(rect);
		if(bCvtToFrame)
		{
			int dx, dy;
			GridToDlgOffsets(dx, dy);
			OffsetRect(&rect, -dx, -dy);
		}		
		nx = rect.left;
		ny = rect.top;
		if(bCvtToTwips)
		{
			nx = PixelsToTwips(nx);
			ny = PixelsToTwips(ny, false);
		}
	}
	// nx ny in Twips in clint coordinates
	virtual void GetHiddenCols(vector<byte>& vbCols)
	{
		vbCols.SetSize(0);
		for(int nCol = 0; nCol < m_flx.Cols; nCol++)
		{
			vbCols.Add(IsColHidden(nCol));
		}
	}
	virtual void SetHiddenCols(const vector<byte>& vbCols, bool bDefault = true)
	{
		for(int nCol = 0; nCol < m_flx.Cols; nCol++)
		{
			bool bHide = bDefault;
			if(nCol < vbCols.GetSize())
				bHide = vbCols[nCol];
			HideCol(nCol, bHide);
		}
	}
protected:
	Object		m_flx;
	int			m_nRowHeight;
	int 		m_nFontSize;
	int			m_nHaldGridLineWidth;
};


// a vsFlexGrid that is used like a list control
class GridListControl : public GridControl
{
public:
	void Init(int nID, Dialog& dlg)
	{
		GridControl::Init(nID, dlg);
		m_flx.SelectionMode = flexSelectionByRow;
		m_flx.AllowSelection = false;
		//m_flx.ExplorerBar = flexExSortShow;
		m_flx.AllowUserResizing = flexResizeColumns;
	}
	// return false if no change, otherwise check if sel consistent, otherwise set to specified row/col
	bool CheckSelRow(int nRow, bool bOnlyInsideGrid = true)
	{
		if(bOnlyInsideGrid && nRow < 0)
			return false;
		
		if(m_flx.SelectionMode == flexSelectionListBox)
		{
			//--- CPY 8/19/03
			if(SHIFT_DOWN || CNTRL_DOWN)
				return false;
			//---
			int nNumSelected = m_flx.SelectedRows;

			for(int ii = 0; ii < nNumSelected; ii++)
			{
				if( nRow == m_flx.SelectedRow(ii) )
					return false;
			}
		}
		else
		{
			if(m_flx.Row == nRow)
				return false;
		}
		
		m_flx.Row = nRow;
		return true;
	}
	
	bool GetSelRows(vector<uint>& vnRows)
	{
		vnRows.SetSize(0);// empty first
		if(m_flx.SelectionMode == flexSelectionListBox)
		{
			int nNumSelected = m_flx.SelectedRows;
			if(nNumSelected > 0)
			{
				int nRow;
				for(int ii = 0; ii < nNumSelected; ii++)
				{
					nRow = m_flx.SelectedRow(ii);
					vnRows.Add(nRow);
				}
				return true;
			}
		}
		else
		{
			if(m_flx.Col >= 0)
			{
				int nSel = m_flx.Row;
				if(nSel >= m_flx.FixedRows)
				{
					vnRows.Add(nSel);
					return true;
				}
			}
		}
		return false;
	}
	// vn = [out] array of 1 = collapsed and 0 = open of all outline nodes
	// return -1 if not applicable, otherwise return number of branches
	int GetCollapsed(vector<byte>& vn)
	{
		if(m_flx.OutlineBar == flexOutlineBarNone)
			return -1;
		vn.SetSize(0);
		int nCounts = 0;
		for(int nRow = m_flx.FixedRows; nRow < m_flx.Rows; nRow++)
		{
			if(m_flx.IsSubtotal(nRow) )//&& m_flx.RowOutlineLevel(nRow) < 3)
			{
				nCounts++;
				int nCollapsed = m_flx.IsCollapsed(nRow);
				if(flexOutlineCollapsed == nCollapsed)
				{
					vn.Add(1);
				}
				else
					vn.Add(0);
			}
		}
		return nCounts;
	}
	bool SetCollapsed(const vector<byte>& vn)
	{
		if(m_flx.OutlineBar == flexOutlineBarNone)
			return false;
		int nn = 0;
		for(int nRow = m_flx.FixedRows; nRow < m_flx.Rows; nRow++)
		{
			if(m_flx.IsSubtotal(nRow))// && m_flx.RowOutlineLevel(nRow) < 3)
			{
				if(nn >= vn.GetSize())
					return false;
				
				int nCollapsed = vn[nn++]?flexOutlineCollapsed : flexOutlineSubtotals;//flexOutlineExpanded;
				m_flx.IsCollapsed(nRow) = nCollapsed;
			}
		}
		return true;
	}
protected:
	void SetAlternateRowColors()
	{
		m_flx.BackColorAlternate = RGB(0xF0,0xF0,0xF0);
	}
	bool GetSelItems(int nCol, vector<string>& vsItems)
	{
		vector<uint> vnRows;
		vsItems.SetSize(0);
		string strTemp;
		if(GetSelRows(vnRows))
		{
			for(int ii = 0; ii < vnRows.GetSize(); ii++)
			{
				strTemp = m_flx.Cell(flexcpText, vnRows[ii], nCol);
				vsItems.Add(strTemp);
			}
			return true;
		}
		return false;
	}
public:
	// return -1 if none selected, reutrn 1st sel Row if multiple
	int  GetSelectedRow()
	{
		vector<uint> vnRows;
		if(GetSelRows(vnRows))
			return vnRows[0];
		
		return -1;
	}
	void SelRow(int nRow, bool bSelLast = false) // -1 to sel last row
	{
		if(bSelLast)
			nRow = m_flx.Rows-1;
		
		m_flx.Row = nRow;
		
		if(nRow >= 0)
		{
			m_flx.ShowCell(nRow, 0);
		}
	}
	bool SelRows(const vector<int> nRows)
	{
		if(nRows.GetSize() == 1)
		{
			SelRow(nRows[0]);
			return true;
		}
		if(m_flx.SelectionMode != flexSelectionListBox)
			return false;
		m_flx.Row = -1;
		for(int ii = 0; ii < nRows.GetSize(); ii++)
			m_flx.IsSelected(nRows[ii]) = true;
		
		return true;
	}
	//virtual 
	string GetRuntimeClass()
	{
		return "GridListControl";
	}
	
private:

};


#endif //_GRID_CONTROL_H_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线综合视频| 粉嫩蜜臀av国产精品网站| 91香蕉视频在线| 亚洲三级免费电影| 欧美高清性hdvideosex| 无码av中文一区二区三区桃花岛| 欧美日韩国产色站一区二区三区| 五月婷婷激情综合网| 日韩一级成人av| 成人精品高清在线| 亚洲精品视频免费看| 欧美精品一二三| 国产一区二区在线看| 国产欧美一区二区三区在线老狼| 99久久久久免费精品国产| 亚洲综合色自拍一区| 精品久久人人做人人爱| 成人动漫一区二区三区| 亚洲午夜免费电影| 精品国产乱码久久久久久图片| 成人av在线电影| 亚洲成人激情社区| 久久久国际精品| 精品视频资源站| 国产成人夜色高潮福利影视| 亚洲一区二区美女| 久久精品一区四区| 欧美日韩国产综合一区二区三区| 精品亚洲成a人在线观看| 中文字幕在线一区| 欧美一区二区人人喊爽| 91女人视频在线观看| 老司机精品视频线观看86 | 国产精品一区二区91| 国产精品家庭影院| 日韩一区二区三区免费观看| 国产精品一二三区| 午夜精品视频一区| 国产精品第四页| 久久综合色8888| 欧美亚洲国产一区二区三区va| 国产成人啪午夜精品网站男同| 亚洲成a人v欧美综合天堂下载| 国产视频一区在线观看| 91精品久久久久久蜜臀| 成人福利在线看| 国产一区二区三区免费| 午夜视频一区在线观看| 中文字幕一区二| 久久久高清一区二区三区| 欧美精品一卡两卡| 日本精品一区二区三区四区的功能| 美国十次综合导航| 五月综合激情日本mⅴ| 亚洲精品成人少妇| 亚洲天堂久久久久久久| 久久久久久久久久久久电影| 欧美日韩一二三区| 欧美综合一区二区三区| 成人av第一页| 成人精品一区二区三区四区| 国产在线观看免费一区| 久久91精品久久久久久秒播| 五月天一区二区| 婷婷六月综合网| 日日摸夜夜添夜夜添精品视频| 亚洲一区二区视频| 亚洲激情图片qvod| 亚洲影院免费观看| 亚洲一区二区三区激情| 一区二区三区免费| 玉米视频成人免费看| 亚洲精品久久嫩草网站秘色| 亚洲免费观看视频| 一区二区三区精品| 亚洲在线观看免费| 日本在线不卡一区| 蜜桃一区二区三区在线| 黄一区二区三区| 国产一区二区影院| 国产不卡视频一区| 99这里都是精品| 在线精品视频一区二区三四| 欧美最猛性xxxxx直播| 欧美精品777| 日韩欧美国产不卡| 国产午夜精品一区二区三区四区| 国产亚洲精品中文字幕| 国产精品成人免费| 亚洲一区二区四区蜜桃| 日韩成人免费在线| 国模冰冰炮一区二区| 成人综合婷婷国产精品久久免费| 99在线精品观看| 欧美色窝79yyyycom| 在线不卡一区二区| 精品国产sm最大网站免费看 | 久久精品综合网| 中文字幕第一页久久| 一区二区三区精品在线| 午夜精品在线看| 国产一区二区三区免费播放| 不卡大黄网站免费看| 欧美三级三级三级爽爽爽| 欧美大片拔萝卜| 亚洲手机成人高清视频| 日韩不卡一二三区| 国产高清在线精品| 在线观看亚洲专区| 欧美精品一区二区久久久| 国产精品美女一区二区在线观看| 樱花草国产18久久久久| 久草中文综合在线| 色综合av在线| 久久美女艺术照精彩视频福利播放 | 国产乱国产乱300精品| 色综合久久综合| 精品人伦一区二区色婷婷| 亚洲精品视频在线观看网站| 激情综合网天天干| 欧美色综合网站| 国产精品久久久久一区| 日本v片在线高清不卡在线观看| 懂色av中文字幕一区二区三区| 欧美主播一区二区三区美女| 久久蜜桃av一区精品变态类天堂 | 91视频91自| 久久夜色精品国产欧美乱极品| 亚洲主播在线观看| 成人午夜电影网站| 日韩欧美三级在线| 亚洲国产精品一区二区久久| 成人综合在线网站| 精品91自产拍在线观看一区| 亚洲一区视频在线| 99精品国产91久久久久久| 欧美一区二区在线看| 亚洲欧美日韩精品久久久久| 国产一区二区伦理| 欧美一级高清片在线观看| 亚洲精品成a人| av网站免费线看精品| 久久综合资源网| 蜜桃视频在线一区| 欧美精品tushy高清| 亚洲国产另类av| 91九色最新地址| 亚洲丝袜精品丝袜在线| 成人一级片在线观看| 久久久国产综合精品女国产盗摄| 看电视剧不卡顿的网站| 7777精品伊人久久久大香线蕉超级流畅 | 欧美精品在线一区二区| 一区二区三区日韩精品视频| 99久久婷婷国产| 国产精品卡一卡二| 成人午夜av影视| 欧美激情在线一区二区| 国产成人av影院| 国产色产综合产在线视频| 狠狠网亚洲精品| 精品国产在天天线2019| 精品中文av资源站在线观看| 日韩欧美国产一区二区在线播放| 美女脱光内衣内裤视频久久影院| 91精品国产欧美一区二区| 日精品一区二区三区| 欧美一区国产二区| 精品亚洲aⅴ乱码一区二区三区| 日韩欧美国产wwwww| 国产中文一区二区三区| 精品成人在线观看| 国产v综合v亚洲欧| 国产精品久久777777| 色综合久久中文字幕综合网| 亚洲一区二区视频在线| 日韩一区二区在线看| 国产精品一区久久久久| 国产免费久久精品| www.爱久久.com| 亚洲一区二区三区激情| 日韩一区二区三区在线视频| 久久不见久久见免费视频7| 久久久99久久| 一本色道久久加勒比精品| 午夜伦理一区二区| 久久综合九色综合欧美亚洲| av不卡在线播放| 性欧美大战久久久久久久久| 日韩午夜在线播放| 成人黄色a**站在线观看| 亚洲摸摸操操av| 日韩欧美精品在线视频| kk眼镜猥琐国模调教系列一区二区| 亚洲免费在线观看视频| 日韩欧美自拍偷拍| 成人一级片网址| 午夜激情一区二区| 中文一区二区在线观看| 欧洲av一区二区嗯嗯嗯啊|