使用AfxGetMainWnd函式的乙個心得

2021-05-21 23:18:15 字數 437 閱讀 2205

使用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...