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

时间:2011-11-27 01:12:16

标签: c++ windows winforms

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

2 个答案:

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