您的位置:首页 > 编程语言 > PHP开发

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中自定义函数。

//自定义停靠对话框中的消息处理函数
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;
}

这就完成了给输出窗口添加文字的功能。但是如果只是添加文字,输出窗口会保持同样位置,必须手动滑动条,才能看到新输出的文字。这是就采用消息的办法,让滚动条自动滚到最下面,这种办法比网上看到的方法都简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: