置頂
MFC 在 Thread 中使用控件的相關問題
小弟有請個問題想請教板上C的神人
1.在使用AfxBeginThread()時,到底是傳this進去還是傳this->GetSafeHwnd()比較好?
2.如果傳this,要如何知道哪些關於控件的function不能使用? Ex:UpdateData()..
P.S.我知道可以透過SendMessage()去做UpdateData()
3.如果傳HWND,透過FromHandle去拿CWnd,控件的function可以使用。Ex:UpdateData()
但是呼叫AfxBeginThread()的class本身的成員變數卻都沒辦法使用了。Ex:CString...
這樣是正常的嗎?
4.一般如果在Thread裡面要用到控件,例如讀取控件的Value或者設定控件的Value,難道
都是透過送訊息的方式嗎?
up vote
0
mfc 把對應關係的 handle map 存在 TLS 裡面
通常 assert應該都是用來確認它沒有跨執行序使用 (跨了 TLS 就找不到)
FromHandle 傳回來的只是一個 CTempWnd 相當於 CWnd
如果你有一個 class 繼承 CWnd 然後用它傳回物件
想存取那個 class 特有的資料會引發錯誤
這是因為 CTempWnd 沒有那些多出來的資料造成的
會員登入
(先登入會員才能回覆留言喔!)