zoukankan      html  css  js  c++  java
  • 【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中自定义函数。

     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. }  
    这就完成了给输出窗口添加文字的功能。但是如果只是添加文字,输出窗口会保持同样位置,必须手动滑动条,才能看到新输出的文字。这是就采用消息的办法,让滚动条自动滚到最下面,这种办法比网上看到的方法都简单。
  • 相关阅读:
    20160419—JS备忘:服务器回发刷新页面提示重试的解决方案。
    JS备忘--子父页面获取元素属性、显示时间,iframe之间互相调用函数
    20160215--获取页面的高度和宽度
    20151013--设计模式六大原则(转载)
    20150915--文件下载
    20150909—Win10系统80端口被System占用
    GridView中实现CheckBox的全选
    Invoke和BeginInvoke的区别(转载)
    AJAX+图像验证码(一般处理程序)
    报表
  • 原文地址:https://www.cnblogs.com/huty/p/8518654.html
Copyright © 2011-2022 走看看