2011-11-27 24 views
0

如何將hwnd類型的數據存儲和檢索到平面文件並將其恢復到hwnd類型變量?如何將hwnd類型數據存儲到平面文件並將其恢復到hwnd類型變量中?

我寫如下:

HWND g_hWndApp, g_hWndApp1; 
ofstream myfile; 
myfile.open ("D:\\sri.txt"); 
myfile << g_hWndApp; 
myfile.close(); 
int nCmdShow = 6; 
ShowWindow(g_hWndApp,nCmdShow); 

和閱讀如下:

ifstream myReadFile; 
char output[100]; 
myReadFile.open("D:\\sri.txt"); 
if (myReadFile.is_open()) { 
     myReadFile >> output; 
} 
myReadFile.close(); 
g_hWndApp1 = (HWND) output; 

然而g_hWndAppg_hWndApp1值是不一樣的,我要去哪裏錯了?

注:我使用的Kinect來控制最大化和基於Z向深度最小化窗口的,所以我需要知道哪個窗口是最小化,從而最大限度地提高一定條件相同..

+1

您創建一個窗口時,它都會獲得一個新的HWND。它永遠不會和以前一樣。爲什麼要將HWND存儲在文件中? – LightBulb

+2

你的最終目標是什麼? HWND只是一個窗口的句柄,它只在你的程序關閉之前纔有用,所以你爲什麼要把它寫入文件? – SoapBox

+0

爲什麼不讀取到'HWND'的輸入,鏡像輸出操作? –

回答

1

你將一個指向字符串的指針轉換爲一個整數。這顯然是行不通的。

你只是需要從文件中讀取整數直接到一個變量:

int hwnd; 
myReadFile >> hwnd; 
g_hWndApp1 = (HWND)hwnd; 

注意到,您的窗口HWND當您關閉程序並重新啓動它並重新將是不一樣的窗口。將它存儲在一個文件中真的沒有意義,除非你正在與另一個程序或其他東西進行通信。

+0

我正在使用kinect來控制基於Z深度的窗口的最大化和最小化,所以我需要知道哪個窗口最小化,以便在特定條件下最大化相同。 – Nohsib

0

存儲任意的二進制數據,通常不需要這樣的:

ofstream myfile; 
myfile.open ("D:\\sri.txt", std::ios_base::binary); 
myfile.write(&g_hWndApp, sizeof(g_hWndApp)); 

...

ifstream myReadFile("D:\\sri.txt", ios_base::binary); 
if (myReadFile.is_open()) { 
     myReadFile.read(&g_hWndApp1, sizeof(g_hWndApp1)); 
} 
相關問題