在MFC中,建立執行緒,在執行緒中呼叫面板引數,通過呼叫對話框句柄方式呼叫的,(dlg->m_num=0);執行緒的開始是通過控制元件按鈕實作的,在該按鈕下寫了,updatedata(TRUE),卻無法實作資料引數更新,求指點,是因為執行緒沒有關倍訓是別的原因?
uj5u.com熱心網友回復:
無法實作資料的更新是指在執行緒中獲得不到對話框中的值?試試通過控制元件句柄的方式去獲得內容,類似這樣:GetDlgItem(ID)->GetWindowText()uj5u.com熱心網友回復:
執行緒中不要直接操作UI物件,而是PostMessage發送訊息給主執行緒,讓主執行緒來更新UIuj5u.com熱心網友回復:
GetDlgItem(ID)->GetWindowText() 這樣的方式使用過,效果不佳,無法實作更新,從邏輯上講,在控制元件下更新面板引數,在執行緒中獲取引數,應該是可以獲取到已經更新的引數的,我有些懷疑是不是我的執行緒在上次作業結束沒有關閉,導致出現引數無法更新的。uj5u.com熱心網友回復:
通過這種方式,當時也設定試過,沒有實作,我在執行緒中還有2個網路的傳輸,會和這個有關嗎?有點暈乎了。。。。。
uj5u.com熱心網友回復:
Multiple Threads in the User Interface http://msdn.microsoft.com/zh-cn/library/ms810439.aspx轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/128915.html
標籤:進程/線程/DLL
