Здравствуйте.
Надо написать приложение на WinAPI MDI окна. Есть 2 вопроса:
Каким методом правильно вычислить активное окно? (Пробовал и WM_SETFOCUS
, и WM_MDIACTIVATE
, в теле через через WM_MDIGETACTIVE
пытался найти активное окно, но если окна 2, то при переключении видится 2 активных.)
Как узнать, был ли изменен файл, который я открыл? Есть ли в OpenFileName
или в структуре MDI флаги, отвечающие на такое требование?
Спасибо заранее за ответы.
1) Возвращает HWND окна, в котором пользователь в данный момент работает.
HWND WINAPI GetForegroundWindow(void);
http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633505(v=vs.85).aspx
Функция GetActiveWindow извлекает оконный дескриптор активного окна, связанного с потоком, который вызывает функцию.
HWND GetActiveWindow(VOID)
http://www.firststeps.ru/mfc/winapi/keyb/r.php?26
2) "Был ли изменён" - относительно чего? Это известоно только Вашей программе. Скорее всего можно получить дату последнего изменения и сравнить с сохранённой последней датой в Вашей программе.
BOOL WINAPI GetFileTime(
_In_ HANDLE hFile,
_Out_opt_ LPFILETIME lpCreationTime, // время создания файла
_Out_opt_ LPFILETIME lpLastAccessTime, // время последнего обращения к файлу
_Out_opt_ LPFILETIME lpLastWriteTime // время последней модификации
);
http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633505(v=vs.85).aspx
Есть вариант хранить хэш файла в программе, тогда всё очень просто проверяется. http://stackoverflow.com/questions/1220046/how-to-get-the-md5-hash-of-a-file-in-c
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?