如何将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_hWndApp
和g_hWndApp1
值是不一样的,我要去哪里错了?
注:我使用的Kinect来控制最大化和基于Z向深度最小化窗口的,所以我需要知道哪个窗口是最小化,从而最大限度地提高一定条件相同..
答
你将一个指向字符串的指针转换为一个整数。这显然是行不通的。
你只是需要从文件中读取整数直接到一个变量:
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));
}
您创建一个窗口时,它都会获得一个新的HWND。它永远不会和以前一样。为什么要将HWND存储在文件中? – LightBulb
你的最终目标是什么? HWND只是一个窗口的句柄,它只在你的程序关闭之前才有用,所以你为什么要把它写入文件? – SoapBox
为什么不读取到'HWND'的输入,镜像输出操作? –