怎么在水平滚动条的左边加一个按钮?就是让滚动条“让出”一点地方给一个button?默认全占满了啊!
按钮不能放在客户区,因为视图移动的时候按钮也要不动
我想加在滚动条旁边,以前见过这种效果的,不知道怎么做
问题点数:100、回复次数:13Top
1 楼huwei001982(michaelhuwei.cnblogs.com)回复于 2004-12-02 13:46:30 得分 20
重载 CScrollView 类 ?Top
2 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 13:50:20 得分 0
我们以前做的软件有这个功能。不过不是我做的。Top
3 楼lzzqqq(Jonersen)回复于 2004-12-02 13:50:49 得分 10
估计要自己封装CScrollView.
Top
4 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 13:50:52 得分 0
好像是先获取水平滚动条对象,然后用SetWindowPos之类的修改它的位置。Top
5 楼pleasehelpme(革命尚未成功,同志仍需努力)回复于 2004-12-02 14:02:52 得分 10
一定要这样做吗?
关注。。Top
6 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 14:08:09 得分 0
我找找源程序是怎么做的。我们以前做的效果很好。水平和垂直的滚动条上都加了按钮。Top
7 楼yzhshty(中共日本省省委书记)回复于 2004-12-02 14:15:39 得分 0
pleasehelpme(革命尚未成功,同志仍需努力)
还有什么办法呢?不能让按钮随着view乱跑啊
是sdi工程的,而且工具栏和菜单都不可以用的
happyparrot(快乐鹦鹉)
谢谢你拉!高顶了分全给你!
Top
8 楼yzhshty(中共日本省省委书记)回复于 2004-12-02 14:16:16 得分 0
还有,我的是从cview继承的Top
9 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 14:17:44 得分 0
找到源程序了:
void CMagView::_HScrollBarOnSize(BOOL bModifyYBar)
{
CChildFrame* pFrame = (CChildFrame*)GetParentFrame();
ASSERT(pFrame != NULL);
CHRuler* pHRuler=(CHRuler*)pFrame->GetDlgItem(ID_VIEW_HRULER);
//int iJustPos=pHRuler->IsWindowVisible()?20:0;
int iJustPos=pFrame->m_iJustPos;
CScrollBar* pHBar=GetScrollBarCtrl(SB_HORZ);
CWnd* pParent=pHBar->GetParent();
CRect rect;
GetClientRect(rect);
int iWidth=rect.right-rect.left;
pHBar->GetWindowRect(rect);
pParent->ScreenToClient(rect);
int iHeight=rect.bottom-rect.top;
pHBar->SetWindowPos(NULL,
pFrame->m_wndPage.m_Width-iJustPos+2,
rect.top,
iWidth+iJustPos-pFrame->m_wndPage.m_Width,
iHeight,
SWP_NOZORDER );
if(bModifyYBar){
CScrollBar* pVBar=GetScrollBarCtrl(SB_VERT);
pParent=pVBar->GetParent();
pVBar->GetWindowRect(rect);
pParent->ScreenToClient(rect);
pVBar->SetWindowPos( NULL,
rect.left,
2,
rect.right-rect.left,
rect.bottom-rect.top+7,
SWP_NOZORDER );
}
}
这里pFrame->m_wndPage是个子窗体,用来放一些按钮。窗体的高度等于滚动条高度。Top
10 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 14:19:55 得分 0
CScrollBar* pHBar=GetScrollBarCtrl(SB_HORZ);
这里我要说明一下,GetScrollBarCtrl(SB_HORZ)只能在拆分窗口中使用。因此你的VIEW必须是个拆分窗口。如果你只需要一个窗口,那么有个技巧:先创建拆分窗口,然后将其中一个窗口的大小和位置设置到屏幕上看不到的位置就可以了。我们以前就是这么做的。然后通过这个函数就可以获取横向和纵向滚动条对象指针了。Top
11 楼yzhshty(中共日本省省委书记)回复于 2004-12-02 14:50:02 得分 0
只能是拆分窗口啊?
我的工程很大,是sdi的,改成你说的哪个样子会不会很难Top
12 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 14:55:35 得分 60
不是拆分窗口的话,好像难以获取滚动条指针阿。而且拆分窗口也不难阿。Top
13 楼yzhshty(中共日本省省委书记)回复于 2004-12-02 15:04:26 得分 0
关键是工程太大,怕万一出什么问题~小弟今年才毕业,功力太浅,不敢有太大的动作呵呵~~
我先试试
谢谢!!!!Top




