簡體   English   中英

是否可以在全屏應用程序中創建GetOpenFileName對話框?

[英]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作為“打開文件”公共對話框的父級(這是傳遞給GetOpenFileNameOPENFILENAME結構中的hwndOwner參數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM