2014-02-08 33 views
0

我创建了一个对话框并将其链接到菜单项。在这种情况下,菜单项是帮助 - >统计。这一切都有效。所以当我运行程序时,点击菜单帮助,然后统计,弹出一个对话框。在运行时更改对话框中的静态文本

我在对话框中也有一个静态文本框。如何在运行时更改此静态文本框的文本?

P.S:虽然我有一个对话框启动并运行,但我没有对话框的句柄。如果您的任何解决方案涉及知道对话框的句柄,请告诉我如何检索它。谢谢。

编辑:

class CStatisticsDlg : public CDialogEx 
{ 
public: 
     CStatisticsDlg(); 

// Dialog Data 
    enum { IDD = IDD_STATISTICS }; 

protected: 
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 

// Implementation 
protected: 
    DECLARE_MESSAGE_MAP() 
public: 
}; 

CStatisticsDlg::CStatisticsDlg() : CDialogEx(CStatisticsDlg::IDD) 
{ 
} 

void CStatisticsDlg::DoDataExchange(CDataExchange* pDX) 
{ 
    CDialogEx::DoDataExchange(pDX); 
} 

BEGIN_MESSAGE_MAP(CStatisticsDlg, CDialogEx) 
END_MESSAGE_MAP() 
+0

如果您提供了用于对话框的代码,这可能会有所帮助。 – cpburnz

+0

刚刚添加了负责创建对话框的代码。 – user3126297

回答

3
  1. 在类向导,创建标签CString成员变量。注意:默认情况下,标签没有自定义标识,因此您必须给它一个像IDC_MY_LABEL的标签。
  2. 某处显示的对话框呼叫m_strMyLabel.SetWindowText("blah");

如果你需要做的,而对话框打开你要调用UpdateData(FALSE)

编辑之前:如果你不希望创建一个成员变量你可以 **更正 - 从内存中打字....

// Find the label 
// if called from within CStatusDlg class 
CWnd *label = GetDlgItem(IDC_MY_LABEL); 
label->SetWindowText("blah"); 

// If called from elsewhere 
CStatusDlg dlg..... // create the dialog 
CWnd *label = dlg.GetDlgItem(IDC_MY_LABEL); 
label->SetWindowText("blah"); 
+0

thx的答复。你如何做这个编程(即没有班级向导)? – user3126297

+0

@ user3126297更新了我的答案。 –

+0

说GetDlgItem不需要1个参数.... – user3126297

相关问题