2012-07-18 130 views
0

如果有人能幫助我,我將不勝感激。我試圖創建一個對話框,其中有一個文本框用於接收錯誤消息。我已將ON_WM_CREATE添加到消息映射中,並編寫了調試通過的此函數,但該對象不顯示。CDialogEx對象中的MFC CEdit對象

int CImportDatatoAPMDlg::OnCreate(LPCREATESTRUCT LpCreateStruct) 
{ 
    if(CWnd::OnCreate(LpCreateStruct) == -1) 
    { 
     return -1; 
    } 
    CEdit *MessageBox = new CEdit; 

    MessageBox->Create(WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL,CRect(100, 200, 450, 150), this, 0x1552); 

    return 0; 
} 

當我設計對話框時,是否必須製作一個虛擬框?我已經完成了其餘的控制?我也想知道我在哪裏給這個對象一個數字ID組合?

謝謝, 詹姆斯

回答

1

通常應當使用VisualStudio的資源編輯器控件添加到您的對話框。如果你想手動做,然後在你的覆蓋OnInitDialog方法中創建和添加控件:

BOOL CImportDatatoAPMDlg::OnInitDialog() { 
BOOL bRes = CDialog::OnInitDialog(); 

    CEdit *MessageBox; // !!! put it into class definition 
    MessageBox = new CEdit 

    MessageBox->Create(WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL,CRect(100, 200, 450, 150), this, 0x1552); 

    return bRes; 
} 
+0

這沒有奏效我害怕。我得到一個灰色的無特徵盒子,覆蓋盒子上的其他物品。我真的很想學習以編程方式做到這一點,並擁有更多的控制權。我應該在哪裏定義類似#define的IDC_TEXTBOX 1552 – James 2012-07-19 09:03:58

+0

以下是簡單代碼的鏈接,它看起來與上面完全相同http://msdn.microsoft.com/en-us/library/6zxw3b4a(v=vs.80) .aspx, – marcinj 2012-07-20 20:08:17

+0

你可以把這個定義放在任何地方,iit只對你感興趣,它通常會放在resources.h中 – marcinj 2012-07-20 20:11:31