簡體   English   中英

在MFC中更新用戶對話框

[英]Update user dialog in MFC

我想在單擊按鈕時更新用戶界面。 但是,我沒有在CProjectDlg中使用直接方法。 我有一個CMain類,它將處理該操作。

這是我的代碼:

ProjectDlg.cpp

void CProjectDlg::OnBnClickedButton1()
{
    CMain *ptr = new CMain();

    ptr->Click();
    CString test = m_edit1;
}

Main.cpp

void CMain::Click()
{
    CProjecttDlg *ptr = new CProjectDlg();

    ptr->m_edit1.SetString(L"This is a test.");
}

在調試模式下,我發現m_edit1的地址不相同。 因此該功能是無用的。

我需要將m_edit1的相同地址m_edit1Click()函數。 我怎么做?

謝謝。

每次單擊時,都會創建一個新對話框。

CProjecttDlg * ptr =新的CProjectDlg();

您必須做的是僅創建一次(可能是在CMain構造函數中?還是第一次訪問該點擊)。 要存儲其值,只需使ptr成為CMain的成員(在.h中定義,依此類推),而不是局部變量即可。

你那里有問題。 您正在調用CMain :: Click到一個CProjectDlg實例,但是在CMain :: Click中創建了一個新的CProjectDlg實例,並在該新對話框中設置了編輯框,而不是在原始對話框中。

我不知道您到底想做什么,但是可行的一件事是將指向對話框的指針傳遞給CMain構造函數,然后在CMain :: Click中使用它來設置編輯框。 像這樣:

//CMain.h
class CMain
{
public:
    CMain(CProjectDlg*);

    Click();
protected:
    CProjecDlg* m_Dlg;
}

// CMain.cpp
CMain::CMain(CProjectDlg* dlg)
{
    m_Dlg = dlg;
}

CMain::Click()
{
    m_Dlg->m_edit1.SetString(L"This is a test.");
}

除此之外,我不知道是否每次用戶單擊底部時都需要創建一個新的CMain實例。

最后,我提供的可能的解決方案可能會起作用,但也可能不是“正確的”。 但是,如果沒有更多關於您要做什么的詳細信息,我將為您提供更多幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM