VS2019, MFC 光标文字操作

1. 如何创建光标显示在view类中

1.1 创建OnCreate函数,在view类上右键>>属性,然后在选择WM消息中的OnCreate

1.2, 在Oncreate中添加如下代码(详细见代码及注释,取消代码中的注释以打开功能即可)

int CxxxxView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:  在此添加您专用的创建代码
	/*一般字体的插入符 的创建
	CClientDC dc(this);
	TEXTMETRIC tm;
	dc.GetTextMetrics(&tm);//获取字信息

	CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);//创建插入符,除8是调试值,使得宽度符合视觉要求,读者可以更改看效果。
	ShowCaret();//显示插入符
	*/
	/*创建图形插入符
	CClientDC dc(this);
	TEXTMETRIC tm;
	dc.GetTextMetrics(&tm);

	bitmap.LoadBitmapW(IDB_BITMAP1);//位图的创建:在资源视图/Bitmap下,右键创建即可。
	CreateCaret(&bitmap);
	ShowCaret();
	*/
	return 0;
}

2. 向View窗口输出文字,当移动窗口的时候需要重新显示文字,所以要用到OnDraw消息处理函数。每次窗体的改变都会调OnDraw,添加如下代码

void CxxxxView::OnDraw(CDC* pDC)
{
	CSunXinjiaocheng05Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	//CString str("DengYou");//直接用字符串去构造也可以
	CString str;
	str = "xxxxxyyyyy";//因为其重载了=号.
	pDC->TextOutW(50,50,str);
	str.LoadStringW(IDS_DDDYYY);//使用资源视图>>String Table 里面的字符串,读者自己可以去创建
	pDC->TextOutW(200,200,str);
	
}

3.路径层和剪切区域,实现某部分文字不被其他(线条,颜色等)覆盖,让某部分文字显示不一样。查看如下代码注释。

void CxxxxView::OnDraw(CDC* pDC)
{
	CSunXinjiaocheng05Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	//CString str("DengYou");//直接用字符串去构造也可以
	CString str;
	str = "xxxxxyyyyy";//因为其重载了=号.
	pDC->TextOutW(50,50,str);
	str.LoadStringW(IDS_DDDYYY);//使用资源视图>>String Table 里面的字符串,读者自己可以去创建
	pDC->TextOutW(200,200,str);
	//路劲层 类似选定区域
	CSize cz = pDC->GetTextExtent(str);//获取字符的宽度和高度
	pDC->BeginPath();//注释掉这个对成句,则可以看到矩形框
	pDC->Rectangle(0,50,50+cz.cx,50+cz.cy);
	pDC->EndPath();
	//pDC->SelectClipPath(RGN_DIFF);//文字部分无网格线条
	pDC->SelectClipPath(RGN_AND);//只有文字上有网格线条
	for (int i = 0; i < 300; i += 10)//画网格 造中间留10个像素的网格,发现文字都在网格里
	{
		pDC->MoveTo(0,i);
		pDC->LineTo(300,i);
		pDC->MoveTo(i,0);
		pDC->LineTo(i,300);
	}
}

4.字符输入的功能,键盘输入字符显示到窗口上,删除,换行,字体,光标移动 模拟KALAOK字幕变色,创建定时器 等 。

4.1 首先要捕获键盘按下的消息WM_CHAR消息。增加一个WM_CHAR消息,选择后会自动生成OnChar处理函数

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值