[英]Is it possible to create a GetOpenFileName dialog in a fullscreen app?
我有一個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,但是在創建此對話框時,它將窗口焦點移到對話框上,該對話框脫離了全屏應用程序,類似於在全屏模式下按Tab鍵切換到另一個窗口。 選擇文件並關閉“打開文件”對話框后,我必須手動切換回全屏應用程序。
是否可以使用現有的Windows對話框來做我想做的事情,還是必須編寫自己的應用程序內文件瀏覽系統或僅以窗口模式運行?
當然...您只需要傳遞全屏窗口的HWND作為“打開文件”公共對話框的父級(這是傳遞給GetOpenFileName
的OPENFILENAME
結構中的hwndOwner
參數)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.