如何更新对话框外的控件?

时间:2009-06-08 05:44:29

标签: mfc controls

例如,在MFC程序中,我有我的主应用程序和“类”。如果我想从该“类”更新位于我的主应用程序中的控件(例如,列表框),我该怎么办?

4 个答案:

答案 0 :(得分:1)

这是一个适合我的例子

theApp.m_pMainWnd->GetDlgItem(IDC_BUTTON6)->SetWindowTextW(L"Run Auto Test");

答案 1 :(得分:0)

您的课程可以设计为触发主应用程序可以监听的事件。然后,可以调用侦听器/事件处理程序/委托来处理事件并更新列表框。通常,大多数事件格式都会传递发件人的引用,在本例中是您的“类”,以及包含事件参数的对象。这些参数可用于传递要添加到列表框的项目列表。

答案 2 :(得分:0)

如果你的类中有对话框对象的句柄,那么你可以使用GetDlgItem(ResourceID)获取列表控制对象。

答案 3 :(得分:0)

最简单的方法是将listview从应用程序表单/窗口公开给使用它的类。您可以通过将listview对象(或父窗口)传递给类构造函数,或将其存储在类可访问的静态变量中来完成此操作。

为了更好的封装,您可以在类可以调用的应用程序中放置一个方法,例如“AddItemToListBox()”。这允许应用程序对象保持对访问列表框的方式的控制。您可以再次将其作为静态方法执行,或将主程序对象的'this'指针传递给类构造函数。

即。

class CApplication
{
    CListBox m_ListBox;

public:
    static void CApplication::AddItemToListBox(CString itemText)
    {
        // Add the item as you wish here
    }

}

class CMyClass
{
    afx_msg void CMyClass::OnMouseDown(...)
    {
          CApplication::AddItemToListBox("This is a test");
    }
}