在运行时更改对话框中的静态文本

时间:2014-02-08 04:49:27

标签: c++ mfc

我创建了一个对话框并将其链接到菜单项。在这种情况下,菜单项是帮助 - >统计。一切正常。因此,当我运行程序时,单击菜单帮助,然后单击统计,会弹出一个对话框。

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

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()

1 个答案:

答案 0 :(得分:4)

  1. 在类向导中,为标签创建CString成员变量。注意:默认情况下,标签没有自定义ID,所以你必须给它一个像IDC_MY_LABEL。
  2. 在显示对话框m_strMyLabel.SetWindowText("blah");
  3. 之前的某处

    如果您需要在对话框打开时执行此操作,则必须拨打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");