【问题标题】:how to store hwnd type data into a flat file and get it back into hwnd type variable?如何将 hwnd 类型数据存储到平面文件中并将其返回到 hwnd 类型变量中?
【发布时间】:2011-11-27 01:12: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 深度的窗口的最大化和最小化,所以我需要知道哪个窗口被最小化,以便在特定条件下最大化相同的窗口..

【问题讨论】:

  • 每次创建窗口时,都会获得一个新的 HWND。它永远不会和以前一样。为什么要将 HWND 存储在文件中?
  • 你的最终目标是什么? HWND 只是一个窗口句柄,它只有在你的程序关闭之前才有用,那你为什么要把它写到一个文件中呢?
  • 为什么不将输入读入HWND,镜像输出操作?
  • 我正在使用 kinect 来控制基于 Z 深度的窗口的最大化和最小化,所以我需要知道哪个窗口被最小化,以便在特定条件下最大化相同...
  • 这并不能解释为什么需要将窗口句柄保存到文件中。

标签: c++ windows winforms


【解决方案1】:

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

您只需将文件中的整数直接读取到变量中:

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

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

【讨论】:

  • 我正在使用 kinect 来控制基于 Z 深度的窗口的最大化和最小化,所以我需要知道哪个窗口被最小化,以便在特定条件下最大化相同的窗口..
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2015-05-16
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多