若要自己創建控件對象,通常要將 C++ 控件對象嵌入 C++ 對話框或框架窗口對象。與框架中的許多其他對象一樣,控件也需要兩步構造。作爲創建父對話框或框架窗口的一部分,應調用控件的 Create 成員函數。對於對話框,這通常在 OnInitDialog 中完成;對於框架窗口,則通常在 OnCreate 中完成。
下面的示例顯示如何在派生對話框類的類聲明中聲明 CEdit 對象,然後調用 OnInitDialog 中的 Create 成員函數。由於 CEdit 對象被聲明爲嵌入對象,它將在對話框對象構造時自動構造,但仍必須用它自己的 Create 成員函數初始化。
class CMyDialog : public CDialog
{
protected:
CEdit m_edit; // Embedded edit object
public:
virtual BOOL OnInitDialog();
};
下列 OnInitDialog 函數設置一個矩形,然後調用 Create 以創建 Windows 編輯控件 (Edit Control) 並將其附加到未初始化的 CEdit 對象。
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
CRect rect(85, 110, 180, 210);
m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
ES_AUTOHSCROLL | WS_BORDER, rect, this, 2);
m_edit.SetFocus();
return FALSE;
}
創建編輯對象後,還可以通過調用 SetFocus 成員函數設置控件的輸入焦點。最後從 OnInitDialog 返回 0,說明設置了焦點。如果返回非零值,對話框管理器將焦點設置爲對話框項列表中的第一個控件項。
-------------------------------------------------------------------------------------------------------------------------------------------------------