2017-08-13 83 views
0

我在mfc對話框中創建了一個靜態文本,然後將此靜態文本的變量更改爲CString類型,而成員名稱是m_process。 然後,我將使用此靜態文本來顯示時間過程,但標識符未定義。爲什麼mfc中的statictext工具中的變量未定義

int64 tm1 = cv::getTickCount(); 
int64 tm2 = cv::getTickCount(); 
double sec = (tm2-tm1)/cv::getTickFrequency(); 
teks.Format(_T("%g"),sec); 
m_process.SetWindowTextW(teks); 

,這是錯誤

錯誤9錯誤C2065:m_process':未聲明的標識符d:\ kuliah \ SMT 8 \真主た\ bismillah_dialog \ bismillah_dialog \ bismillah_dialogdlg.cpp 391 1 Bismillah_Dialog

錯誤4錯誤C2228:左 '.SetWindowTextW' 必須具有類/結構/聯合d:\ kuliah \ SMT 8 \真主た\ bismillah_dialog \ bismillah_dialog \ bismillah_dialogdlg.cpp 268 1 bismillah_Dialog

這是這個靜態文本的聲明。 在Dlg.cpp

CBismillah_DialogDlg::CBismillah_DialogDlg(CWnd* pParent /*=NULL*/) 
    : CDialogEx(CBismillah_DialogDlg::IDD, pParent) 
{ 
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
    modeTampil = 0; 
    openProcess = 0; 
    modeAuto = 0; 
    m_area = _T(""); 
    m_process = _T(""); 
} 

void CBismillah_DialogDlg::DoDataExchange(CDataExchange* pDX) 
{ 
    CDialogEx::DoDataExchange(pDX); 
    // DDX_Control(pDX, IDC_EDIT1, m_area); 
    // DDX_Control(pDX, IDC_EDIT2, m_process); 
    DDX_Control(pDX, IDC_BUTTON2, m_play); 
    DDX_Control(pDX, IDC_BUTTON1, m_open); 
    // DDX_Control(pDX, ID_STATIC, m_pic); 
    DDX_Control(pDX, ID_STATIC, m_pic); 
    DDX_Control(pDX, IDC_MFCEDITBROWSE1, m_name); 
    // DDX_Control(pDX, IDC_EDIT3, m_coba); 
    // DDX_Control(pDX, IDC_EDIT1, m_area); 
    DDX_Text(pDX, IDC_EDIT1, m_area); 
    DDX_Text(pDX, IDC_EDIT2, m_process); 
} 

和在頭文件。

public: 
CWinThread* thread; 

afx_msg void OnEnChangeMfceditbrowse1(); 
int modeTampil; 
int openProcess; 
int modeAuto; 
static DWORD ThreadPro(LPVOID *x); 
afx_msg void threadProcess(); 


// CStatic m_area; 
// CStatic m_process; 
    CButton m_play; 
    CButton m_open; 
// CStatic m_pic; 
    CStatic m_pic; 
    afx_msg void OnBnClickedButton1(); 
    CMFCEditBrowseCtrl m_name; 
// CEdit m_coba; 
// CStatic m_area; 
    CString m_area; 
    CString m_process; 
}; 

系統已經聲明瞭靜態文本,但是當我編譯這個程序時它沒有檢測到。 我不知道如何解決它。我很困惑,並且對這個MFC新手。我非常需要幫助。謝謝:))

+0

請向我們展示代碼行,報告錯誤... – xMRi

+0

您正嘗試從對話框類的外部使用'm_process'。您只能從'CBismillah_DialogDlg'類的成員函數中訪問它。 – acraig5075

+0

@ acraig5075我認爲你在那裏做了一個假設。無論哪種方式,原始海報都沒有做出任何澄清答覆。 –

回答

1

鑑於您提供的代碼,UI控件映射到CString而不是CEdit

因此,您不能使用SetWindowTextWCString控制對象。

在你可以只使用:

m_process.Format(_T("%g"),sec); 
UpdateData(FALSE); 

我不是說這是最有效的方式。但它適用於你陳述的代碼。還有其他方法可將控制內容傳輸到變量(例如:SetDlgItemText),但這是我如何做到的。毫無疑問,還有更多的方法。

+0

我不同意這一點。根據您的操作,直接設置數據要簡單快捷得多。假設你有50個控件。爲什麼我應該將數據從50個控件傳輸到UI,在這種情況下,您必須先將數據從UI傳輸到內部存儲器,否則您會覆蓋用戶剛輸入的數據。 – xMRi

+1

你不必按照我所說的方式去做。我清楚地說明它是**一種方式**和我的方式。我也直接包括**中學**的方式。無論哪種方式,我的答案是**他的**問題。他正在使用'CString',他**不能**使用'SetWindowTextW'。我覺得你的投票不公平。如果我的回答是教條式的,那麼我會把它放在下巴上。但這不是教條。 –

+1

你是對的... – xMRi

相關問題