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

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

?? coloreditview.cpp

?? 檢測語法的Edit類
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			pDoc->m_text.Delete(m_selectStart, m_selectEnd-m_selectStart);
			m_caret = m_selectEnd = m_selectStart;
		} else if (m_caret >= 0 && pDoc->m_text.GetLength() > m_caret+1) {
			pDoc->m_text.Delete(m_caret, 1);
		}
		pDoc->SetModifiedFlag();
		pDoc->CheckPoint();
		CalcScrollSize();
		Invalidate();
		break;
	case VK_BACK:
		if (m_selectStart != m_selectEnd && m_selectStart >= 0) {
			pDoc->m_text.Delete(m_selectStart, m_selectEnd-m_selectStart);
			m_caret = m_selectEnd = m_selectStart;
		} else if (m_caret > 0) {
			m_caret -= 1;
			pDoc->m_text.Delete(m_caret, 1);
		}
		pDoc->SetModifiedFlag();
		pDoc->CheckPoint();
		CalcScrollSize();
		Invalidate();
		break;
	case VK_RETURN:
		pDoc->m_text.Insert(m_caret, _T('\n'));
		m_caret += 1;
		pDoc->SetModifiedFlag();
		pDoc->CheckPoint();
		CalcScrollSize();
		Invalidate();
		break;
	case VK_END:
		m_caret = pDoc->m_text.GetLength()-1;
		ScrollToCaret();
		break;
	case VK_HOME:
		m_caret = 0;
		ScrollToCaret();
		break;
	case VK_LEFT:
		if (m_caret > 0) {
			m_caret--;
			ScrollToCaret();
		}
		break;
	case VK_RIGHT:
		if (m_caret < pDoc->m_text.GetLength()-1) {
			m_caret++;
			ScrollToCaret();
		}
		break;
	case VK_UP:
		{
			long line = pDoc->Offset2Line(m_caret);
			long lineoffset = pDoc->GetLineOffset(line);
			long pos = m_caret - lineoffset;

			if (line > 0) {
				long prevLine = pDoc->GetLineOffset(line-1);
				long prevLineLen = pDoc->GetLine(line-1).GetLength();

				if (pos < prevLineLen) {
					m_caret = prevLine + pos;
				} else {
					m_caret = prevLine + prevLineLen;
				}

				ScrollToCaret();
			}
		}
		break;
	case VK_DOWN:
		{
			long line = pDoc->Offset2Line(m_caret);
			long lineoffset = pDoc->GetLineOffset(line);
			long pos = m_caret - lineoffset;
			long lineCount = pDoc->GetLineCount();

			if (line < lineCount-1) {
				long nextLine = pDoc->GetLineOffset(line+1);
				long nextLineLen = pDoc->GetLine(line+1).GetLength();

				if (pos < nextLineLen) {
					m_caret = nextLine + pos;
				} else {
					m_caret = nextLine + nextLineLen;
				}

				ScrollToCaret();
			}
		}
		break;
		break;
	default:
		CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);
	}
}

void CColorEditView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	CColorEditDoc*	pDoc = GetDocument();

	if (iswprint(nChar)) {
		pDoc->m_text.Insert(m_caret, nChar);
		m_caret += 1;
		pDoc->SetModifiedFlag();
		pDoc->CheckPoint();
		CalcScrollSize();
		Invalidate();
	} 
}

void CColorEditView::CalcScrollSize(CDC * pDC)
{
	if (pDC == NULL) {
		LOGFONT			lf;
		CPaintDC		dc(this);
		OnPrepareDC(&dc);
		m_font.GetLogFont(&lf);
		CFont* oldFont = dc.SelectObject(&m_font);
		m_scrollSize = GetScrollSize(&dc);
		CSize status = dc.SetWindowExt(m_scrollSize);
		ASSERT(status != CSize(0, 0));

		SetScrollSizes(MM_TEXT, m_scrollSize);
		dc.SelectObject(oldFont);

		ASSERT(m_scrollSize == GetTotalSize());
	} else {
		m_scrollSize = GetScrollSize(pDC);
		CSize status = pDC->SetWindowExt(m_scrollSize);
		ASSERT(status != CSize(0, 0));
		SetScrollSizes(MM_TEXT, m_scrollSize);

		ASSERT(m_scrollSize == GetTotalSize());
	}
}

long CColorEditView::CurrentPosition()
{
	return m_caret;
}


void CColorEditView::SetCurrentPosition(long position)
{
	CColorEditDoc* pDoc = GetDocument();
	if (position > 0 && position < pDoc->GetLength()) {
		m_caret = position;
		ScrollToCurrent();
	}
}

void CColorEditView::ScrollToCurrent()
{
	LOGFONT			lf;
	CPaintDC		dc(this);
	CRect			client;
	CPoint			scrollPos = GetScrollPosition();

	CColorEditDoc* pDoc = GetDocument();

	OnPrepareDC(&dc);

	m_font.GetLogFont(&lf);
	CFont* oldFont = dc.SelectObject(&m_font);

	GetClientRect(&client);

	client += scrollPos;
	CPoint caret = TextPosition2ScreenCoord(&dc, m_caret);
	long x = scrollPos.x;
	long y = scrollPos.y;

	if (caret.y > client.bottom) {
		y = caret.y-client.Height()/2;
	} else if (caret.y < client.top) {
		y = caret.y-client.Height()/2;
	}

	if (caret.x < client.left) {
		if (caret.x < client.Width()) {
			x = 0;
		} else {
			x = caret.x-client.Width()/2;
		}
	} else if (caret.x > client.right) {
		if (caret.x < client.Width()) {
			x = 0;
		} else {
			x = caret.x-client.Width()/2;
		}
	}

	dc.SelectObject(oldFont);

	ScrollToPosition(CPoint(x, y));

	Invalidate();
}

void CColorEditView::SetSelection(long start, long end)
{
	if (start < end) {
		m_selectStart = start;
		m_caret = m_selectEnd = end;
	} else {
		m_caret = m_selectStart = end;
		m_selectEnd = start;
	}
}

void CColorEditView::ScrollToCaret()
{
	LOGFONT			lf;
	CPaintDC		dc(this);
	CRect			client;
	CPoint			scrollPos = GetScrollPosition();

	CColorEditDoc* pDoc = GetDocument();

	OnPrepareDC(&dc);

	m_font.GetLogFont(&lf);
	CFont* oldFont = dc.SelectObject(&m_font);

	GetClientRect(&client);

	client += scrollPos;
	CPoint caret = TextPosition2ScreenCoord(&dc, m_caret);
	long x = scrollPos.x;
	long y = scrollPos.y;

	if (caret.y > client.bottom) {
		y = caret.y-client.Height()/2;
	} else if (caret.y < client.top) {
		y = caret.y-client.Height()/2;
	}

	if (caret.x < client.left) {
		if (caret.x < client.Width()) {
			x = 0;
		} else {
			x = caret.x-client.Width()/2;
		}
	} else if (caret.x > client.right) {
		if (caret.x < client.Width()) {
			x = 0;
		} else {
			x = caret.x-client.Width()/2;
		}
	}

	dc.SelectObject(oldFont);

	ScrollToPosition(CPoint(x, y));

	Invalidate();
}

void CColorEditView::ScrollToSelection()
{
	LOGFONT			lf;
	CPaintDC		dc(this);
	CRect			client;
	CPoint			scrollPos = GetScrollPosition();

	CColorEditDoc* pDoc = GetDocument();

	OnPrepareDC(&dc);

	m_font.GetLogFont(&lf);
	CFont* oldFont = dc.SelectObject(&m_font);

	GetClientRect(&client);

	client += scrollPos;
	CPoint selectEnd = TextPosition2ScreenCoord(&dc, m_selectEnd);
	long x = scrollPos.x;
	long y = scrollPos.y;

	if (selectEnd.y > client.bottom) {
		y = selectEnd.y-client.Height()/2;
	} else if (selectEnd.y < client.top) {
		y = selectEnd.y-client.Height()/2;
	}

	if (selectEnd.x < client.left) {
		if (selectEnd.x < client.Width()) {
			x = 0;
		} else {
			x = selectEnd.x-client.Width()/2;
		}
	} else if (selectEnd.x > client.right) {
		if (selectEnd.x < client.Width()) {
			x = 0;
		} else {
			x = selectEnd.x-client.Width()/2;
		}
	}

	dc.SelectObject(oldFont);

	ScrollToPosition(CPoint(x, y));

	Invalidate();
}

long CColorEditView::GetSearchPosition()
{
	if (m_selectEnd >= 0) {
		return m_selectEnd;
	}
	return CurrentPosition();
}

CPoint CColorEditView::TextPosition2ScreenCoord(CDC* pDC, long pos)
{
	CColorEditDoc*	pDoc = GetDocument();
	long		line = pDoc->m_text.Offset2Line(pos);
	long		offset = pDoc->GetLineOffset(line);
	CString		string = pDoc->m_text.Mid(offset, pos-offset);
	return CPoint(GetExtent(pDC, string).x+m_indent, GetExtent(pDC, _T(" ")).y*line);
}

BOOL CColorEditView::ReplaceSelection(CString string)
{
	CColorEditDoc*	pDoc = GetDocument();
	if (m_selectStart != m_selectEnd) {
		pDoc->m_text.Replace(m_selectStart, m_selectEnd - m_selectStart, string);
		m_caret = m_selectEnd = m_selectStart;
		pDoc->CheckPoint();
		CalcScrollSize();
		Invalidate();
		return TRUE;
	}
	return FALSE;
}

void CColorEditView::OnEditFind() 
{
	CColorEditDoc* pDoc = GetDocument();
	CSearch	dlg;
	dlg.m_pString = &pDoc->m_text;
	dlg.m_view = this;
	dlg.m_search_string = pDoc->Range(m_selectStart, m_selectEnd);
	dlg.DoModal();
	CreateSolidCaret(2, m_cHeight);
	ShowCaret();
	ScrollToCurrent();
	pDoc->UpdateAllViews(NULL);	
}

void CColorEditView::OnUpdateEditFind(CCmdUI* pCmdUI) 
{
	CColorEditDoc* pDoc = GetDocument();
	pCmdUI->Enable(pDoc->GetLength() > 0);	
}

void CColorEditView::DisableCheckPoint()
{
	CColorEditDoc* pDoc = GetDocument();
	pDoc->DisableCheckPoint();
}

void CColorEditView::EnableCheckPoint()
{
	CColorEditDoc* pDoc = GetDocument();
	pDoc->EnableCheckPoint();
}

void CColorEditView::CheckPoint()
{
	CColorEditDoc* pDoc = GetDocument();
	pDoc->CheckPoint();
}

void CColorEditView::OnEditCopy() 
{
	CColorEditDoc* pDoc = GetDocument();
	CString text = pDoc->Range(m_selectStart, m_selectEnd);	

	COleDataSource*	pSource = new COleDataSource();
	CSharedFile		sf(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT);
	sf.Write(text, text.GetLength());
	HGLOBAL hMem = sf.Detach();
	if (!hMem) return;
	pSource->CacheGlobalData(CF_TEXT, hMem);
	pSource->SetClipboard();
}

void CColorEditView::OnUpdateEditCopy(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_selectStart < m_selectEnd);
}

void CColorEditView::OnEditCut() 
{
	CColorEditDoc* pDoc = GetDocument();
	CString text = pDoc->Range(m_selectStart, m_selectEnd);	

	COleDataSource*	pSource = new COleDataSource();
	CSharedFile		sf(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT);
	sf.Write(text, text.GetLength());
	HGLOBAL hMem = sf.Detach();
	if (!hMem) return;
	pSource->CacheGlobalData(CF_TEXT, hMem);
	pSource->SetClipboard();
	ReplaceSelection(_T(""));
}

void CColorEditView::OnUpdateEditCut(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_selectStart < m_selectEnd);
}

void CColorEditView::OnEditPaste() 
{
	COleDataObject	obj;

	if (obj.AttachClipboard()) {
		if (obj.IsDataAvailable(CF_TEXT)) {
			HGLOBAL hmem = obj.GetGlobalData(CF_TEXT);
			CMemFile sf((BYTE*) ::GlobalLock(hmem), ::GlobalSize(hmem));
			CString buffer;

			LPSTR str = buffer.GetBufferSetLength(::GlobalSize(hmem));
			sf.Read(str, ::GlobalSize(hmem));
			::GlobalUnlock(hmem);

			if (m_selectStart < m_selectEnd) {
				ReplaceSelection(buffer);
			} else {
				CColorEditDoc*	pDoc = GetDocument();
				pDoc->m_text.Insert(m_caret, buffer);
				pDoc->CheckPoint();
				CalcScrollSize();
				Invalidate();
			}
		}
	}
	
}

void CColorEditView::OnUpdateEditPaste(CCmdUI* pCmdUI) 
{
	COleDataObject	obj;
	obj.AttachClipboard();
	pCmdUI->Enable(obj.IsDataAvailable(CF_TEXT));
}

void CColorEditView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
{
	if (pDC->IsPrinting()) {
		CColorEditDoc*	pDoc = GetDocument();
		ASSERT_VALID(pDoc);

		int nPrinterPixCX = pDC->GetDeviceCaps(HORZRES);  
		int nPrinterPixCY = pDC->GetDeviceCaps(VERTRES);  

		int nPrinterPixPerInchX = pDC->GetDeviceCaps(LOGPIXELSX);
		int nPrinterPixPerInchY = pDC->GetDeviceCaps(LOGPIXELSY);

		CClientDC dcDisplay(this);
		int nLogPixPerInchX = dcDisplay.GetDeviceCaps(LOGPIXELSX);
		int nLogPixPerInchY = dcDisplay.GetDeviceCaps(LOGPIXELSY);

		int nPagePixWidth = (int)((DWORD)nPrinterPixCX * nLogPixPerInchX / nPrinterPixPerInchX);
		int nPagePixHeight = (int)((DWORD)nPrinterPixCY * nLogPixPerInchY / nPrinterPixPerInchY);
		
		m_nCurPage = pInfo->m_nCurPage;

		LOGFONT lf;
		m_font.GetLogFont(&lf);
		int nTextHeight = lf.lfHeight;
 		
 		m_nLinesPerPage = nPagePixHeight / nTextHeight - 1;

		TRACE("m_nLinesPerPage = %d\r\n", m_nLinesPerPage);
		
		m_nPageStartLine = (m_nCurPage-1)*m_nLinesPerPage;
		m_nPageEndLine = m_nPageStartLine+m_nLinesPerPage-1;

		pDC->SetMapMode(MM_ANISOTROPIC);
		pDC->SetWindowExt(nLogPixPerInchX, nLogPixPerInchY);
		pDC->SetViewportExt(nPrinterPixPerInchX, nPrinterPixPerInchY);
	} else {
		CScrollView::OnPrepareDC(pDC, pInfo);
	}
}


void CColorEditView::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent == ScrollTimer) {
		AutoScroll();
		return;
	} 
	CScrollView::OnTimer(nIDEvent);
}

void CColorEditView::AutoScroll()
{
	CRect	client;
	GetClientRect(&client);

	if (client.PtInRect(m_mousePosition)) return;
	long p = SelectionPoint(m_mousePosition);
	m_caret = p;
	if (p <= m_selectStart) {
		m_selectStart = p;
	} else {
		m_selectEnd = p;
	}
	SetCurrentPosition(p);
	TRACE(_T("AutoScroll(%d)\r\n"), m_autoScrollCount++);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va国产va欧美va观看| 成人午夜私人影院| 欧美日韩精品一区视频| 国产精品热久久久久夜色精品三区| 亚洲高清一区二区三区| 色婷婷国产精品久久包臀| 国产精品丝袜在线| 成人av动漫在线| 亚洲精品美国一| 欧美日本韩国一区| 日本在线播放一区二区三区| 欧洲人成人精品| 视频一区欧美日韩| 2023国产精品| 成人午夜在线免费| 亚洲女厕所小便bbb| 欧美三级电影网| 九九视频精品免费| 国产精品免费视频一区| 欧美一级高清片| 偷拍与自拍一区| 成人av网站免费| 亚洲精品中文在线影院| 欧美电影一区二区| 国产综合色在线视频区| 中文字幕一区二区5566日韩| 99久久精品国产精品久久| 一区二区三区在线观看欧美 | 精品久久五月天| av一区二区三区黑人| 亚洲一区二区三区三| 欧美精品一区二区三区蜜臀| 99国内精品久久| 国产美女一区二区| 偷窥国产亚洲免费视频| 国产欧美日韩激情| 欧美一区三区四区| 91麻豆免费看| 91丨九色丨蝌蚪丨老版| 国内精品伊人久久久久av一坑 | 婷婷中文字幕一区三区| 日本一区二区三区四区| 91精品国产综合久久精品| av电影在线观看一区| 高清在线成人网| 国产一区二区三区在线观看免费视频 | 国产成人亚洲综合a∨猫咪| 午夜精品视频一区| 亚洲视频 欧洲视频| 国产日韩成人精品| 欧美精品一区二区三| 日韩欧美黄色影院| 这里是久久伊人| 欧美日韩精品欧美日韩精品一 | www.欧美亚洲| 国产在线日韩欧美| 国产一区欧美二区| 国产成a人亚洲精| 成人国产精品免费观看动漫| 丰满亚洲少妇av| 成人av免费在线观看| 91成人网在线| 91精品国产综合久久久久久久久久| 欧美日韩国产乱码电影| 宅男噜噜噜66一区二区66| 欧美一区二区三区四区在线观看| 这里只有精品免费| 久久九九全国免费| 亚洲欧美日韩在线不卡| 热久久国产精品| 国产精品免费丝袜| 久久久久久97三级| 中文字幕第一区第二区| 亚洲精品乱码久久久久久| 亚洲午夜久久久久久久久电影院 | 日韩欧美国产综合一区| 欧美性做爰猛烈叫床潮| 欧美精品乱人伦久久久久久| 久久午夜羞羞影院免费观看| 国产精品大尺度| 偷窥国产亚洲免费视频| 国产精品自拍av| 在线视频国内自拍亚洲视频| 日韩精品一区二区三区四区视频| 中文成人综合网| 麻豆精品一区二区综合av| hitomi一区二区三区精品| 3d动漫精品啪啪一区二区竹菊| 国产免费久久精品| 麻豆国产精品777777在线| 色老汉一区二区三区| 欧美国产1区2区| 激情综合色综合久久| 欧美视频三区在线播放| 日韩毛片一二三区| 成人小视频在线| 国产精品国产三级国产aⅴ无密码| 日日骚欧美日韩| 欧美电影在线免费观看| 激情综合色播激情啊| 欧美一级在线观看| 日韩成人伦理电影在线观看| 欧美精品自拍偷拍| 视频一区二区中文字幕| 欧美一级免费大片| 捆绑变态av一区二区三区| 欧美一区二区国产| 久久er精品视频| 久久精品一区八戒影视| 国产乱码精品一区二区三区五月婷 | ●精品国产综合乱码久久久久| 国产白丝精品91爽爽久久| 国产精品久久三区| 成人激情图片网| 一区二区三区四区精品在线视频 | 精品少妇一区二区三区免费观看 | 欧美视频在线一区二区三区 | 精品日韩在线一区| 国产成人亚洲综合a∨婷婷| 亚洲欧美日韩中文字幕一区二区三区| 91在线观看高清| 免费久久99精品国产| 久久久亚洲综合| 欧美性猛片aaaaaaa做受| 男男视频亚洲欧美| 综合欧美一区二区三区| 亚洲欧洲一区二区在线播放| 欧美日韩综合在线免费观看| 国产一区在线观看视频| 亚洲激情五月婷婷| 国产午夜精品一区二区三区视频| 97精品电影院| 国产一区美女在线| 日韩不卡一二三区| 亚洲美女视频在线观看| 国产精品无码永久免费888| 正在播放亚洲一区| 在线看国产日韩| 成人av资源网站| 国产精品一区一区| 久久精品二区亚洲w码| 亚洲成国产人片在线观看| 精品国产乱码久久久久久影片| 欧美日韩亚洲综合在线 | 亚洲精品乱码久久久久久| 2021久久国产精品不只是精品| 在线不卡免费欧美| 欧美蜜桃一区二区三区| 在线看国产一区| 日本乱码高清不卡字幕| 日本精品免费观看高清观看| 99视频一区二区| 99riav一区二区三区| 一本色道综合亚洲| 91久久久免费一区二区| 欧美亚日韩国产aⅴ精品中极品| 91蝌蚪国产九色| 精品视频色一区| 日韩免费观看2025年上映的电影 | 欧美日韩一区二区三区视频| 欧美日韩电影一区| 精品久久久久一区二区国产| 国产三级精品在线| 一区二区三区中文字幕电影| 亚洲高清视频中文字幕| 久久精品72免费观看| 成人不卡免费av| 日韩一区二区三区三四区视频在线观看| 欧美男女性生活在线直播观看| 欧美精品一区二区三区蜜臀| 国产精品免费观看视频| 亚洲一级片在线观看| 麻豆一区二区99久久久久| 国产91富婆露脸刺激对白| 91麻豆蜜桃一区二区三区| 911精品国产一区二区在线| 26uuu亚洲综合色欧美| 亚洲欧洲成人精品av97| 美女视频黄频大全不卡视频在线播放| 国产精品中文字幕欧美| 欧美久久免费观看| 国产精品卡一卡二| 精品一区二区免费视频| 在线精品视频免费观看| 久久久久久一二三区| 亚洲成人一区二区| 91视频免费看| 久久精品欧美一区二区三区不卡| 五月天一区二区| 色88888久久久久久影院野外| 精品成人在线观看| 久久精品国产精品亚洲综合| 欧美亚洲综合一区| 亚洲美腿欧美偷拍| 91日韩精品一区| 亚洲免费av观看| 91久久精品一区二区二区| 亚洲美女视频在线观看| 91色九色蝌蚪| 亚洲va欧美va人人爽午夜|