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

william_008 2003-06-12 05:23:15
在对话框中做一个波形显示的窗口,想用带滚动条的窗口来实现,于是想从CScrollView继承过来,但不知道这么让CMyScroollView显示,请高手指教
谢谢!
...全文
66 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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()函数清空就可以了。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧