偶在CMyStatic(继承CStatic)中做画图,在CMyStatic中添加了水平滚动条和垂直滚动条的消息处理函数,可执行程序后水平和垂直动条都不响应相应的消息,用鼠标点滚动条的哪个地方也点不动,好象是没使能一样,不知怎么回事,望大家帮忙
解决方案 »
- DLL和ActiveX问题
- 【急!急!急!】小白求助!关于下载程序的问题。
- MFC中能不能用CString类代替char
- 关于CGfxOutBarCtrl的问题(高手请进)
- 两种写法那个好啊,为什么
- 菜鸟头好大,请帮我看看下面的VC++出错信息应该怎么解决???
- 定义了一个CComBSTR m_fBstr,用&m_fBstr取地址时,编译器认为是一个unsigned short**,why?
- 大虾们送分题!!整型变量转换。。。
- 请教各位达人~怎么使用GPU来加速JPEG的解码?
- 哪位能给一个皮肤编程的例子(mfc) 收到给分 email: [email protected]
- 滚动条的问题(各位大哥帮帮我)
- 请问:需要滚动的范围很大,滚动条怎么设定
http://www.codeguru.com/cpp/controls/listview/backgroundcolorandimage/article.php/c4185/
如果想象CScrollView那样做,就只有GetScrollPosition,SetWindowOrg了
void CMyStatic::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
MessageBox("ok"); CStatic::OnHScroll(nSBCode, nPos, pScrollBar);
}
BOOL CMyStatic::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Add your specialized code here and/or call the base class
cs.style=cs.style|WS_HSCROLL|WS_VSCROLL;
return CStatic::PreCreateWindow(cs);
}我觉得既然窗体能显示出滚动条,就应该能够用它呀
typedef struct tagSCROLLINFO { // si
UINT cbSize;
UINT fMask;
int nMin;
int nMax;
UINT nPage;
int nPos;
int nTrackPos;
} SCROLLINFO;
typedef SCROLLINFO FAR *LPSCROLLINFO
SetScrollInfo( int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE );
你都没有设置它的范围应该不会响应吧?
SCROLLINFO si ;
si.cbSize = sizeof (si) ;
si.fMask = SIF_RANGE | SIF_PAGE ;
si.nMin = 0 ;
si.nMax = 80;//NUMLINES - 1 ;
si.nPage = 20;//cyClient / cyChar ;
SetScrollInfo (SB_VERT, &si, TRUE) ;
然后又这样试了一下
nHScrollMax=1000;//2*m_hScreen;
nHScrollPos=50;
SetScrollRange(SB_VERT,0,nHScrollMax,TRUE);
SetScrollPos(SB_VERT,nHScrollPos);
//SetScrollInfo
UpdateWindow();
都是不行难道就不能用CStatic的滚动条,只能用滚动条控件来,实现滚动功能吗?
STN_CLICKED
STN_DBLCLK
STN_DISABLE
STN_ENABLE
WM_CTLCOLORSTATIC
所以是不能响应Scrollbar的消息的,也就是说,用style| WS_VSCROLL也只是让滚动条显示出来,而并不能真正的使用它。
目前我探索的研究方案有两个,都不简单。一种是在CLICK函数中判断鼠标位置与scrollbar位置,自己来模拟这个scroll过程,另一个方案就是上面几个朋友说的在旁边加一个scrollbar控件,然后处理它的滚动消息来改变static的内容。后面这个简单点~不过前面那个对付特殊需要的时候还是有用的,我查阅资料的过程中就发现有人要实现这个功能还要让spy++找不出别的控件~:)
希望我的劳动让我自己受益的同时也给楼主一些帮助。
不响应paint,mousemove 以及mouseover消息
以及麻木了:)