點擊選單中的按鈕,讀取txt檔案中的資料,顯示到ID號為IDC_EDIT1的編輯框中,代碼如下:
void CTestApp::On32771()
{CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal() == IDOK)
{
CString str;
CFile f;
f.Open(fileDlg.GetFileName(),CFile::modeReadWrite);
f.Read(str.GetBuffer(f.GetLength()),f.GetLength());
f.Close();
GetDlgItem( IDC_EDIT1 )->SetWindowText( str);
}
}
錯誤為“GetDlgItem”: 函式不接受 1 個引數 和 “SetWindowTextA”: 函式不接受 1 個引數,怎么解決
uj5u.com熱心網友回復:
是多視圖的工程?試試添加#include "Resource.h"uj5u.com熱心網友回復:
你的回應函式在App類中,App類不是是CDialog的子類,所以呼叫GetDlgItem呼叫的是Win32API介面,第一個引數是HWND句柄,另外一個也是這樣。怎么不放到主對話框類中去做?uj5u.com熱心網友回復:
你的代碼寫的不規范呀?
CEdit* p=(CEdit*)GetDlgItem(IDC_EDIT1);
p->SetWindowText(str);
試試行不行?
uj5u.com熱心網友回復:
我明白你說的了,我查的有人回復其他的帖子 ::SetWindowText(GetDlgItem(hWnd, IDC_EDIT1));
但我不會改,第一次接觸mfc,完全新手。要求是加到選單上的
uj5u.com熱心網友回復:
我也是在網上檔的,新手剛接觸,不怎么懂。試了一下您說的,還是不行
uj5u.com熱心網友回復:
HWND hDlg = AfxGetApp()->GetMainWnd()->GetSafeHwnd();if (hDlg == NULL) return;
HWND hEdit = GetDlgItem(hDlg, IDC_EDIT1);
if (hEdit == NULL) return;
SetWindowText(hEdit, str);
試下
uj5u.com熱心網友回復:
你工程都建錯了!
你重新建立一個基于對話框的應用程式,再試試?
uj5u.com熱心網友回復:
void CTestApp::On32771()函式位置不對,把這個事件添加到CTestDlg里,而不是CTestApp
uj5u.com熱心網友回復:
1.如8所說,2.在app中GetDlgItem需要獲取到該IDC_EDIT1的視窗句柄(如果視窗有存在就可能獲取到,否則會報錯)。
3.不建議在app中直接使用GetDlgItem來SetWindowText,可以GetActiveView()來呼叫函式SetWindowText
個人建議。
uj5u.com熱心網友回復:
是基于對話框的uj5u.com熱心網友回復:
謝謝您,試過能運行,但是打開1.txt檔案時,說無法找到C:\Users\AD\Documents\Visual Studio2010\Projects\Test\Test\1.test,這是為什么呢?uj5u.com熱心網友回復:
IDC_EDIT1不在App里面,所以出現這些問題轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/129757.html
標籤:基礎類
下一篇:請教各位大俠,現在我在一個listctrl插入資料之后,然后通過setitem函式設定一個特征值系結一行資料,在debug版本下沒問題,為啥在realse版本下
