調用 GetOpenFileName 彈出的文件選擇對話框被主窗口遮擋,無法置頂顯示。需正確設置 OPENFILENAME 結構體的 hwndOwner 成員。
this->m_hWnd 或 GetSafeHwnd()。FindWindow / GetForegroundWindow 獲取。OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hMainWnd; // 關鍵:設置所有者窗口
ofn.lpstrFile = szFile;
ofn.nMaxFile = MAX_PATH;
// ... 其他字段
GetOpenFileName(&ofn);
hwndOwner 指定對話框的**所有者窗口**。NULL (默認),對話框無所有者,可能顯示在任務欄後或被其他頂層窗口遮擋。hMainWnd 有效且可見,否則對話框可能不顯示或異常。OFN_EXPLORER 標志) 下尤為重要。GetSaveFileName、ChooseColor、ChooseFont 等通用對話框。一行設置 ofn.hwndOwner = 主窗口句柄 即可解決對話框置頂問題。