VC++深入详解:在窗口中显示按钮(2)
2008-11-24 19:38:15 来源:WEB开发网例3-26
int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_btn.Create("按钮",WS_CHILD | BS_DEFPUSHBUTTON,CRect(0,0,100,100), this,123);
m_btn.ShowWindow(SW_SHOWNORMAL);
return 0;
}
编译并运行Test程序,结果如图3.28所示。
图3.28 在视窗口中显示按钮
我们可以看到按钮显示出来了,但位置发生了变化。因为这时给按钮的Create函数传递的this指针指向的是CTestView类的对象,因此,这时按钮的父窗口就是视类窗口,所以按钮在视窗口的客户区中显示。如果这时仍想让按钮的父窗口为CMainFrame类窗口,即视类窗口的父窗口,可以调用GetParent函数来获得视类的父窗口对象的指针,并将该指针传递给按钮的Create函数。这时的CTestView类OnCreate函数定义代码如例3-27所示。
例3-27
int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_btn.Create("按钮",WS_CHILD | BS_DEFPUSHBUTTON, CRect(0,0,100,100), GetParent(), 123);
m_btn.ShowWindow(SW_SHOWNORMAL);
return 0;
}
更多精彩
赞助商链接