问一个傻傻的问题:怎么在对话框中使用CScrollView

william_008 2003-06-12 05:23:15
在对话框中做一个波形显示的窗口,想用带滚动条的窗口来实现,于是想从CScrollView继承过来,但不知道这么让CMyScroollView显示,请高手指教
谢谢!
...全文
19 点赞 收藏 7
写回复
7 条回复
BinaryPoet 2003年06月14日
贴子的id是http://expert.csdn.net/Expert/topic/1802/1802541.xml?temp=.8919794
回复 点赞
BinaryPoet 2003年06月14日
呵呵,你要将CCreateContext的m_pCurrentDoc 填入一个CDocument的实例——new 一个就可以。
另外,CDialog 可以直接强制转化成CFrameWnd。
在这个版面,我曾经回答过“怎样在对话框内创建一个视图”的问题,还算详细。
回复 点赞
william_008 2003年06月12日
谢谢BinaryPoet(二进制诗人) !
原来一直没注意到CCreateContext,高人提醒之后,看了看它的MSDN说明文档,基本明白要点了。但还请问:如果没有Doc,没有Frame window,view就不能单独创建吗?
回复 点赞
BinaryPoet 2003年06月12日
NO! 得用CCreateContext
回复 点赞
qinghero 2003年06月12日
up
回复 点赞
william_008 2003年06月12日
映射模式的问题倒没遇上,不过我问题是不知道怎么显示他。是不是先先声明一个实例,然后调用它的Create函数才能显示啊?
回复 点赞
BinaryPoet 2003年06月12日
原因出在这里:
你必须重载CMyScrollView::OnPrepareDC()函数,否则,就会调用CScrollView::OnPrepareDC。
然而,viewscl.cpp中有下述代码:(第130~136行)
if (m_nMapMode == MM_NONE)
{
TRACE0("Error: must call SetScrollSizes() or SetScaleToFitSize()");
TRACE0("\tbefore painting scroll view.\n");
ASSERT(FALSE);
return;
}
所以,你必须要设置映射模式。当然,如果你要图省事的话,将CMyScrollView::OnPrepareDC()函数清空就可以了。
回复 点赞
发动态
发帖子
界面
创建于2007-09-28

7976

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告