如何将hwnd类型数据存储到平面文件并将其恢复到hwnd类型变量中?

问题描述:

如何将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'的输入,镜像输出操作? –

你将一个指向字符串的指针转换为一个整数。这显然是行不通的。

你只是需要从文件中读取整数直接到一个变量:

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

注意到,您的窗口HWND当您关闭程序并重新启动它并重新将是不一样的窗口。将它存储在一个文件中真的没有意义,除非你正在与另一个程序或其他东西进行通信。

+0

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

存储任意的二进制数据,通常不需要这样的:

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)); 
}