如何在对话框上加一个滚动条 我在一个对话框里面要加入许多的文本框,我想让对话框的右边设置一个滚动条。滚动时显示下面的文本框。请问怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CFormView就是带滚动条的,可以参考。你直接设置对话框的窗口风格为WS_VSCROLL use tabs or child dialogs http://topic.csdn.net/t/20030703/20/1988132.html 在对话框资源上设置竖滚动条风格,再响应WM_VSCROLL消息做响应的处理。 做成属性页的那样子或用CTabCtrl 直接加上WS_VSCROLL风格也行 void CVC_Test5Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください int nScrollMin; //スクロール最小位置 int nScrollMax; //スクロール最大位置 int nScrollPos; //スクロール現在位置 int nPageSize; // ページ長さ if( &m_sroDatahyouji != pScrollBar ) { return; } nScrollPos = m_sroDatahyouji.GetScrollPos(); m_sroDatahyouji.GetScrollRange(&nScrollMin, &nScrollMax); int nRows = 显示数据的行数; if( nRows % m_nShowDataCount == 0 ) { nPageSize = nRows / m_nShowDataCount ; } else { nPageSize = nRows / m_nShowDataCount + 1; } switch( nSBCode ) { case SB_TOP: //一番上までスクロール nScrollPos = nScrollMin; break; case SB_BOTTOM: //一番下までスクロール nScrollPos = nScrollMax; break; case SB_LINEUP: //1 行上へスクロール nScrollPos -= 1; break; case SB_LINEDOWN: //1 行下へスクロール nScrollPos += 1; break; case SB_PAGEUP: //1 行下へスクロール nScrollPos -= nPageSize; break; case SB_PAGEDOWN: //1 ページ下へスクロール nScrollPos += nPageSize; break; case SB_THUMBPOSITION: //絶対位置へスクロール nScrollPos = nPos; ////nPosからスクロールの現在位置を取得 break; case SB_THUMBTRACK: //指定位置へスクロール ボックスをドラッグ nScrollPos = nPos; //nPosからスクロールの現在位置を取得 break; case SB_ENDSCROLL: //終了時の処理 m_nScrollPos = nScrollPos; 处理函数。 break; } if( nScrollPos < nScrollMin ) { nScrollPos = nScrollMin; } if( nScrollPos > nScrollMax ) { nScrollPos = nScrollMax; } if( nScrollPos != m_sroDatahyouji.GetScrollPos() ) { m_sroDatahyouji.SetScrollPos(nScrollPos); //スクロールの新しい位置をセット } CDialog::OnVScroll(nSBCode, nPos, pScrollBar);} 做成属性页的那样子或用CTabCtrl 直接加上WS_VSCROLL风格也行这样基本能解决你的问题 dlg上一个picture box显示不同图片,用到CImageList 高分求救,怎么在mainframe调用其它视图的onfileprint()函数???? 界面问题 问:在二级窗口中画图的问题 关于U盘的一些问题! 关于线程的基本问题 怎样用线程画实时波形? 怎样在类间传递一结构参数? 请教,灰度均衡问题 本人是个菜鸟,希望高手告诉我邮件编程的原理 写了个控件,从CWnd派生的,这个控件如何响应一些快捷键,如上,下左,右等? 如何通过插件方式取到office模板文件的全路径???
直接加上WS_VSCROLL风格也行
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
int nScrollMin; //スクロール最小位置
int nScrollMax; //スクロール最大位置
int nScrollPos; //スクロール現在位置
int nPageSize; // ページ長さ
if( &m_sroDatahyouji != pScrollBar )
{
return;
}
nScrollPos = m_sroDatahyouji.GetScrollPos(); m_sroDatahyouji.GetScrollRange(&nScrollMin, &nScrollMax); int nRows = 显示数据的行数;
if( nRows % m_nShowDataCount == 0 )
{
nPageSize = nRows / m_nShowDataCount ;
}
else
{
nPageSize = nRows / m_nShowDataCount + 1;
}
switch( nSBCode )
{
case SB_TOP: //一番上までスクロール
nScrollPos = nScrollMin;
break;
case SB_BOTTOM: //一番下までスクロール
nScrollPos = nScrollMax;
break;
case SB_LINEUP: //1 行上へスクロール
nScrollPos -= 1;
break;
case SB_LINEDOWN: //1 行下へスクロール
nScrollPos += 1;
break;
case SB_PAGEUP: //1 行下へスクロール
nScrollPos -= nPageSize;
break;
case SB_PAGEDOWN: //1 ページ下へスクロール
nScrollPos += nPageSize;
break;
case SB_THUMBPOSITION: //絶対位置へスクロール
nScrollPos = nPos; ////nPosからスクロールの現在位置を取得
break;
case SB_THUMBTRACK: //指定位置へスクロール ボックスをドラッグ
nScrollPos = nPos; //nPosからスクロールの現在位置を取得
break;
case SB_ENDSCROLL: //終了時の処理
m_nScrollPos = nScrollPos;
处理函数。
break;
} if( nScrollPos < nScrollMin )
{
nScrollPos = nScrollMin;
}
if( nScrollPos > nScrollMax )
{
nScrollPos = nScrollMax;
} if( nScrollPos != m_sroDatahyouji.GetScrollPos() )
{
m_sroDatahyouji.SetScrollPos(nScrollPos); //スクロールの新しい位置をセット
}
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
直接加上WS_VSCROLL风格也行
这样基本能解决你的问题