【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 ...
随机推荐
- 强制数据类型转换之Number类型
㈠强制类型转换 1.定义:指将一个数据类型强制转换为其他的数据类型 类型转换主要指,将其他的数据类型,转换为String ,Number, Boolean ㈡将其他的数据类型转换为Number ...
- 什么是URL百分号编码?
㈠什么是URL 统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法. ㈡URL编码 url编码是一种浏览器用来打包表单输入 ...
- 【Python之路】特别篇--Python正则表达式
正则表达式的基础 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大. 得益于这一点 ...
- 【C#】图片处理(底片,黑白,锐化,柔化,浮雕,雾化)
https://www.cnblogs.com/bomo/archive/2013/03/01/2939453.html --------------------------------------- ...
- 解压 压缩 C#
public class SharpZip { public SharpZip() { } /// <summary> /// 压缩 /// </summary> /// &l ...
- [SCOI2009]windy数 代码 (对应数位dp入门)
Code1 (DP版) #include<bits/stdc++.h> #define in(i) (i=read()) using namespace std; int read() { ...
- 白鹭引擎EUI做H5活动 入门篇
前言:本学习文档的目的是为了实现h5,或者简单的h5游戏,比如说,我们要实现一个可以左右,或者上下移动的场景的h5,在场景移动的过程中,会有相应的动画或者操作,我们通过 js 也可以实现,但是为了流畅 ...
- [BZOJ1123]:[POI2008]BLO(塔尖)
题目传送门 题目描述 Byteotia城市有n个towns.m条双向roads.每条road连接两个不同的towns,没有重复的road.所有towns连通. 输入格式 输入n,m及m条边. 输出格式 ...
- linux shell 之流程控制 if if else while
(1)流程控制不可以为空: (2)if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi 条件 ...
- Zjoi2010排列计数Perm
这东西还是挺有思想的,道听途说一些东西,问问DuanYue同志,然后自己打表画树推了推,就搞出来了. 首先根据p i>p i/2(向下取整)这种形式,如果线段树学的好的人,一定能看出来,这是在唯 ...