vs2010中在输出窗口COutputWnd中输出文字和自动滚动
2013-10-18 17:30
369 查看
最近在尝试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中自定义函数。
这就完成了给输出窗口添加文字的功能。但是如果只是添加文字,输出窗口会保持同样位置,必须手动滑动条,才能看到新输出的文字。这是就采用消息的办法,让滚动条自动滚到最下面,这种办法比网上看到的方法都简单。
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; }
这就完成了给输出窗口添加文字的功能。但是如果只是添加文字,输出窗口会保持同样位置,必须手动滑动条,才能看到新输出的文字。这是就采用消息的办法,让滚动条自动滚到最下面,这种办法比网上看到的方法都简单。
相关文章推荐
- YII开发技巧分享——模型(models)中rules自定义验证规则
- JAVA/PHP服务器端获取客户端IP
- PHP日期格式转时间戳
- PHP根据文件头检测文件类型
- PHP在函数体中传递与接收参数
- php单元测试的安装与使用
- PHP自动判断字符集并转码
- 用PHP实现游戏中的一些常见功能
- 一种奇特的DEDE隐藏后门办法(dedecms漏洞90sec.php文件)
- thinkphp 下widget扩展的使用
- 从几个简单的程序看PHP的垃圾回收机制
- 递归遍历PHP多维数组
- Laravel ORM 数据model操作
- SUSE 11 FTP
- STP (802.1d)
- STP (802.1d)
- VTP小结
- FTP知识集锦
- FTP知识集锦
- php生成xml文件方法