在控制台程序中打开文件管理对话框,效果图如下所示:
在需要弹出对话框的地方插入以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
//打开文件管理窗口 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如何弹出保存路径/保存文件对话框
我就废话不多说了,大家还是直接看代码吧~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
//保存路径 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++控制台程序弹出消息框
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#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; } |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/u012293114/article/details/105121752