問:請問如何在一個全局函數(shù)中,獲得它視圖類,文檔類得指針啊?
問:如何在一個對話框中,獲得它視圖類,文檔類得指針啊?
答:雖然你可以使用AfxGetMainWnd或者AfxGetApp之類的函數(shù)來訪問全局變量,但是不建議這么做。你應該盡量少使用全局函數(shù)和變量以增加代碼的可移植性。你可以在對象中聲明變量來保存和傳遞需要使用的對象和指針,調(diào)用函數(shù)或者創(chuàng)建對象時傳遞指針。
舉例來說,如果視圖的成員函數(shù)需要創(chuàng)建一個對話框,而對話框需要訪問文檔,那么可以在對話框類中聲明一個文檔指針,視圖的成員函數(shù)創(chuàng)建對話框之后把對話框中的文檔指針變量的值設置為和視圖關聯(lián)的文檔指針。
再一個例子:對于在一個對話框按鈕的處理函數(shù)中創(chuàng)建的線程,其線程函數(shù)中需要控制對話框。因為不能跨線程訪問對話框?qū)ο螅揖€程函數(shù)是全局函數(shù)。所以要把對話框中線程需要訪問的數(shù)據(jù)封裝成一個結構,然后將它和對話框句柄打包成另外一個結構,將其地址作為參數(shù)傳遞給線程函數(shù)。線程函數(shù)在啟動時應該復制數(shù)據(jù)和對話框句柄,然后使用線程安全的Windows API或者再創(chuàng)建一個MFC對話框?qū)ο箨P聯(lián)對話框句柄到來控制對話框。

文章來源:
http://blog.csdn.net/jiangsheng/archive/2005/11/14/529522.aspx