最近在尝试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中自定义函数。

 copy

  1. //自定义停靠对话框中的消息处理函数
  2. void CMyPanDiag::OnBnClickedButtonOutput()
  3. {
  4. // TODO: 在此添加控件通知处理程序代码
  5. UpdateData(TRUE);
  6. CMainFrame * pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
  7. pMain->AddStrOutputDebugWnd(m_strOutput);//调用CMainFrame中的自动以函数,m_strOutput是编辑框的变量
  8. }
  1. // 给OutputWnd的Debug窗口添加字符串
  2. int CMainFrame::AddStrOutputDebugWnd(CString str)
  3. {
  4. m_wndOutput.AddDebugString(str);
  5. return 0;
  6. }
 copy

  1. // 给Debug窗口添加文字
  2. int COutputWnd::AddDebugString(CString str)
  3. {
  4. //添加文字
  5. m_wndOutputDebug.AddString(str);
  6. //自动滚动
  7. m_wndOutputDebug.SendMessage(WM_VSCROLL,SB_BOTTOM);
  8. return 0;
  9. }

这就完成了给输出窗口添加文字的功能。但是如果只是添加文字,输出窗口会保持同样位置,必须手动滑动条,才能看到新输出的文字。这是就采用消息的办法,让滚动条自动滚到最下面,这种办法比网上看到的方法都简单。

最新文章

  1. MVVM大比拼之knockout.js源码精析
  2. Connect to Database Using Custom params链接数据库配置参数说明
  3. C语言程序设计进阶 第1周编程题
  4. stdcall, cdecl, pascal 区别(转载)
  5. CentOS下crond定时任务详细介绍
  6. php中的字符串常用函数(四) ord() 获得字符的ascii码 chr()获取ascii码对应的字符
  7. unity3d基础02
  8. org.springframework.util.Assert
  9. 你用哪种工具进行iOS app自动化功能测试?
  10. Java Web编程的主要组件技术——Struts的高级功能
  11. ViewPager的简单例子
  12. hdoj 2047 简单递推
  13. 对CNN模块的分析
  14. C#传递参数大集合
  15. C#版-百度网盘API的实现(一)
  16. kubernetes 条件需求
  17. MyBatis - 10.MyBatis扩展
  18. 【Git】git pull和git pull --rebase的使用
  19. 由 UWP 版网易云音乐闪退引发的博文
  20. patch-test-and-proc

热门文章

  1. Java-Base64Fiend工具类
  2. 【leetcode】1287. Element Appearing More Than 25% In Sorted Array
  3. 中国剩余定理及其拓展 CRT&EXGCD
  4. AcWing:148. 合并果子(哈夫曼树)
  5. Oracle For Linux
  6. linux开机执行脚本
  7. Linux上Python的安装升级
  8. Instances cannot be resolved and nested lifetimes cannot be created from this LifetimeScope as it has already been disposed.
  9. SQL Server 数据库设计、命名、编码规范
  10. Cortex-M3 异常返回值EXC_RETURN