我想在单文档的窗口中显示控件,而不把它们放到对话框中,写了如下的程序,在OnDraw()中: CRect rect;
GetClientRect(&rect);
CTabCtrl Label;
if( !Label.Create( TCS_TABS | TCS_FIXEDWIDTH | WS_VISIBLE,
rect, this, 0x1006) )
{
AfxMessageBox("Label Create Error!");
}另外为什么msdn上写着:
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect, <---- 但这不能用 &rect ,却只能用 rect ???
...);
谢谢:)
GetClientRect(&rect);
CTabCtrl Label;
if( !Label.Create( TCS_TABS | TCS_FIXEDWIDTH | WS_VISIBLE,
rect, this, 0x1006) )
{
AfxMessageBox("Label Create Error!");
}另外为什么msdn上写着:
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect, <---- 但这不能用 &rect ,却只能用 rect ???
...);
谢谢:)
还有控件变量应该作为类成员变量出现,否则一旦OnCreate函数返回,你的控件就析构了最后,还应该响应WM_SIZE消息,like this:void CYourView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
youctrl.MoveWindow(0, 0, cx, cy);
}
}
.h 文件中 定义
CButton m_Button;
.cpp 文件中创建
int CTempView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_Button.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(10,10,100,30), this, 1); return 0;
}
用New或者在用类全局变量不要Create多次,保证在你的父窗口Create后任何时候Create你的控件一次就OK