C++ 控制臺彈出文件管理對話框案例

在控制臺程序中打開文件管理對話框,效果圖如下所示:

在需要彈出對話框的地方插入以下代碼:

//打開文件管理窗口
 TCHAR szBuffer[MAX_PATH] = { 0 };
 OPENFILENAME file = { 0 };
 file.hwndOwner = NULL;
 file.lStructSize = sizeof(file);
 file.lpstrFilter = _T("Excel文件(*.xlsx,*.xls)\0*.xlsx;*.xls\0Txt文件(*.txt)\0*.txt\0");//要選擇的文件後綴
 file.lpstrInitialDir = _T("C:\\");//默認的文件路徑 
 file.lpstrFile = szBuffer;//存放文件的緩沖區
 file.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer);
 file.nFilterIndex = 0;
 file.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;//標志如果是多選要加上OFN_ALLOWMULTISELECT
 BOOL bSel = GetOpenFileName(&file);

補充:c如何彈出保存路徑/保存文件對話框

我就廢話不多說瞭,大傢還是直接看代碼吧~

//保存路徑
TCHAR szBuffer[MAX_PATH] = {0}; 
 BROWSEINFO bi; 
 ZeroMemory(&bi,sizeof(BROWSEINFO)); 
 bi.hwndOwner = NULL; 
 bi.pszDisplayName = szBuffer; 
 bi.lpszTitle = _T("選擇保存文件路徑:"); 
 bi.ulFlags = BIF_RETURNFSANCESTORS;
 LPITEMIDLIST idl = SHBrowseForFolder(&bi); 
 if (NULL == idl) 
 { 
  return 0; 
 } 
 SHGetPathFromIDList(idl,szBuffer);
 
//保存對話框;
 TCHAR szFilters[]= _T("*.csv");
 CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters);
 if(IDOK==dlg.DoModal())
 {
 //現在的當前路徑變成瞭所打開文件時的路徑,故隻需要拿到文件名即可對文件進行操作;
 TCHAR curPath[MAX_PATH];
 GetCurrentDirectory(MAX_PATH,curPath); //可以拿到當前文件夾的路徑,此時curPath就是當前文件所處的路徑,變成瞭當前路徑;
 }
//保存文件

補充:C++控制臺程序彈出消息框

#include "stdafx.h"
#include<windows.h>
//不顯示控制臺
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
int main()
{
 int x=::MessageBox(NULL, TEXT("將在20秒後關機,確定執行嗎?"), TEXT("操作提示"), 1);
 if (x==1)
 {
 //確認關機
 system("shutdown /s /t 20");
 }
 printf("%d\n", x);
 return 0;
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: