【框架-MFC】CView(chenlu-1):重写CView,将CView的放在某控件的位置

 

class CMYView : public CView
{
	DECLARE_DYNCREATE(CMYView)

protected:
	CMYView();           // 动态创建所使用的受保护的构造函数
	virtual ~CMYView();
public:
	virtual void OnDraw(CDC* pDC);      // 重写以绘制该视图
	DECLARE_MESSAGE_MAP()
};

void CVectorView::OnDraw(CDC* pDC)
{
	CRect rc;
	//当前的位置
	GetClientRect(&rc);
	//pDC->MoveTo(p1);
	//pDC->LineTo(p2);
}
#define  IDD_DIALOG_MY 98989 //Dlg的ID
#define  IDC_DRAW_VIEW 10983 //临时控件ID
class CMYDlg : public CDialog
{
	DECLARE_DYNAMIC(CMYDlg)

public:
	CMYDlg(CWnd* pParent = NULL);   // 标准构造函数
	virtual ~CMYDlg();

	// 对话框数据
	enum { IDD = IDD_DIALOG_MY };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
	DECLARE_MESSAGE_MAP()
	CMYView* m_pMyView;
	virtual BOOL OnInitDialog();
private:
	void SetViewPosition();
	CRect  m_rcVector;
};

BOOL CMYDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	SetViewPosition();
	return TRUE;
}
void CMYDlg::SetPlotPosition()
{
	CWnd *pTmpWnd = GetDlgItem(IDC_DRAW_VIEW);
	if(pTmpWnd)
	{
		pTmpWnd->GetWindowRect(&m_rcVector);
		ScreenToClient(&m_rcVector);
	}

	CCreateContext context;
	CWnd* pParentWnd= this; 
	//DYNAMIC_DOWNCAST将CDYBitDoc转换成CDocument转换失败为NULL
	context.m_pCurrentDoc= DYNAMIC_DOWNCAST(CDYBitDoc,GetCurrentDoc());//将在其上创建视图的文档
	context.m_pNewViewClass= RUNTIME_CLASS(CMYView);//待创建的视图的CRuntimeClass
	//在父窗口上创建View
	m_pMyView= (CMYView*)((CFrameWnd*)pParentWnd)->CreateView(&context);
	//判断m_pMyView是否可用
	ASSERT(m_pMyView);
	//将临时空间隐藏
	pTmpWnd->ShowWindow(SW_HIDE);
	//将要显示的view显示
	m_pMyView->ShowWindow(SW_NORMAL);
	//将要显示的窗口移动到临时窗口的位置
	m_pMyView->MoveWindow(m_rcVector);
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值