3 回答

TA貢獻1895條經(jīng)驗 獲得超3個贊
暫且不管你怎么定義的,先說這個UpdateData()。這個函數(shù)是
CWnd類的一個成員函數(shù),不是一個靜態(tài)函數(shù),所以不能像你那樣,用CMy14MFC_6Dlg::UpdateData(FALSE);這種方式調用。只有在類的內部調用(即類成員函數(shù)調用),或通過類的實例對象調用。
最后一句“由于這個程序要用到Sleep(),所以采用的是多程序.”也很難理解,我還是第一次聽說“多程序”這個詞。
暫且我就把它當成是多線程吧,你說你要用到 Sleep() 這個函數(shù),我想你是想實現(xiàn)那個一秒自加一次的功能吧,你用一個循環(huán),加一次,然后 Sleep 一秒,對吧。
其實這個功能可以,而且應該用 Timer實現(xiàn)。

TA貢獻1772條經(jīng)驗 獲得超5個贊
CXXXDLG居然能::UPdateData這樣調用,厲害,難道一個類只能有一個實力打開一個擁有同樣數(shù)據(jù)的對話框,VC不可能將這函數(shù)寫成靜態(tài)的UPDATEDATA
你要想再外弄,得發(fā)MESSAGE自定義消息,讓類里自己調用用ON_MESSAGE紅設調用函數(shù),想來你開發(fā)語言的不用那么復雜只要:
"多程序運行"
你的超級智能程序!

TA貢獻1898條經(jīng)驗 獲得超8個贊
用一個線程就行了
在創(chuàng)建線程時,把對話框的指針做為參數(shù)
在線程實現(xiàn)里面,把參數(shù)轉為對話框指針,有了指針就可以調用了
///////////////
聲明
public:
static DWORD WINAPI UpdateDataThread(LPVOID);///注意聲明為static
定義
DWORD WINAPI CMy14MFC_6Dlg::UpdateDataThread(LPVOID lp){
CMy14MFC_6Dlg* dlg = (CMy14MFC_6Dlg*)lp;
while(true){
dlg->UpdateData(FALSE);
Sleep(1000);
}
return 0;
}
CMy14MFC_6Dlg::XXXXX(){///在某函數(shù)里面創(chuàng)建一個線程,關鍵是把this做為參數(shù)傳進去
CreateThread(NULL,0,LPTHREAD_START_ROUINE(&CMy14MFC_6Dlg::UpdateDataThread),this,0,0);
}
//不好意思,本人不是高手,以上是憑腦寫的,不知道有沒有錯誤,請原諒
- 3 回答
- 0 關注
- 1067 瀏覽
添加回答
舉報