【VS开发】OutputWnd自动滚动
2024-10-21 10:37:31
最近在尝试VS2010中的各种新鲜插件,首先从最简单的输出窗口入手。
VS2010向导中产生的输出窗口是通过CMainFrame中的COutputWnd类的对象m_wndOutput生成的。为了向输出窗口输出文字,我自己做了一个悬浮停靠的对话框,具体方法网上参见http://blog.sina.com.cn/s/blog_6163bdeb0102dy8r.html
这个对话框上我加了一个简单的编辑框和输出按钮,点击输出按钮,在下面的输出窗口中输出文字并且自动滚动到最后一条。在此简单记录一下方法。
在输出窗口中输出文字是通过COutputWnd类中的对象COutputList m_wndOutputDebug来实现的。但是不论是COutputWnd中的m_wndOutputDebug还是CMainFrame中的m_wndOutput都是protected的。为了不破坏封装性,方法就是在CMainFrame和COutputWnd中添加函数。
有两种方法处理点击自动以对话框中”输出“按钮的消息,一种是在CMainFrame中处理,直接调用m_wndOutput,另一种就是在对话框类中处理。我采取的是后者,在对话框中处理消息,调用CMainFrame中自动定义函数,其中再调用COutputWnd中自定义函数。
- //自定义停靠对话框中的消息处理函数
- void CMyPanDiag::OnBnClickedButtonOutput()
- {
- // TODO: 在此添加控件通知处理程序代码
- UpdateData(TRUE);
- CMainFrame * pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
- pMain->AddStrOutputDebugWnd(m_strOutput);//调用CMainFrame中的自动以函数,m_strOutput是编辑框的变量
- }
- // 给OutputWnd的Debug窗口添加字符串
- int CMainFrame::AddStrOutputDebugWnd(CString str)
- {
- m_wndOutput.AddDebugString(str);
- return 0;
- }
- // 给Debug窗口添加文字
- int COutputWnd::AddDebugString(CString str)
- {
- //添加文字
- m_wndOutputDebug.AddString(str);
- //自动滚动
- m_wndOutputDebug.SendMessage(WM_VSCROLL,SB_BOTTOM);
- return 0;
- }
这就完成了给输出窗口添加文字的功能。但是如果只是添加文字,输出窗口会保持同样位置,必须手动滑动条,才能看到新输出的文字。这是就采用消息的办法,让滚动条自动滚到最下面,这种办法比网上看到的方法都简单。
最新文章
- MVVM大比拼之knockout.js源码精析
- Connect to Database Using Custom params链接数据库配置参数说明
- C语言程序设计进阶 第1周编程题
- stdcall, cdecl, pascal 区别(转载)
- CentOS下crond定时任务详细介绍
- php中的字符串常用函数(四) ord() 获得字符的ascii码 chr()获取ascii码对应的字符
- unity3d基础02
- org.springframework.util.Assert
- 你用哪种工具进行iOS app自动化功能测试?
- Java Web编程的主要组件技术——Struts的高级功能
- ViewPager的简单例子
- hdoj 2047 简单递推
- 对CNN模块的分析
- C#传递参数大集合
- C#版-百度网盘API的实现(一)
- kubernetes 条件需求
- MyBatis - 10.MyBatis扩展
- 【Git】git pull和git pull --rebase的使用
- 由 UWP 版网易云音乐闪退引发的博文
- patch-test-and-proc
热门文章
- Java-Base64Fiend工具类
- 【leetcode】1287. Element Appearing More Than 25% In Sorted Array
- 中国剩余定理及其拓展 CRT&;EXGCD
- AcWing:148. 合并果子(哈夫曼树)
- Oracle For Linux
- linux开机执行脚本
- Linux上Python的安装升级
- Instances cannot be resolved and nested lifetimes cannot be created from this LifetimeScope as it has already been disposed.
- SQL Server 数据库设计、命名、编码规范
- Cortex-M3 异常返回值EXC_RETURN