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

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