动态显示文本

cutrain2009 2009-07-18 11:01:47
我想用mfc 写一个小程序,可以显示键盘的消息,就是在接受WM_KEYDOWN,WM_CHAR,WM_KEYUP,可以在视图中显示是哪一种键盘消息,和它的3个参数,
比如我按下一个k键,会显示WM_KEYDOWN 75 1 37
同理,释放也是如此;
我将所有的要显示的数据放入m_strLog中,然后在OnDram中调用pDC->TextOut(0,0,m_strLog);来显示,可以实现所需功能,但是他不会在一行满后到下一行计入;

本人尝试用文本框或是编辑框控件来显示m_strLog中的数据,
我用对话框作为基础,在对话框中嵌入文本框或是编辑框,编辑框设置为只读,但是无法实现所需功能,
我在消息处理函数OnKeyDown()中嵌入AfxMessageBox(m_strLog);但是在调试的时候没有响应该消息,也就是我按键盘的按键的时候不处理该消息

哪位可否提点下,或是实现该功能,提供下完整工程,谢谢啦
...全文
191 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
huziwu 2009-07-21
  • 打赏
  • 举报
回复
想要换行,可以用"\r\n",至于为什么多了个\r,我也不清楚,反正我试过单独\n是不能实现换行的
例如:CString csStr = "abc\r\nefg";
显示结果为:
abc
efg
zjz800800 2009-07-21
  • 打赏
  • 举报
回复
已发,查收
zjz800800 2009-07-18
  • 打赏
  • 举报
回复
我手边没有vc,这样吧,你把你的问题描述发到我的电子信箱,我周一晚上才能接收,周二我给你做一个程序发到你信箱,我们公司上不了网,周二晚上我给你发过来,周三你查收,我的emal: software_zjz@163.com
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
可否具体点,我新手,
你看下问题的描述,
我用过这些控件,但碰到了新问题
zjz800800 2009-07-18
  • 打赏
  • 举报
回复
静态文本控件和文本编辑框原理一样,都是窗口,所以都可以实现
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
list来存放所有的消息,结点是一个消息数据CString
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
如果用一个list来存放每条消息,然后在OnDram里显示,这样可以实现,但是觉应该可以用更简单的方法,
为什么不能用静态文本控件或是只读的文本编辑框用作显示是呢
zjz800800 2009-07-18
  • 打赏
  • 举报
回复
我手边没有vc没法测试,不过我想换行用\n应该可以,如果不行的话用做个函数计算字符数最后用TextOut中第一个参数进行换行也可以
liuchaotao 2009-07-18
  • 打赏
  • 举报
回复
那就计算每行的字符数,然后用程序去完成换行
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
用\n没法换行,我有用过这种方法
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
你能看下问题描述吗,我是新手,
是显示问题,不是消息的处理
jingzhongrong 2009-07-18
  • 打赏
  • 举报
回复
你想换行,在每次写入m_strLog后添加一个\n
zjz800800 2009-07-18
  • 打赏
  • 举报
回复
CString strTemp;
strTemp = "sdfasdf\n";
CString strNext;
strNext = "asdfadf\n";
strTemp += strNext ;
手边没vc没测试,你试试看
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
每次都消息数据我用了m_strTemp来存放,
再用m_strLog+=m_strTemp来合并
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
m_strLog中存放了所有的数据,而不是一次消息的数据,即是从程序运行到结束的所有键盘数据,而不是一次按键消息的数据
liuchaotao 2009-07-18
  • 打赏
  • 举报
回复
也可以定义一个成员变量m_iRow,在OnKeyDown()中增加这个变量的值,然后在OnDraw中根据m_iRow来显示数据
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
不行,这样只会每次显示往后移动一个位置
liuchaotao 2009-07-18
  • 打赏
  • 举报
回复
错了,应该
static irow = 0;

pDC->TextOut(0,20*irow++,m_strLog);
cutrain2009 2009-07-18
  • 打赏
  • 举报
回复
定义一个静态的irow啥意思,还是不行,不会换行
liuchaotao 2009-07-18
  • 打赏
  • 举报
回复
static irow = 0;

pDC->TextOut(20*irow++,0,m_strLog);
加载更多回复(2)

16,551

社区成员

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

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

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