如何将HWND类型数据存储到平面文件中,并将其返回到HWND类型变量中

how to store hwnd type data into a flat file and get it back into hwnd type variable?

本文关键字:HWND 返回 类型变量 平面文件 类型 数据 存储      更新时间:2023-10-16

如何将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深度的最大化和最小化窗口,所以我需要知道最小化哪个窗口,以便在特定条件下最大化相同。

您正在将指向字符串的指针强制转换为整数。这显然行不通。

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

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

请注意,当您关闭程序并重新启动并重新创建窗口时,窗口的HWND将不相同。没有必要将它存储在文件中,除非你正在与另一个程序或其他东西进行通信。

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

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