原来我是在自定义的类中,在单文档视图界面画图,是这么实现的://参数的含义:pDC——传入的设备句柄;rect——画图位置
CMyClass::display(CDC* pDC,CRect& rect)
{
//利用pDC、rect来画图
}
//这么调用
void CMyTestView::OnDraw(CDC* pDC)
{
CCTuopuTreeTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//绘制图形
CMyClass myClass; CRect wholeClient;
GetClientRect(&wholeClient); myClass.display(pDC,wholeClient);
}
现在我要改成:在自定义的类中,在单文档视图界面动态创建CButton。该怎么做呢?
注意:不能在自定义的类中,去获取单文档视图的任何东西(而必须利用传入的方式)。因为我的类将来是要被别人拿去调用的!
CMyClass::display(CDC* pDC,CRect& rect)
{
//利用pDC、rect来画图
}
//这么调用
void CMyTestView::OnDraw(CDC* pDC)
{
CCTuopuTreeTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//绘制图形
CMyClass myClass; CRect wholeClient;
GetClientRect(&wholeClient); myClass.display(pDC,wholeClient);
}
现在我要改成:在自定义的类中,在单文档视图界面动态创建CButton。该怎么做呢?
注意:不能在自定义的类中,去获取单文档视图的任何东西(而必须利用传入的方式)。因为我的类将来是要被别人拿去调用的!
解决方案 »
- vector使用
- 大家帮忙忙看看这段汇编代码是如何加密密码的??100分求!!
- 十二核CPU啥样 AMD推土机架构技术详解
- 无法定位程序输入点于动态链接库
- RadioButton的问题!
- 如何通过{D7B70EE0-4340-11CF-B063-0020AFC2CD35}得到一个等效的CLSID?
- 如何让单选按钮成组?
- 如何在CDialogBar中使用outlookBar
- 求教:给出封闭图形的坐标,计算其面积的算法
- 遍历文件夹
- 新建一个MFC(exe)工程时,出现编辑窗口,如:1.rc - IDD_MY1_DIALOG(Dialog),将该窗口关闭以后,如
- win98 下和WIN2000下DLL的调用有什摸不同???
CMyClass::SetParentWindow(CMyTestView pView)
{
m_pView = pView;
}
CMyClass::CreateButton()
{
if(m_pView == NULL)
return;
CButton button;
button.Create(m_pView,CRect(100,100,200,200),....)
}
{
CButton button[x];
CRect rc[x];
...... BOOL bSuccess = TRUE; for(int i = 0; i < x; ++ i)
{
// set rc[i]
// ...... bSuccess = button[i].Create(......, rc[i], pParentWnd, ID_BUTTONBASE + i);
if(!rb) break;
} return bSuccess;
}别人用你的类时,要创建button,只要传入窗口指针(或者还有caption、rect等等,根据你的需要定义接口),就可以了
CMyClass::display(CWnd* pWnd,CRect& rect)
{
//利用pWnd、rect来动态创建按钮
}
CMyTestView中怎么调用呢?
void CMyTestView::调用函数()
{
CMyClass myClass; //如何得到CView的窗体句柄?
CWnd* pWnd=????
CRect wholeClient;
GetClientRect(&wholeClient); myClass.display(pWnd,wholeClient);
}
可以吗?快点啊,我要结帐了
{
....
myClass.display(this,wholeClient)
}
中把this指针传入你的类就行了
{
CMyClass myClass; CRect wholeClient;
GetClientRect(&wholeClient); myClass.display(this, wholeClient);
}