2017-08-13 35 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 TA \ビスミーッラー

エラー4エラーC2228:268 1 bismillah_Dialog

bismillah_dialogdlg.cpp \ bismillah_dialog \ bismillah_dialog \ TA \ kuliah \ SMT 8 \ビスミーッラー: '.SetWindowTextW' クラス/構造体/共用体dを持っている必要があります左

これはこの静的テキストの宣言です。 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コントロールがCEditCStringないにマッピングされています。

したがって、あなたCStringとして使用SetWindowTextWない制御対象であることはできません。あなたの缶に

だけ使用します。

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

私は、これが最も効率的な方法であると言っておりません。しかし、それはあなたの記載されたコードで動作します。制御コンテンツを変数に転送する方法は他にもあります(たとえば:SetDlgItemText)が、これは私のやり方です。間違いなく、さらに多くの方法があります。

+0

私はそれに同意しません。あなたが何をするかに応じて、データを直接設定する方がはるかに簡単です。 50個のコントロールがあるとします。 50個のコントロールからUIにデータを転送する必要があるのはなぜですか。この場合も、UIから内部ストレージにデータを転送する必要があります。そうしないと、ユーザーが入力したデータが上書きされます。 – xMRi

+1

あなたは私が述べたようにそれをする必要はありません。私はそれが**片方向**と私の方法であることを明確に述べています。私は直接**第二の**方法も含んでいます。いずれにせよ、私の答えは彼の**の質問でした。彼は 'CString'を使っていますし、' SetWindowTextW'を**使用することはできません。私はあなたの下投票を不公平に感じます。私の答えが独断的だったら、それを顎の上で撮ったでしょう。しかし、独断的ではありません。 –

+1

あなたは正しいです... – xMRi

関連する問題