使用afxgetmainwnd函式獲取mfc程式中的主框架類指標是乙個常用作法。但是你會發現這一做法有時也會失靈。不信,
你測試一下下面的**:
執行ontest1函式,你會發現客戶區並沒有列印"來自執行緒的字串"。下面我們把執行緒函式變一下:
執行ontest1函式,我們發現檢視客戶區出現了"來自執行緒的字串"。接下來我們除錯進去afxgetmainwnd函式,發現afxgetmainwnd函式如下:
由於afxgetthread()函式返回為null,所以afxgetmainwnd函式返回為null。為什麼會這樣呢?下面我提出我的猜想(本人暫時驗證不了,僅起拋磚引玉的作用)。我估計是mfc在多執行緒中大量運用了tls(執行緒本地儲存)來儲存某些狀態,主框架視窗指標屬於主線程的tls(執行緒本地儲存)儲存的狀態,但是應用程式類指標不屬於tls儲存的狀態,它可以在該程序的任何執行緒獲取。
使用AfxGetMainWnd函式的乙個心得
使用afxgetmainwnd函式獲取mfc程式中的主框架類指標是乙個常用作法。但是你會發現這一做法有時也會失靈。不信,你測試一下下面的 unsigned stdcall secondthreadfunc void parguments return 0 void cmainframe ontest...
使用AfxGetMainWnd函式的乙個心得
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!使用afxgetmainwnd函式獲取mfc程式中的主框架類指標是乙個常用作法。但是你會發現這一做法有時也會失靈。不信,你測試一下下面的 cpp view plain copy print?unsigned stdcall secondthread...
AfxGetMainWnd返回NULL也是可能的
afxgetmainwnd返回null也是有可能的。因為 afxwin inline cwnd afxapi afxgetmainwnd 而cwnd cwinthread getmainwnd cwnd cwinthread getmainwnd 而m pmainwnd有時候的值如果還沒有被設定,a...