更新时间:2016-01-29 21:18:18浏览次数:1+次
ModifyStyle,调用这个函数修改窗口的风格,此函数的厉害之处在于可以在窗口创建完成后修改窗口风格,虽然也有一些属性改不了。
BOOL ModifyStyle
(
DWORD dwRemove,
DWORD dwAdd,
UINT nFlags=0
);
dwRemove 指定修改时要删除的窗风格。BOOL CTest::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
this->ModifyStyle(0,WS_VSCROLL,0);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
运行之后,你会发现并没有滚动条,难道是这个函数有问题?遇到了所谓的函数局限性?然后我又测试了一遍,利用WS_MINIMIZEBOX风格,此时运行成功了,之后我在查了资料之后,发现,此函数需要添加一个函数才能显示出滚动条风格——ShowScrollBar。我们看看具体的代码:BOOL CTest::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
this->ShowScrollBar(SB_VERT);
this->ModifyStyle(0,WS_VSCROLL,0);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
运行之后,有了滚动条。
不过我们并没有因此就结束了这篇文章,下面我们来测试一个结构体,为我们的下篇文章提前准备好资料。
添加一个消息函数:void CTest::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int nCurpos,nMin,nMax,nThumbWidth;
SCROLLINFO siInfo;
GetScrollInfo(SB_VERT,&siInfo);
nCurpos = siInfo.nPos;
nMin = siInfo.nMin;
nMax = siInfo.nMax;
nThumbWidth = siInfo.nPage;
switch (nSBCode)
{
case SB_THUMBTRACK:
nCurpos = GetScrollPos(SB_VERT);
ScrollWindow(0,-(nPos-nCurpos));
SetScrollPos(SB_VERT,nPos);
break;
case SB_LINELEFT:
nCurpos = GetScrollPos(SB_VERT);
SetScrollPos(SB_VERT,nCurpos-1);
if (nCurpos !=0)
ScrollWindow(0,1);
break;
case SB_LINERIGHT:
nCurpos = GetScrollPos(SB_VERT);
SetScrollPos(SB_VERT,nCurpos+1);
if (nCurpos+nThumbWidth < nMax)
ScrollWindow(0,-1);
break;
case SB_PAGELEFT: //在滚动块的上方空白滚动区域单击,增量为6
SetScrollPos(SB_VERT,nCurpos-6);
if (nCurpos+nThumbWidth >0)
ScrollWindow(0,6);
break;
case SB_PAGERIGHT: //在滚动块的下方空白滚动区域单击,增量为6
SetScrollPos(SB_VERT,nCurpos+6);
if (nCurpos+nThumbWidth < nMax)
ScrollWindow(0,-6);
break;
case SB_LEFT:
SetScrollPos(SB_VERT,0);
ScrollWindow(0,nCurpos);
break;
}
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}
在nMin,nMax,nThumbWidth三个变量处设置断点,看看每个的值,经测试得到,nMin,nMax,nThumbWidth分别为0,100,0;在这里我需要特别强调下nThumbWidth,这个是我们的滑块大小,可是,它竟然为0,这是为什么?哈哈,憋急(还是喜欢东北人说这句,(⊙o⊙)…,我在东北读书,听人说惯了,还是挺有意思的)。在下篇文章中,我会为大家解释,这不是本篇的重点,重点已经完了,就是几句代码。相关资讯