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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? customricheditctrl.cpp

?? 《MFC窗口程序設(shè)計》書籍源碼 詳細(xì)講解MFC框架程序設(shè)計
?? CPP
字號:
// CustomRichEditCtrl.cpp : implementation file
//
// Filename:      CustomRichEditCtrl.cpp

#include "stdafx.h"
#include "..\CommonCtrls.h"
#include "CustomRichEditCtrl.h"



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

/////////////////////////////////////////////////////////////////////////////
// CCustomRichEditCtrl

CCustomRichEditCtrl::CCustomRichEditCtrl()
{
	bold = TRUE;
	italic = TRUE;
	underlined = TRUE;
	m_bClick=FALSE;
	m_bTab=FALSE;
}



CCustomRichEditCtrl::~CCustomRichEditCtrl()
{
}


BEGIN_MESSAGE_MAP(CCustomRichEditCtrl, CRichEditCtrl)
	//{{AFX_MSG_MAP(CCustomRichEditCtrl)
	ON_WM_RBUTTONDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCustomRichEditCtrl message handlers


DWORD CALLBACK CCustomRichEditCtrl ::StreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
   CFile* pFile = (CFile*) dwCookie;
   ASSERT_KINDOF(CFile,pFile);
   *pcb = pFile->Read(pbBuff, cb);
   return 0;
}


void CCustomRichEditCtrl::SetRtf(CFile* pInputFile )
{
	//讀入文本
	EDITSTREAM es;
	es.dwError = 0;
	es.pfnCallback = StreamInCallback;
	es.dwCookie = (DWORD)pInputFile;
	StreamIn(SF_RTF, es);
}

void CCustomRichEditCtrl::SetSelectionBold()
{
	cf.cbSize = sizeof(CHARFORMAT);
	GetSelectionCharFormat(cf);
	
	if (cf.dwMask & CFM_BOLD)	// selection is all the same
	{
		cf.dwEffects ^= CFE_BOLD; 
	}
	else
	{
		cf.dwEffects |= CFE_BOLD;
	}
	
	cf.dwMask = CFM_BOLD;

	SetSelectionCharFormat(cf);
}


void CCustomRichEditCtrl::SetSelectionItalic()
{
	cf.dwMask = CFM_ITALIC;
	if ( italic == TRUE )	
		 cf.dwEffects |= CFE_ITALIC;
	else 
		 cf.dwEffects &= ~CFE_ITALIC;
	SetSelectionCharFormat(cf);
	italic = !italic;
}


void CCustomRichEditCtrl::SetSelectionUnderline()
{
	cf.dwMask = CFM_UNDERLINE;
	if ( underlined == TRUE )	
		 cf.dwEffects |= CFE_UNDERLINE;
	else 
		 cf.dwEffects &= ~CFE_UNDERLINE;
	SetSelectionCharFormat(cf);
	underlined = !underlined;
}

void CCustomRichEditCtrl::SetColour()
{
	CColorDialog dlg;
	
	if (cf.dwEffects & CFE_AUTOCOLOR) 
		cf.dwEffects -= CFE_AUTOCOLOR;
	
	// Get a color from the common color dialog box
	if ( dlg.DoModal() == IDOK )
	{
		cf.crTextColor = dlg.GetColor();
	}
	cf.dwMask = CFM_COLOR;	

	SetSelectionCharFormat(cf);
}


void CCustomRichEditCtrl::SetParagraphLeft()
{

	pf.cbSize = sizeof(PARAFORMAT);
	pf.dwMask = PFM_ALIGNMENT;    
	pf.wAlignment = PFA_LEFT;
	
	SetParaFormat(pf);
}



void CCustomRichEditCtrl::SetParagraphRight()
{

	pf.cbSize = sizeof(PARAFORMAT);
	pf.dwMask = PFM_ALIGNMENT;    
	pf.wAlignment = PFA_RIGHT;
	
	SetParaFormat(pf);
}


void CCustomRichEditCtrl::SetParagraphCenter()
{

	pf.cbSize = sizeof(PARAFORMAT);
	pf.dwMask = PFM_ALIGNMENT;    
	pf.wAlignment = PFA_CENTER;
	
	SetParaFormat(pf);
}



void CCustomRichEditCtrl::SetParagraphBulleted()
{
	GetParaFormat(pf);

	if ( (pf.dwMask & PFM_NUMBERING) && (pf.wNumbering == PFN_BULLET) )
	{
		pf.wNumbering = 0;
		pf.dxOffset = 0;
		pf.dxStartIndent = 0;
		pf.dwMask = PFM_NUMBERING | PFM_STARTINDENT | PFM_OFFSET;
	}
	else
	{
		pf.wNumbering = PFN_BULLET;
		pf.dwMask = PFM_NUMBERING;
		if (pf.dxOffset == 0)
		{
			pf.dxOffset = 4;
			pf.dwMask = PFM_NUMBERING | PFM_STARTINDENT | PFM_OFFSET;
		}
	}

	SetParaFormat(pf);
}



void CCustomRichEditCtrl::SetFontName(CString sFontName)
{
    GetSelectionCharFormat(cf);

	// Set the font name.
	strcpy (cf.szFaceName, sFontName);
	cf.dwMask |=CFM_FACE;
	SetSelectionCharFormat(cf);
}



void CCustomRichEditCtrl::SetFontSize(int nFontSize)
{
	GetSelectionCharFormat(cf);
	nFontSize *= 2;	// convert from to twips
	cf.yHeight = nFontSize ;
	cf.dwMask = CFM_SIZE;

	SetSelectionCharFormat ( cf );
}


void CCustomRichEditCtrl::Print(BOOL bShowPrintDialog)
{
	CPrintDialog printDialog(FALSE);
	
	
	if (bShowPrintDialog)
	{
		int r = printDialog.DoModal();
		if (r == IDCANCEL)
			return; // User pressed cancel, don't print.
	}
	else
	{
		printDialog.GetDefaults();
	}

	HDC hPrinterDC = printDialog.GetPrinterDC();

	// This code basically taken from MS KB article Q129860 
	
	FORMATRANGE fr;
	  int	  nHorizRes = GetDeviceCaps(hPrinterDC, HORZRES);
	  int	  nVertRes = GetDeviceCaps(hPrinterDC, VERTRES);
      int     nLogPixelsX = GetDeviceCaps(hPrinterDC, LOGPIXELSX);
	  int     nLogPixelsY = GetDeviceCaps(hPrinterDC, LOGPIXELSY);
	  LONG	      lTextLength;   // Length of document.
	  LONG	      lTextPrinted;  // Amount of document printed.

	 // Ensure the printer DC is in MM_TEXT mode.
	  SetMapMode ( hPrinterDC, MM_TEXT );

	 // Rendering to the same DC we are measuring.
	  ZeroMemory(&fr, sizeof(fr));
	  fr.hdc = fr.hdcTarget = hPrinterDC;

	 // Set up the page.
	  fr.rcPage.left     = fr.rcPage.top = 0;
	  fr.rcPage.right    = (nHorizRes/nLogPixelsX) * 1440;
	  fr.rcPage.bottom   = (nVertRes/nLogPixelsY) * 1440;

	 // Set up 0" margins all around.
	  fr.rc.left   = fr.rcPage.left ;//+ 1440;  // 1440 TWIPS = 1 inch.
	  fr.rc.top    = fr.rcPage.top ;//+ 1440;
	  fr.rc.right  = fr.rcPage.right ;//- 1440;
	  fr.rc.bottom = fr.rcPage.bottom ;//- 1440;

	 // Default the range of text to print as the entire document.
	  fr.chrg.cpMin = 0;
	  fr.chrg.cpMax = -1;
      FormatRange(&fr,TRUE);      
	 // Set up the print job (standard printing stuff here).
		DOCINFO di;
	  ZeroMemory(&di, sizeof(di));
	  di.cbSize = sizeof(DOCINFO);

	  di.lpszDocName = "MyRtf";

	    // Do not print to file.
	     di.lpszOutput = NULL;
	     

	 // Start the document.
	  StartDoc(hPrinterDC, &di);

	 // Find out real size of document in characters.
	  lTextLength = GetTextLength();//SendMessage ( /*hRTFWnd,*/ WM_GETTEXTLENGTH, 0, 0 );
	
	 do
	     {
	     // Start the page.
	     StartPage(hPrinterDC);

	    // Print as much text as can fit on a page. The return value is
	     // the index of the first character on the next page. Using TRUE
	     // for the wParam parameter causes the text to be printed.

	    lTextPrinted =FormatRange(&fr,TRUE);
		
		DisplayBand(&fr.rc );
	    
	    // Print last page.
	     EndPage(hPrinterDC);

	    // If there is more text to print, adjust the range of characters
	     // to start printing at the first character of the next page.
		if (lTextPrinted < lTextLength)
		{
		fr.chrg.cpMin = lTextPrinted;
		fr.chrg.cpMax = -1;
		}
	     }
	  while (lTextPrinted < lTextLength);

	 // Tell the control to release cached information.
	  FormatRange(NULL,FALSE);
		  //SendMessage( EM_FORMATRANGE, 0, (LPARAM)NULL);

	 EndDoc (hPrinterDC);

	  ///////
	  
	DeleteDC(hPrinterDC);

}

void CCustomRichEditCtrl::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CMenu mnu;
	ClientToScreen(&point);	
	mnu.LoadMenu(IDR_MENU2);
	mnu.GetSubMenu(0)->TrackPopupMenu(TPM_CENTERALIGN,point.x,point.y,
		AfxGetMainWnd());  
	CRichEditCtrl::OnRButtonDown(nFlags, point);
}



void CCustomRichEditCtrl::SetColor(COLORREF clr)
{
	if (cf.dwEffects & CFE_AUTOCOLOR) 
		cf.dwEffects -= CFE_AUTOCOLOR;
	
		cf.crTextColor = clr;

		cf.dwMask = CFM_COLOR;	

	SetSelectionCharFormat(cf);
}

BOOL CCustomRichEditCtrl::SelectionIsBold()
{
	 GetSelectionCharFormat(cf);	
	
	if (cf.dwEffects & CFM_BOLD)
		return TRUE;
	else
		return FALSE;
}

BOOL CCustomRichEditCtrl::SelectionIsItalic()
{
	 GetSelectionCharFormat(cf);	
	
	if (cf.dwEffects & CFM_ITALIC)
		return TRUE;
	else
		return FALSE;
}

BOOL CCustomRichEditCtrl::SelectionIsUnderlined()
{
	GetSelectionCharFormat(cf);	
	
	if (cf.dwEffects & CFM_UNDERLINE)
		return TRUE;
	else
		return FALSE;
}
BOOL CCustomRichEditCtrl::ParagraphIsCentered()
{
	 GetParaFormat(pf);

	if (pf.wAlignment == PFA_CENTER)
		return TRUE;
	else
		return FALSE;
}

BOOL CCustomRichEditCtrl::ParagraphIsLeft()
{
	GetParaFormat(pf);

	if (pf.wAlignment == PFA_LEFT)
		return TRUE;
	else
		return FALSE;
}

BOOL CCustomRichEditCtrl::ParagraphIsRight()
{
	GetParaFormat(pf);

	if (pf.wAlignment == PFA_RIGHT)
		return TRUE;
	else
		return FALSE;
}
BOOL CCustomRichEditCtrl::ParagraphIsBulleted()
{
	GetParaFormat(pf);

	if (pf.wNumbering == PFN_BULLET)
		return TRUE;
	else
		return FALSE;
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自拍在线| 日本韩国欧美三级| 91精品在线免费| 亚洲国产精品久久久久秋霞影院 | 91麻豆免费在线观看| 国产午夜亚洲精品不卡| 久久成人免费网| 日韩精品中文字幕一区二区三区| 一区二区三区不卡视频| 色老头久久综合| 亚洲综合色噜噜狠狠| 色婷婷综合久久久中文一区二区| 中文字幕一区二区三区在线观看 | 亚欧色一区w666天堂| 欧美日本乱大交xxxxx| av在线不卡电影| 91精品一区二区三区久久久久久| 欧美色视频在线| 午夜精品久久久久久久久| 91视频.com| 日韩电影在线观看一区| 欧美α欧美αv大片| 成人综合在线视频| 亚洲乱码国产乱码精品精的特点 | 国产精品国产自产拍高清av| av在线不卡电影| 蜜桃av一区二区三区| 国产精品成人一区二区三区夜夜夜 | 久久香蕉国产线看观看99| 国产成人免费在线| 亚洲国产成人av| 中文字幕二三区不卡| 欧美美女视频在线观看| 成人免费视频播放| 奇米影视一区二区三区| 亚洲天堂av一区| 国产视频一区二区三区在线观看 | 国产成人精品综合在线观看| 亚洲精品午夜久久久| 久久久久久久久蜜桃| 777午夜精品视频在线播放| 99精品在线免费| 国产尤物一区二区在线| 日日欢夜夜爽一区| 亚洲一区二区三区四区五区黄| 欧美精品一区二区高清在线观看| 欧美色手机在线观看| 99精品视频一区二区三区| 国产精品一区二区黑丝| 欧美a级理论片| 日韩精品欧美精品| 亚洲第一二三四区| 亚洲午夜一区二区三区| 亚洲欧美一区二区不卡| 欧美激情一区二区三区全黄| 久久蜜桃av一区二区天堂| 91精品国产综合久久婷婷香蕉 | 国产精品资源在线观看| 韩日精品视频一区| 国产精品中文字幕日韩精品| 韩日av一区二区| 粉嫩aⅴ一区二区三区四区五区| 精品一区二区日韩| 大陆成人av片| 91福利国产精品| 91麻豆精品国产91久久久使用方法| 欧美三电影在线| 精品国产乱码久久| 国产精品国产自产拍高清av王其| 亚洲精品中文字幕在线观看| 亚洲一区影音先锋| 国内外精品视频| 91欧美一区二区| 91精品国产福利在线观看| 久久久亚洲精品一区二区三区 | 欧美日韩国产美| 91精品国产综合久久蜜臀| 亚洲男人电影天堂| 国产ts人妖一区二区| 制服丝袜亚洲精品中文字幕| 精品成人在线观看| 亚洲人妖av一区二区| 国产精品嫩草影院com| 亚洲在线一区二区三区| 国产精品一区在线观看你懂的| 99久久伊人久久99| 精品剧情v国产在线观看在线| 国产精品高潮久久久久无| 日本色综合中文字幕| 91亚洲精品久久久蜜桃网站| 日韩欧美的一区| 成人欧美一区二区三区视频网页| 亚洲一二三四久久| a级高清视频欧美日韩| 制服视频三区第一页精品| 亚洲欧美一区二区三区孕妇| 成人av电影在线| 国产欧美久久久精品影院| 另类的小说在线视频另类成人小视频在线| 欧美xxxxx牲另类人与| jlzzjlzz欧美大全| 欧美精品国产精品| 亚洲一区视频在线| 欧美三区免费完整视频在线观看| 国产精品久久久久三级| 国产精品综合一区二区三区| 日韩一区二区三区在线视频| 一区二区三区国产精华| 9人人澡人人爽人人精品| 国产精品视频在线看| 99这里只有精品| 一区二区三区免费在线观看| 97国产精品videossex| 亚洲影院免费观看| 欧美一级生活片| 成人午夜免费电影| 一区二区三区四区中文字幕| 欧美性大战久久久久久久蜜臀| 亚洲成人免费在线观看| 精品国产一二三区| 从欧美一区二区三区| 亚洲尤物在线视频观看| 9191久久久久久久久久久| 国内精品免费**视频| 一色桃子久久精品亚洲| 欧美一区二区福利在线| 久久国产尿小便嘘嘘尿| 911精品国产一区二区在线| 亚洲精品中文字幕乱码三区| 一本大道av伊人久久综合| 欧美电影影音先锋| 丝袜亚洲精品中文字幕一区| 亚洲精品成人精品456| 91丨porny丨蝌蚪视频| 久久精品国产色蜜蜜麻豆| 午夜激情久久久| 亚洲视频一区在线观看| 福利一区二区在线观看| 欧美日韩国产综合一区二区| 国产伦精品一区二区三区免费迷| **性色生活片久久毛片| 欧美一级日韩免费不卡| www.99精品| 成人夜色视频网站在线观看| 日本一区中文字幕 | 狠狠色综合日日| 日本vs亚洲vs韩国一区三区二区 | 亚洲第一电影网| 亚洲另类春色校园小说| 一区二区三国产精华液| 精品国产一区二区亚洲人成毛片| 色网站国产精品| 91在线一区二区| av午夜一区麻豆| 看电影不卡的网站| 午夜精品一区二区三区电影天堂| 亚洲人成网站精品片在线观看| 久久久夜色精品亚洲| 欧美r级电影在线观看| 91精品国产一区二区三区香蕉| 欧美午夜精品一区二区三区| 国产凹凸在线观看一区二区| 亚洲制服丝袜av| 久久亚区不卡日本| 国产精品免费久久| 久久亚洲综合色一区二区三区| 精品国产麻豆免费人成网站| 国产日韩欧美综合一区| 国产欧美一区二区三区在线看蜜臀 | 国产精品18久久久久久久网站| 国产精品一二二区| 国产99久久久国产精品免费看| 国产尤物一区二区在线| 国产一区二区三区精品视频| 国产又黄又大久久| 国产精品2024| 92国产精品观看| 欧美精品 日韩| 久久这里只精品最新地址| 国产日韩欧美一区二区三区乱码| 亚洲欧洲在线观看av| 亚洲成人先锋电影| 狠狠色狠狠色合久久伊人| 99re视频这里只有精品| 日韩精品专区在线影院重磅| 亚洲精品一区二区三区99| 国产精品毛片a∨一区二区三区 | 欧美三电影在线| 久久久久久久电影| 亚洲色图另类专区| 国产乱码一区二区三区| 色噜噜狠狠色综合中国| 精品毛片乱码1区2区3区| 亚洲免费观看高清完整版在线观看 | 国产米奇在线777精品观看| 在线观看视频一区二区欧美日韩| 欧美日韩一二三| 亚洲精品视频免费看| 国产乱人伦偷精品视频不卡| 欧美日韩另类一区|