编辑:说三道四文库 发布时间:2018-04-26 02:33
HTML文档下载
WORD文档下载
PDF文档下载
起用了对话框的垂直滚动条,重载了OnVScroll,但进入不了OnVScroll方法。
void OnVScroll(UINT nSBCode,UINT nPos,CScrollBar *pScrollBar);
void CMainMenuDlgI::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
switch (nSBCode)
{
case SB_LINEUP:
ScrollWindow(0,-10,NULL,NULL);
break;
case SB_LINEDOWN:
ScrollWindow(0,10,NULL,NULL);
break;
default:
break;
}
}
在初始化的地方先调用下:SetScrollInfo。
关注
我是用拖控件的方式创建一个对话框,当控件超出屏幕时,不会自动纵向弹出滚动条,请问怎么实现滚动条功能?
关注
顶
在创建对话框的时候,可能样式没有选择滚动条
1.sp下资源编辑器中将对话框的属性vertical scrollbar设置为true. 会自动滚动。
2.PPC下即使你设置了上面的属性也不会自动滚动,所以其实可以不设置,
否则一开始就能看到滚动条,即使你的对话框大小并没有超过屏幕。
推荐如下操作:
(1)OnInitiaDialog的时候,SetScrollInfo()直接设置你想要的滚动条大小(包括max/min/page/pos等)
(2)WM_VSCROLL 的处理,在这里边实现窗口的滚动。
滚动窗口的话,用ScrollWindowEx,对话框的话,ScrollWindowEx的flag参数设置为SW_SCROLLCHILDREN就OK。
(3)你可以在任何时候改变你的滚动条的参数,我一般是在OnSize中判断当前的软键盘是否弹出,以及当前的横屏状态然后设置滚动条的。
小规律:竖屏状态(软键盘没弹出),滚动条需要设置成n长度才可完全显示对话框,
则竖屏状态(软键盘弹出)需要设置滚动条为n+80,
然后横屏(没弹出)也为n+80,
然后横屏状态软键盘弹出为n+80+80,
谢谢
试了一下,不起作用,请问有示例代码吗
不起作用是什么意思?
窗口不滚动?
路过学习
窗口不滚动,请问有示例代码吗
前面说过的啊。PPC上窗口滚动是得自己手工实现的。
用ScrollWindowEx,如果是对话框的话,flag参数设置为SW_SCROLLCHILDREN,子控件才会一起移动,至于移动多少,是向上还是向下得自己计算。
我一般就是在WM_VSCROLL消息中,根据npos和设置好的滚动条的page来计算。
另外的,你现在捕捉到wm_vscorll消息了没?
同意sevenzhy大侠的观点。
最近本人恰好使用过对话框自带滚动条,基本上有这么3个步骤:
(1)静态设计对话框界面时,首先要设置属性vertical scrollbar为true
(2)在对话框初始化或者处理WM_SIZE消息时,设置滚动条的初始状态(min/max/page/pos).
设置的方法有两种,[1]通过SCROLLBAR的API函数[2]通过修改SCROLLINFO结构
(3)处理WM_VSCROLL消息,添加相应的事件处理,并滚动对话框
注意:如果仅仅滚动对话框本身,调用ScrollWindow即可;但是要滚动对话框上的子控件,请调用ScrollWindowEx函数。
附微软的例子:http://support.microsoft.com/kb/262954