MFC实现文本插入描述符

1、文本插入符的创建应该是窗口创建之后,也就是要在窗口创建完成消息WM_CREAT响应函数OnCreat中窗口创建完成后实现。

2、文本插入符是依附于视图类的,所以我们应该在视图类的OnCreat函数中完成。


a、 在文本的起始位置创建

int CMapBigView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	CClientDC dc(this);//获取DC

// 	/*  以下3行实现一个位图插入符  */
// 	static CBitmap bitmap;
// 	bitmap.LoadBitmap(IDB_BITMAP1);
// 	CreateCaret(&bitmap);
 
 	TEXTMETRIC tm; //定义一个文本信息结构体,用于接收文本的字体信息
 	dc.GetTextMetrics(&tm);//获取当前文本的字体信息,主要需要字体的高度和宽度
 	CreateSolidCaret(tm.tmAveCharWidth, tm.tmHeight); //创建一个 文件插入符
	ShowCaret(); //显示

	// TODO: Add your specialized creation code here
	
	return 0;
}


b、通过捕获鼠标消息,可以再次设置文本插入符的位置为鼠标当前坐标


void CMapBigView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	SetCaretPos(point);

	CView::OnLButtonDown(nFlags, point);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 MFC 应用程序中实现文本编辑的界面交互,您可以使用 MFC 提供的控件和类来创建一个文本编辑器。以下是一个简单的示例代码,演示如何在 MFC 中创建一个文本编辑器: 1. 创建一个 MFC 对话框应用程序。 2. 在您的对话框类中添加一个成员变量,类型为 CRichEditCtrl,例如: ``` CRichEditCtrl m_editCtrl; ``` 3. 在您的对话框类的 OnInitDialog() 函数中创建该控件,例如: ``` BOOL CMyDialog::OnInitDialog() { CDialogEx::OnInitDialog(); // 创建控件 CRect rect; GetDlgItem(IDC_EDIT_CTRL)->GetWindowRect(&rect); ScreenToClient(&rect); m_editCtrl.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL, rect, this, IDC_EDIT_CTRL); // 设置字体和样式 CHARFORMAT2 cf; ZeroMemory(&cf, sizeof(cf)); cf.cbSize = sizeof(cf); cf.dwMask = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_FACE | CFM_SIZE; cf.dwEffects = CFE_AUTOCOLOR; cf.yHeight = 200; // 20 point lstrcpy(cf.szFaceName, _T("Arial")); m_editCtrl.SetDefaultCharFormat(cf); return TRUE; } ``` 4. 现在您可以使用该控件的方法和属性来管理文本编辑操作。例如,插入一段文本: ``` CString strText = _T("Hello, World!"); m_editCtrl.SetWindowText(strText); ``` 5. 您还可以添加一些控件来实现一些界面交互,例如菜单、工具栏、按钮等等。例如,您可以添加一个 "保存" 按钮来保存当前文本编辑器中的内容: ``` void CMyDialog::OnBtnSave() { CString strFilePath; CFileDialog dlg(FALSE, _T("txt"), _T("untitled"), OFN_OVERWRITEPROMPT, _T("Text Files (*.txt)|*.txt||"), this); if (dlg.DoModal() == IDOK) { strFilePath = dlg.GetPathName(); CStdioFile file; if (file.Open(strFilePath, CFile::modeCreate | CFile::modeWrite)) { CString strText; m_editCtrl.GetWindowText(strText); file.WriteString(strText); file.Close(); } } } ``` 希望这个简单的示例能够帮助您开始在 MFC 应用程序中实现文本编辑的界面交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值