1.创建并显示插入符

(1)根据字体的大小绘制插入符“

CClientDC dc(this);

TEXTMETRICA tm;

dc.GetTextMetrics(&tm);

CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);//根据字体大小创建插入符

ShowCaret();

(2)绘制图形插入符“

bitmap.LoadBitmap(IDB_BITMAP1);

CreateCaret(&bitmap);

ShowCaret();

3.显示文本:(OnDraw函数中)

(1)CString str="各种猥琐的东西都往东南枝上挂有木有!";

pDC->TextOut(0,0,str);

(2)使用LoadString()加载字符串

在stringTable新建一个字符串,设置ID为IDS_Shen,但是笔者在编写是遇到一个问题:

error RC2151 : cannot reuse string constants, 61446(0xF006) - "(##########,##########)" already defined. Cannot add 61446(0xF006) - "一未命名文件".

搜索了下,原来是是在发布的时候,使用Release版本,Static library编译时,MFC中afxres.h中61446已竟被使用,出现同一ID被两次使用。

所以,将自己写的那段资源ID改成比61446大些问题就解决了。

4.创建路径层

//路径层

CSize sz=pDC->GetTextExtent(str);

pDC->BeginPath();

pDC->Rectangle(0,0,sz.cx,sz.cy);

pDC->EndPath();

pDC->SelectClipPath(RGN_AND);//创建剪切区域,有5中模式

5.输入文本:

void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)

{

// TODO: Add your message handler code here and/or call default

CClientDC dc(this);

TEXTMETRICA tm;

dc.GetTextMetrics(&tm);

if(0x0d==nChar)//回车键

{

M_Str.Empty();

PointPos.y+=tm.tmHeight;

}

else if(0x08==nChar)//退格键

{

COLORREF clr=dc.GetTextColor();

dc.SetTextColor(dc.GetBkColor());

//M_Str=M_Str.Left(M_Str.GetLength()-1);

dc.TextOut(PointPos.x,PointPos.y,M_Str);

M_Str=M_Str.Left(M_Str.GetLength()-1);

dc.SetTextColor(clr);

}

else

{

M_Str+=nChar;

}

CSize sz=dc.GetTextExtent(M_Str);

CPoint pt;

pt.x=PointPos.x+sz.cx;

pt.y=PointPos.y;

SetCaretPos(pt);

dc.TextOut(PointPos.x,PointPos.y,M_Str);

CView::OnChar(nChar, nRepCnt, nFlags);

}

mfc编程 孙鑫_MFC文本编程——孙鑫第五课相关推荐

  1. mfc编程 孙鑫_MFC(文本编程,孙鑫C++第五讲笔记整理) | 学步园

    以下是第五讲的主要内容(文本输入输出,要先设置光标位置,然后再输出文本) 1.CWnd::CreateSolidCaret创建插入符,ShowCaret()显示插入符.GetTextMetrics() ...

  2. mfc编程 孙鑫_MFC(ActiveX编程,孙鑫C++第十八讲笔记整理)

    一:在VB中调用X控件,添加方法project->Add components.另外可以用Object Browser来查看控件 二:在VC中创建X控件 1.新建一个X工程名为Clock,注意一 ...

  3. MFC学习日记五:Mfc文本编程

    5: 文本编程首先需要创建一个插入符,创建插入符用CreateSolidCaret( int nWidth, int nHeight );参数分别是Caret(插入符)的宽度和高度,如果设置为0则会认 ...

  4. 两台电脑串口传输文件及调用opencv库编程显示图片和文本

    文章目录 一.两台电脑利用串口进行文件传输 (一).实验内容 (二).配置环境 (三).实验过程 (四).结果分析 二.在Ubuntu下基于Linux环境调用opencv库编程显示图片和文本 (一). ...

  5. 孙鑫源java_「 孙鑫源 」孙鑫源的名字解释 - 名字网

    孙 简体字:孙(sūn) 繁体字:孫 部首:子 五行:金 简体笔画:6 繁体笔画:10 吉凶:吉 汉字解释 ☆孙 [sūn] ☆儿子的儿子:-子.-女. ☆跟孙子同辈的亲属:外-.侄-(侄儿的子女). ...

  6. PLC的ST编程方式--文本编程,简洁啊

    一.ST语言介绍 发现网上PLC的ST编程资料极少.不过,道理也很简单,因为做PLC的基本都是电气出身,梯形图类似于继电器逻辑,比较接近他们的习惯...ST属于文本编程,符合程序员的习惯,兼职做plc ...

  7. 如何自学python编程-零基础如何自学编程?

    如果你正在自学编程和代码,并苦于没有优质资源,那么我就找对了地方. 接下来给你介绍21个免费学习写代码的网站,在办公室里或在家里即可轻松学编程. 编程初学者必必必必必必!看! 马!上!打包收藏这21个 ...

  8. ab st语言编程手册_西门子PLC编程SCL和LAD谁才是王者?一起讨论一下

    现在很多大品牌的中高级 PLC 都支持国际电工委员会 IEC61131 标准中规范的五种编程语言的混合编程,即梯形图(LD).结构化文本(ST).流程图(SFC).指令表(IL)和功能块(FB).在这 ...

  9. python函数的作用降低编程复杂度_Python函数式编程

    lambda 本文将介绍Python中函数式编程的特性.在对函数式编程的概念有了了解后,本文会介绍iterators和generators等语言特性,还有itertools和functools等相关的 ...

最新文章

  1. 基于VLC的rtsp服务器linux平台搭建
  2. UILabel-UITextField-UIBottonamp;nbsp;UI_…
  3. event级别设置Resumable Space Allocation
  4. 前端-----盒子模型
  5. Django 数据导入和导出
  6. bakaxl启动器怎么导入整合包_bakaxl启动器加皮肤光影mod
  7. apollo源码分析 感知_Kitty中的动态线程池支持Nacos,Apollo多配置中心了
  8. android studio按钮槽函数,AndroidStudio按钮Button退出程序
  9. python+selenuim自动化测试(六)上传文件
  10. 【王俊杰de人工智能实战课】第8次作业
  11. Android中MVC框架的运用
  12. HTTPS为什么更安全,先看这些 , 网络加密 , 加密解密
  13. 利用WPF创建含多种交互特性的无边框窗体
  14. 数据中心规划设计参考-(文章以GB 50174为参考基准)
  15. 影响中国互联网的100人
  16. 还在用PPT做组织架构图?公司都在用的架构图软件是什么?
  17. Mysql第一天笔记01——安装mysql
  18. Kalman滤波在温度测量中的应用(含MATLAB仿真)
  19. Think In Java第四版读书笔记
  20. 高二计算机水平测试题,2020——2021学年河南省高二学业水平测试信息技术选择判断模拟题(含答案)...

热门文章

  1. 解决ubuntu过热:gnome-shell扩展 cpu power manager
  2. nginx修改上传文件大小限制
  3. 在html中怎么设置页面边距,在打印网页时怎么设置调整页边距
  4. 什么是axios拦截器?有哪些作用和使用场景
  5. SpringBoot项目多环境指定环境打包(小白必看)
  6. 简单的计算器程序却蕴涵的有趣的数据结构
  7. 高效将PDF转换成Word,迅捷转换器很实用
  8. Linux常用命令——rpmbuild命令
  9. 人工智能导论王万良-测试答案
  10. Vue框架---Vue模板语法(二)