【VS开发】OutputWnd自动滚动
最近在尝试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;
- }
这就完成了给输出窗口添加文字的功能。但是如果只是添加文字,输出窗口会保持同样位置,必须手动滑动条,才能看到新输出的文字。这是就采用消息的办法,让滚动条自动滚到最下面,这种办法比网上看到的方法都简单。
【VS开发】OutputWnd自动滚动的更多相关文章
- IOS开发UI篇之自动滚动图片
我们在做项目是有时候会遇到设置自动滚动图片,所以我自己也遇到过两次.觉得他是一个挺有意思东西,所以做了下总结 DEMO: .h #import <UIKit/UIKit.h> @inter ...
- Android文字跑马灯控件(文本自动滚动控件)
最近在开发一个应用,需要用到文本的跑马灯效果,图省事,在网上找,但老半天都找不到,后来自己写了一个,很简单,代码如下: import android.content.Context; import a ...
- 实现当UILable的内容超出其范围后自动滚动效果
本文主要介绍 [当UILabel的内容超出其自身的宽度范围后,进行互动展示的效果],我们先来看一下Demo的效果图. 实际实现起来并不十分繁杂,在这里,为了开发的效率,我们使用了一个已经封装好的UIL ...
- 界面为ScrollView时打开界面会自动滚动到底部之解决方法
开发中遇到了这样的一个问题,界面最外层是ScrollView,然后里面有嵌套了一个ListView还有其他可以获取焦点的View,然后每次打开界面都会自动滚动到最底部,经过一番折腾,发现了一个简单的方 ...
- 【原创】ListView快速滚动至新添加一行(自动滚动)
在C#开发中我们经常要开发一些日志系统,尤其是基于ListView的日志显示系统.但是当日志增多是你是否有一些困扰,就是它为什么不会自动滚动至最后一行. 以下是一小段代码,希望可以帮助你. publi ...
- Android点击列表后弹出输入框,所点击项自动滚动到输入框上方
使用微信的朋友圈会发现,点击某一条评论后输入框会弹出来,然后所点击的那一项会自动地滚动到输入框上方的位置,这样如果开始所点击的评论在屏幕很下方的话,就不会被输入框遮住,虽然微信这一点在我的MX2频繁点 ...
- iOS 图片轮播图(自动滚动)
iOS 图片轮播图(自动滚动) #import "DDViewController.h" #define DDImageCount 5 @interface DDViewContr ...
- Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]
有时候在xml中写的跑马灯效果不滚动:原因有以下 Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize=”marquee” 2.TextV ...
- EUI 自动滚动的聊天文本
一 自动滚动的聊天文本 当文本输入改变时,将scrollV值等于maxScrollV值. private scrollLabel:eui.Label; egret.Tween.).call(()=&g ...
随机推荐
- git回退错误的提交
提交代码导致冲突,执行merge后,冲掉其他人的提交.需要reset,并新建分支进行恢复 解决方法: 1.找到最后一次提交到master分支的版本号,即[merge前的版本号] 2.会退到某个版本号 ...
- 使用SpringSession和Redis解决分布式Session共享问题
SpringSession优势 遵循servlet规范,同样方式获取session,对应用代码无侵入且对于developers透明化 关键点在于做到透明和兼容 接口适配:仍然使用HttpServlet ...
- maven打断点报错
- Gym 100971D 单调栈
D - Laying Cables Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u ...
- 日照学习提高班day3测试
A 思路: 一看到'#''.'什么的就想到搜索怪我怪我... 这道题勉强说是搜索别打我qwq 1)因为不重复,所以首先要判断是否%5==0,若不满足,直接输出NO 2)弄个vis数组记录是否被搜过,如 ...
- codeforces269B
Greenhouse Effect CodeForces - 269B Emuskald is an avid horticulturist and owns the world's longest ...
- MySQL的安装教程
一.MYSQL的安装 首先登入官网下载mysql的安装包,官网地址:https://dev.mysql.com/downloads/mysql/ 一般下载这个就好,现在的最新版本是5.8,但是据说已经 ...
- 修改jupyter notebook的字体等样式
方法一 /lib/site-packages/notebook/static/custom/ 里面有个custom.css文件,你只要修改这个文件就可以了. /* jupyter notebook中显 ...
- C# WebServices 客户端服务端
一.编写一个WebService 开发环境:VS2012 1.编写webservice阶段 打开VS2012,新建一个空的web应用程序,我这里用的Framework版本是4.5的 新建好web应用程 ...
- python3笔记二十:时间操作time
一:学习内容 time时间戳 time元组 time字符串 time时间转换图解 二:time 需要引入:import time 1.概念 UTC(世界协调时间):格林尼治天文时间,世界标准时间,在中 ...