MFC对话框显示视图的问题..

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:21:41
之前用MFC写了个单文档的视图,有mainfrm,doc,view三个文件, 画图的代码在OnDraw()里, 现在有一个对话框,对话框中某个位置有一个方形框架, 想把之前做的单文档视图放到这个方框中显示..

天真的试过把视图代码直接复制过来.. 结果CInterfaceDoc* pDoc = GetDocument()这里出错, 又天真的把之前程序里的InterfaceDoc.cpp和InterfaceDoc.h加过来, 还是不行.. 是不是完全弄错方法了? 网上找了很久,根本找不到相关的讲解, 希望各位帮帮忙啊!!
就是类似这样的对话框,比如图中Big CheckBox 部分就是我说的对话框中的方框.. 如果要把之前MFC画的单文档视图放到方框中显示, 该怎么做? 谢谢!

CView不能直接构造,它跟 CDocument,CFrame都有关联,如果要把这个CView弄进来工作量非常大的。
你可以使用CView的代码
自定义一个CExWnd,控件,绘制部分控制部分都照CView。然后挂到CDialog里面去。

建议你不要这样做,因为对话框贴View需要进行一些额外设置的,此外还要用上Doc进行文件保存的话更复杂了.你需要系统学习下关于对话框与View、doc处理的有关知识点,才能灵活运用这种结构的应用程序.
目前情况下,推荐你使用CFormView.

界面做的再好也不如专业的啊。。用2008做吧。或者买BCGCB做一个~效果多好~

建议用子类化窗口
1在对话框要显示的地方放个picture来占位
2从CStatic中派生一个类如CShow
在CShow中处理WM_PAINT消息来完成在view中的所有绘画过程
3subDlgItem将picture子类化,显示绘画

在dlg里 的OnPaint()函数里改
void dlg::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);

CDC memDC;
CBitmap memMap;

memDC.CreateCompatibleDC(&dc);
//memMap.LoadBitmap(资源位图ID); //如果想贴图去掉该段的注释
//memDC.SelectObject(&memMap);
memDC.FillSolidRect(CRect(10,10,50,50), RGB(100,100,100));//填充你想要区域的颜色
memDC.SetTextColor(RGB(100,100,100));
memDC.TextOut(20,20,"Big Checkbox");

dc.BitBlt(rect.left, rect.top, rect.Width(), r