3 回答

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

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

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
用一個(gè)線程就行了
在創(chuàng)建線程時(shí),把對(duì)話框的指針做為參數(shù)
在線程實(shí)現(xiàn)里面,把參數(shù)轉(zhuǎn)為對(duì)話框指針,有了指針就可以調(diào)用了
///////////////
聲明
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)建一個(gè)線程,關(guān)鍵是把this做為參數(shù)傳進(jìn)去
CreateThread(NULL,0,LPTHREAD_START_ROUINE(&CMy14MFC_6Dlg::UpdateDataThread),this,0,0);
}
//不好意思,本人不是高手,以上是憑腦寫(xiě)的,不知道有沒(méi)有錯(cuò)誤,請(qǐng)?jiān)?/p>
- 3 回答
- 0 關(guān)注
- 1082 瀏覽
添加回答
舉報(bào)