edit控件显示、编辑文本文件

这家伙也很懒 2018-01-29 09:18:23
我想用edit控件做一个简单的类似文本编辑器,需要可以读入文本,并且可以对读入的内容进行编辑,保存按钮已经写好。但是读入的文本不能编辑,这个是为什么?代码如下:

BOOL isOpen = TRUE; //是否打开(否则为保存)
CString defaultDir = L"C:\\Users\nhk\Desktop"; //默认打开的文件路径
CString fileName = L""; //默认打开的文件名
CString filter = L"文件 (*.txt)|*.txt||"; //文件过滤的类型
CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);
openFileDlg.GetOFN().lpstrInitialDir = L"C:\\Users\nhk\Desktop\*.txt";
INT_PTR result = openFileDlg.DoModal();
CString filePath = defaultDir + "\1.txt";

CStdioFile stdfile;
CString strLine;
CString strText;

if (result == IDOK) {
filePath = openFileDlg.GetPathName();
stdfile.Open(filePath, CFile::modeReadWrite);
while (stdfile.ReadString(strLine))
{
strText+=strLine;
strText += "\r\n";
}
stdfile.Close();
m_edit.SetWindowText(strText);
}


目前可以把文本正常读进来,但是不能正常编辑。我是新手,希望大家可以讲的清楚一些,谢谢。
...全文
709 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mlqxj35674 2018-01-30
  • 打赏
  • 举报
回复
m_brBrush 在类构造器中生成,在case CTLCOLOR_EDIT中直接返回,不用每次 DeleteObject()后再CreateSolidBrush(RGB(45, 45, 48)); 要返回的画刷对象必须是成员变量且不是临时变量,如果不同的子控件设置不同背景,应该多建立几个画刷对象,按不同控件对象返回不同的画刷对象
这家伙也很懒 2018-01-30
  • 打赏
  • 举报
回复
引用 8 楼 schlafenhamster 的回复:
没有经过 CTLCOLOR_EDIT: ? Invalidate 一下
没有看明白,什么意思?可以说具体一些吗?谢谢!
这家伙也很懒 2018-01-30
  • 打赏
  • 举报
回复
找到问题了,问题出在pDC->SetBkMode(TRANSPARENT); 这一句,我现在直接用pDC->SetBkColor(RGB(40,40,40));这个就没有那个问题了,谢谢各位的解答
这家伙也很懒 2018-01-30
  • 打赏
  • 举报
回复
引用 11 楼 shiyanbo_1006 的回复:
不是透明背景吧
OnEraseBkgnd添加这个消息看看


设置的黑色背景,是指下面这个消息吗?


具体要写什么代码吗?
这家伙也很懒 2018-01-30
  • 打赏
  • 举报
回复
引用 10 楼 mlqxj35674 的回复:
m_brBrush 在类构造器中生成,在case CTLCOLOR_EDIT中直接返回,不用每次 DeleteObject()后再CreateSolidBrush(RGB(45, 45, 48)); 要返回的画刷对象必须是成员变量且不是临时变量,如果不同的子控件设置不同背景,应该多建立几个画刷对象,按不同控件对象返回不同的画刷对象
试了这个方法,对我这个问题没有效果,但是感觉这样写确实美观整齐简洁,谢谢了
待续_1006 2018-01-30
  • 打赏
  • 举报
回复
不是透明背景吧 OnEraseBkgnd添加这个消息看看
worldy 2018-01-29
  • 打赏
  • 举报
回复
怎么可能,Edit控制默认是可以编辑的,你是否设置了Enable 属性或者Lock属性?
这家伙也很懒 2018-01-29
  • 打赏
  • 举报
回复
补充一下,我是想在edit控件的编辑框里面对读入的文本编辑,然后再把编辑之后的内容保存
schlafenhamster 2018-01-29
  • 打赏
  • 举报
回复
没有经过 CTLCOLOR_EDIT: ? Invalidate 一下
这家伙也很懒 2018-01-29
  • 打赏
  • 举报
回复
引用 6 楼 schlafenhamster 的回复:
"显示都会出现问题" 什么问题 ?
就是我在5楼贴的图片那样
schlafenhamster 2018-01-29
  • 打赏
  • 举报
回复
"显示都会出现问题" 什么问题 ?
这家伙也很懒 2018-01-29
  • 打赏
  • 举报
回复

在一行中间部分敲字或是删除就会变成这样;但是把这个地方选择一下,就会正常显示。感觉像是显示刷新的问题,不知道该怎么改
这家伙也很懒 2018-01-29
  • 打赏
  • 举报
回复
但是还有一个问题就是我添加颜色消息设置了edit控件的背景色,文本颜色等,结果在编辑框敲字和删除,显示都会出现问题。这是为什么? case CTLCOLOR_EDIT: //对所有编辑框的设置 { pDC->SetBkMode(TRANSPARENT);//设置字体背景透明 pDC->SetTextColor(RGB(255, 255, 255)); /*pDC->SetBkColor(RGB(45,45,48));*/ //pWnd->SetFont(cFont); if (m_brBrush.GetSafeHandle()) { m_brBrush.DeleteObject(); } m_brBrush.CreateSolidBrush(RGB(45, 45, 48)); //创建画刷 return m_brBrush; //返回画刷句柄 }
这家伙也很懒 2018-01-29
  • 打赏
  • 举报
回复
已经解决了,是因为edit需要设置文本大小限制,我读的文本有点大。 m_edit.SetLimitText(1024*1024*1024);
第1章 窗体与界面设计   1.1 菜单应用实例    实例001 在系统菜单中添加菜单项    实例002 带图标的程序菜单    实例003 根据表中数据动态生成菜单    实例004 浮动的菜单   1.2 弹出菜单应用实例    实例005 在控件上单击右键弹出菜单    实例006 个性化的弹出菜单    实例007 任务栏托盘弹出菜单   1.3 工具栏应用实例    实例008 带背景的工具栏    实例009 带图标的工具栏    实例010 带下拉菜单的工具栏    实例011 可调整按钮位置的工具栏    实例012 XP风格工具栏    实例013 动态设置是否显示工具栏按钮文本    实例014 具有提示功能的工具栏   1.4 状态栏应用实例    实例015 带进度条的状态栏    实例016 动画效果的状态栏    实例017 滚动字幕的状态栏   1.5 导航界面应用实例    实例018 Outlook导航界面    实例019 树状导航界面    实例020 按钮导航界面    实例021 图片导航界面   1.6 界面窗体应用实例    实例022 使用位图设计畸形界面    实例023 椭圆形的程序界面    实例024 自绘窗体界面    实例025 以时钟显示界面    实例026 窗体融合技术    实例027 限制对话框最大时的窗口大小    实例028 分割视图窗口    实例029 对话框全屏显示   1.7 多媒体宣传光盘应用实例    实例030 多媒体宣传光盘主界面    实例031 自动运行的多媒体宣传光盘   1.8 多媒体触摸屏程序应用实例    实例032 采购中心多媒体触摸屏程序    实例033 为触摸屏程序添加虚拟键盘   1.9 窗体位置应用实例    实例034 不可移动的窗体    实例035 始终在最上面的窗体    实例036 以动画形式显示窗体    实例037 磁性窗体   1.10 窗体标题栏应用实例    实例038 闪烁的窗体标题栏    实例039 拖动没有标题栏的窗体    实例040 禁用标题栏上的最大化、最小化或关闭按钮   1.11 窗体形状及应用    实例041 半透明窗体    实例042 创建字型窗体    实例043 设计桌面精灵   1.12 通用对话框的应用    实例044 打开位图预览对话框    实例045 打开Windows新型对话框    实例046 同时选择多个文件    实例047 文本替换对话框    实例048 字体选择对话框  第2章 控件应用   2.1 按钮控件典型实例    实例049 AVI动画按钮    实例050 GIF动画按钮    实例051 图文按钮    实例052 不规则按钮    实例053 热点按钮   2.2 编辑控件典型实例    实例054 为编辑框设置新的系统菜单    实例055 为编辑控件添加列表选择框    实例056 多彩边框的编辑框    实例057 改变编辑框文本颜色    实例058 不同文本颜色的编辑框    实例059 位图背景编辑框   2.3 静态文本控件典型实例    实例060 电子计时器    实例061 使用静态文本控件设计群组框    实例062 制作超链接控件   2.4 列表框控件典型实例    实例063 利用列表框控件实现标签式数据选择    实例064 具有水平滚动条的列表框控件    实例065 列表项的提示条    实例066 位图背景列表框控件   2.5 组合框控件典型实例    实例067 将数据表中的字段添加到组合框控件    实例068 带查询功能的组合框控件    实例069 自动调整组合框的宽度    实例070 颜色组合框    实例071 多列显示的组合框    实例072 带图标的组合框    实例073 显示系统盘符组合框   2.6 列表视图控件典型实例    实例074 Windows资源管理器    实例075 利用列表视图控件浏览数据    实例076 利用列表视图控件制作导航界面    实例077 在列表视图中拖动视图项    实例078 具有排序功能的列表视图控件    实例079 具有文本录入功能的列表视图控件    实例080 使用列表视图设计登录界面   2.7 树视图控件典型实例    实例081 多级数据库树状结构数据显示    实例082 节点拖动功能的树控件    实例083 带复选功能的树状结构    实例084 三态效果树控件    实例085 修改树控件节点连线颜色    实例086 位图背景树控件    实例087 显示磁盘目录    实例088 树型提示

16,547

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧