MFC CSCrollview卷轴无法正常工作
MFC CScrollView scrolls not working
我是与MFC scrollview合作的新手,我在scrollview类的功能上显示大图。这是遵循代码的初始更新功能
void CCenterImageView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = m_matImage.cols;
sizeTotal.cy = m_matImage.rows;
SetScrollSizes(MM_TEXT, sizeTotal,sizeTotal);
}
void CCenterImageView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
//Invalidate();
}
void CCenterImageView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
UpdateData();
//Invalidate();
}
void CCenterImageView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CView::OnPaint() for painting messages
if(m_CVvImageObj.GetImage())
{
//this function blit the bitmap on the screen height and width are more than 1000 pixels
m_CVvImageObj.Show(dc.GetSafeHdc(),0,0,m_CVvImageObj.Width(),m_CVvImageObj.Height());
}
}
通过使用此http://www.functionx.com/visualc/views/scrollview.htm,我可以看到垂直和水平滚动,但按下它们不会在视图上更改任何内容。请指导我如何在用户点击上移动滚动并更改视图?
cscrollview的作用,好像您是在大型画布上绘画的那样,您使用setScrollsizes确定其尺寸。您设置的大小通常是整个图像的大小,最有可能大于显示的窗口。
然后,当您处理OnDraw时,您可以像完成的那样绘制整个图像,也可以仅绘制所显示的零件,您可以从GetClipbox中查找。后者仅对于效率是必要的,因为CSCrollview会夹住不可见的零件。
您根本不需要ONXSCroll处理程序。您应该将它们删除,然后让cscrollview处理滚动,如果您为滚动而做的一切。
。如果您的图像尺寸为> = 2^15,则会有问题,但这听起来不像您的情况。
您的代码看起来可疑(第三个参数)。但是,如果它与在32k上方滚动的问题有关,请参见知识库文章" PRB:CSCROLLVIEW滚动范围限制为32K"(文章ID:166473)。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 为什么STD ::计数将常数传递给Lambda,而不是在弦上工作时而不是字符
- C++程序已停止工作-求解常微分方程