如何将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深度的窗口的最大化和最小化,因此我需要知道哪个窗口被最小化,以便在特定条件下最大化...
答案 0 :(得分:1)
您正在将指向字符串的指针转换为整数。这显然是行不通的。
您只需将文件中的整数直接读入变量:
int hwnd;
myReadFile >> hwnd;
g_hWndApp1 = (HWND)hwnd;
请注意,当您关闭程序并重新启动它并重新创建窗口时,窗口的HWND
将不同。将它存储在文件中是没有意义的,除非你正在与另一个程序或其他东西进行通信。
答案 1 :(得分: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));
}