У меня полноэкранное приложение, написанное на C ++, и я хочу открыть диалоговое окно, чтобы пользователь мог выбрать файл, который нужно открыть, не выходя из полноэкранного режима приложения.
В Windows для запуска вв полноэкранном режиме я звоню ChangeDisplaySettings(&settings, CDS_FULLSCREEN)
.(Технически я использую SDL, но это вызов, который он использует.)
Чтобы открыть диалоговое окно файла, я использую следующий код:
HWND hWnd = NULL;
SDL_SysWMinfo wmInfo;
SDL_VERSION(&wmInfo.version);
if( SDL_GetWMInfo(&wmInfo) ) {
hWnd = wmInfo.window; // Note: This is sucessful, and hWnd != NULL
}
OPENFILENAMEW ofn;
wchar_t fileName[MAX_PATH] = L"";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.lpstrFile = fileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST;
if( GetOpenFileNameW( &ofn ) ) {
DoSomethingWith( fileName );
}
При запуске hWnd неNULL, но когда этот диалог создан, он смещает фокус окна на диалог, который выходит из полноэкранного приложения, аналогично тому, как alt-tabbing для другого окна в полноэкранном режиме.Как только файл выбран и диалоговое окно «Открыть файл» закрывается, я должен вручную переключиться обратно в полноэкранное приложение.
Можно ли делать то, что я хочу, с помощью существующих диалоговых окон Windows, или я должен написать свой собственныйсистема просмотра файлов в приложении или только в оконном режиме?