как сохранить данные типа hwnd в плоский файл и вернуть их обратно в переменную типа hwnd? - PullRequest
0 голосов
/ 27 ноября 2011

Как сохранить и извлечь данные типа 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, поэтому мне нужно знать, какое окно минимизировано, чтобы максимизировать его при определенных условиях.

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Вы приводите указатель на строку в целое число. Это, очевидно, не сработает.

Вам нужно просто прочитать целое число из файла непосредственно в переменную:

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

Обратите внимание, что HWND вашего окна не будет таким же, когда вы закрываете программу, перезапускаете и заново создаете окно. На самом деле нет смысла хранить его в файле, если вы не общаетесь с другой программой или чем-то еще.

0 голосов
/ 27 ноября 2011

Для хранения произвольных двоичных данных обычно это делается:

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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...