精华内容
下载资源
问答
  • C语言控制台界面调用系统的文件浏览对话框
  • 我是在C/C++控制台写的打开文件选择对话框,所以很多头文件需要先进行声明,不然功能无法使用 新声明头文件: #include <windows.h> #include <ShlObj.h> #include <stdio.h> #include <...

    我是在C/C++控制台写的打开文件选择对话框,所以很多头文件需要先进行声明,不然功能无法使用

     新声明头文件:

    #include <windows.h>
    #include <ShlObj.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <atlstr.h> 
        CString path;
    	OPENFILENAME open;// 公共对话框结构。
    	char file[MAX_PATH];// 用来保存获取文件名称的缓冲区。 
    	ZeroMemory(&open,sizeof(OPENFILENAME)); // 初始化选择文件对话框
    	open.lStructSize=sizeof(OPENFILENAME);//指定这个结构的大小,以字节为单位。
    	open.lpstrFile = file;//打开的文件的全路径
    	open.lpstrFile[0] = '\0'; //第一个字符串是过滤器描述的显示字符串
    	open.nMaxFile = MAX_PATH;  //指定lpstrFile缓冲的大小,以TCHARs为单位
    	open.lpstrFilter = "文本文件(*.txt)\0*.txt\0所有文件(*.*)\0*.*\0\0";  //打开文件类型
        open.nFilterIndex = 1;  //指定在文件类型控件中当前选择的过滤器的索引
        open.lpstrFileTitle = NULL; // 指向接收选择的文件的文件名和扩展名的缓冲(不带路径信息)。这个成员可以是NULL。
        open.nMaxFileTitle = 0;  //指定lpstrFileTitle缓冲的大小,以TCHARs为单位
    	open.lpstrInitialDir = NULL;  //指向以空字符结束的字符串,可以在这个字符串中指定初始目录。
    	open.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;//位标记的设置,你可以使用来初始化对话框
    	//GetOpenFileName (&open) ;//打开文件对话框
    	//GetSaveFileName(&open);//保存文件对话框
        if (GetOpenFileName(&open))  // 显示打开选择文件对话框。  
        {  
            path = file;  
    		printf(path+"\n");
        }  
    	system("pause");
    	return 0;

    当我们遇到如下错误时:

    1	IntelliSense: 不能将 "char *" 类型的值分配到 "LPWSTR" 类型的实体	
    

    选择“项目”-》“XXX项目属性”-》“配置属性”-》“常规”选项中,把“字符集”改为“使用多字节字符集”,然后确定。

     遇到    1    IntelliSense: 未定义标识符 "CString"    时添加头文件 #include <atlstr.h>即可

    OPENFILENAME的具体属性含义可以参考(这个写的很详细):

    公共对话框:OPENFILENAME结构

    完整代码:

    // ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <windows.h>
    #include <ShlObj.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <atlstr.h>
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	CString path;
    	OPENFILENAME open;// 公共对话框结构。
    	char file[MAX_PATH];// 用来保存获取文件名称的缓冲区。 
    	ZeroMemory(&open,sizeof(OPENFILENAME)); // 初始化选择文件对话框
    	open.lStructSize=sizeof(OPENFILENAME);//指定这个结构的大小,以字节为单位。
    	open.lpstrFile = file;//打开的文件的全路径
    	open.lpstrFile[0] = '\0'; //第一个字符串是过滤器描述的显示字符串
    	open.nMaxFile = MAX_PATH;  //指定lpstrFile缓冲的大小,以TCHARs为单位
    	open.lpstrFilter = "文本文件(*.txt)\0*.txt\0所有文件(*.*)\0*.*\0\0";  //打开文件类型
        open.nFilterIndex = 1;  //指定在文件类型控件中当前选择的过滤器的索引
        open.lpstrFileTitle = NULL; // 指向接收选择的文件的文件名和扩展名的缓冲(不带路径信息)。这个成员可以是NULL。
        open.nMaxFileTitle = 0;  //指定lpstrFileTitle缓冲的大小,以TCHARs为单位
    	open.lpstrInitialDir = NULL;  //指向以空字符结束的字符串,可以在这个字符串中指定初始目录。
    	open.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;//位标记的设置,你可以使用来初始化对话框
    	//GetOpenFileName (&open) ;//打开文件对话框
    	//GetSaveFileName(&open);//保存文件对话框
        if (GetOpenFileName(&open))  // 显示打开选择文件对话框。  
        {  
            path = file;  
    		printf(path+"\n");
        }  
    	system("pause");
    	return 0;
    }
    
    

    欢迎关注本人的公众号:编程手札,文章也会在公众号更新

    展开全文
  • C语言 Windows文件选择对话框

    千次阅读 2019-06-27 08:49:42
    // 文件类型 ofn . Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST ; return GetOpenFileName ( & ofn ) ; } int main ( char argc , char * argv [ ] ) { char szFile [ MAX_PATH ] ...

    文件选择对话框显示结果

    #include <windows.h>
    #include <Commdlg.h>
    #include <stdio.h>
    
    // 返回值: 成功 1, 失败 0
    // 通过 path 返回获取的路径
    int FileDialog(char *path)
    {
    	OPENFILENAME ofn;
    	ZeroMemory(&ofn, sizeof(ofn));
        ofn.lStructSize = sizeof(ofn); // 结构大小
        ofn.lpstrFile = path; // 路径
        ofn.nMaxFile = MAX_PATH; // 路径大小
        ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0"; // 文件类型
        ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    	return GetOpenFileName(&ofn);
    }
    
    int main(char argc, char *argv[])
    {
    	char szFile[MAX_PATH] = {0};
    	if(FileDialog(szFile))
    	{
    		puts(szFile);
    	}
    	getchar();
        return 0;
    }
    
    展开全文
  • C语言可不可以像MFC那样,打开文件选择对话框,在里面选择文件,然后打开呢?
  • open.lpstrFilter = "文件(*.*)\0*.*\0"; open.nFilterIndex = 1; open.lpstrFileTitle = NULL; open.nMaxFileTitle = 0; open.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_...
    unsigned char openfile(char* filename) {
    
    	char file[MAX_PATH], * fileselect = NULL;
    	OPENFILENAME open;
    	ZeroMemory(&open, sizeof(OPENFILENAME));
    	open.lStructSize = sizeof(OPENFILENAME);
    	open.lpstrFile = file;
    	open.lpstrFile[0] = '\0';
    	open.nMaxFile = MAX_PATH;
    	open.lpstrFilter = "文件(*.*)\0*.*\0";
    	open.nFilterIndex = 1;
    	open.lpstrFileTitle = NULL;
    	open.nMaxFileTitle = 0;
    	open.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR;
    	if (GetOpenFileName(&open)) {
    		fileselect = open.lpstrFile;
    		strcpy(filename, fileselect);
    		return 1;
    	}
    	else {
    		return 0;
    	}
    }

     

    展开全文
  • 代码片段,在windows下用C语言调用文件选择对话框,以备忘 #define DEFAULT_DIR "" char extraction_path[MAX_PATH] = DEFAULT_DIR; /* * Browse for a folder and update the folder edit box * ...

    代码片段,在windows下用C语言调用文件选择对话框,以备忘


     

    #define DEFAULT_DIR ""
    char extraction_path[MAX_PATH] = DEFAULT_DIR;
    
    
    /*
     * Browse for a folder and update the folder edit box
     * Will use the newer IFileOpenDialog if *compiled* for Vista or later
     */
    void browse_for_folder(void) {
    
    	BROWSEINFOW bi;
    	LPITEMIDLIST pidl;
    
    #if (_WIN32_WINNT >= 0x0600)	// Vista and later
    	WCHAR *wpath;
    	size_t i;
    	HRESULT hr;
    	IShellItem *psi = NULL;
    	IShellItem *si_path = NULL;	// Automatically freed
    	IFileOpenDialog *pfod = NULL;
    	WCHAR *fname;
    	char* tmp_path = NULL;
    
    	// Even if we have Vista support with the compiler,
    	// it does not mean we have the Vista API available
    	INIT_VISTA_SHELL32;
    	if (IS_VISTA_SHELL32_AVAILABLE) {
    		hr = CoCreateInstance(&CLSID_FileOpenDialog, NULL, CLSCTX_INPROC,
    			&IID_IFileOpenDialog, (LPVOID)&pfod);
    		if (FAILED(hr)) {
    			dprintf("CoCreateInstance for FileOpenDialog failed: error %X", hr);
    			pfod = NULL;	// Just in case
    			goto fallback;
    		}
    		hr = pfod->lpVtbl->SetOptions(pfod, FOS_PICKFOLDERS);
    		if (FAILED(hr)) {
    			dprintf("Failed to set folder option for FileOpenDialog: error %X", hr);
    			goto fallback;
    		}
    		// Set the initial folder (if the path is invalid, will simply use last)
    		wpath = utf8_to_wchar(extraction_path);
    		// The new IFileOpenDialog makes us split the path
    		fname = NULL;
    		if ((wpath != NULL) && (wcslen(wpath) >= 1)) {
    			for (i=wcslen(wpath)-1; i!=0; i--) {
    				if (wpath[i] == L'\\') {
    					wpath[i] = 0;
    					fname = &wpath[i+1];
    					break;
    				}
    			}
    		}
    
    		hr = (*pSHCreateItemFromParsingName)(wpath, NULL, &IID_IShellItem, (LPVOID)&si_path);
    		if (SUCCEEDED(hr)) {
    			if (wpath != NULL) {
    				hr = pfod->lpVtbl->SetFolder(pfod, si_path);
    			}
    			if (fname != NULL) {
    				hr = pfod->lpVtbl->SetFileName(pfod, fname);
    			}
    		}
    		safe_free(wpath);
    
    		hr = pfod->lpVtbl->Show(pfod, hMain);
    		if (SUCCEEDED(hr)) {
    			hr = pfod->lpVtbl->GetResult(pfod, &psi);
    			if (SUCCEEDED(hr)) {
    				psi->lpVtbl->GetDisplayName(psi, SIGDN_FILESYSPATH, &wpath);
    				tmp_path = wchar_to_utf8(wpath);
    				CoTaskMemFree(wpath);
    				if (tmp_path == NULL) {
    					dprintf("Could not convert path");
    				} else {
    					safe_strcpy(extraction_path, MAX_PATH, tmp_path);
    					safe_free(tmp_path);
    				}
    			} else {
    				dprintf("Failed to set folder option for FileOpenDialog: error %X", hr);
    			}
    		} else if ((hr & 0xFFFF) != ERROR_CANCELLED) {
    			// If it's not a user cancel, assume the dialog didn't show and fallback
    			dprintf("could not show FileOpenDialog: error %X", hr);
    			goto fallback;
    		}
    		pfod->lpVtbl->Release(pfod);
    		return;
    	}
    fallback:
    	if (pfod != NULL) {
    		pfod->lpVtbl->Release(pfod);
    	}
    #endif
    	INIT_XP_SHELL32;
    	memset(&bi, 0, sizeof(BROWSEINFOW));
    	bi.hwndOwner = hMain;
    	bi.lpszTitle = L"Please select the installation folder:";
    	bi.lpfn = browseinfo_callback;
    	// BIF_NONEWFOLDERBUTTON = 0x00000200 is unknown on MinGW
    	bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS |
    		BIF_DONTGOBELOWDOMAIN | BIF_EDITBOX | 0x00000200;
    	pidl = SHBrowseForFolderW(&bi);
    	if (pidl != NULL) {
    		CoTaskMemFree(pidl);
    	}
    }


     

     

     

    转载于:https://www.cnblogs.com/dyllove98/p/3141072.html

    展开全文
  • c/C++文件(夹)选择对话框
  • #include &lt;windows.h&gt; #include &lt;Commdlg.h&gt; #include &lt;stdio.h&gt; OPENFILENAME ofn;...// a another memory buffer to contain the file name ... // open a fil...
  • c语言--windows文件夹选择对话框--windows api--SHBrowseForFolder
  • 点击按钮,打开文件对话框选择文件,获取文件名路径、文件信息、文件名处理
  • 1. 选择文件对话框,首先引用using Microsoft.Win32名称空间。private void BrowseButton_Click(object sender, RoutedEventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); if(dialog.
  • C语言的控制端程序中调用库函数打开文件选择对话框
  • } /** * 文件夹选择对话框 */ unsigned char browseforfolder(char path[]) { LPITEMIDLIST lpDlist =NULL; TCHAR szPathName[MAX_PATH]; BROWSEINFO bInfo = { 0 }; memset(&bInfo, 0, sizeof(BROWSEINFO)); ...
  • //定义通用文件打开对话框 TCHAR szOpenFileName[80 * MAX_PATH]; memset( szOpenFileName, 0, sizeof( szOpenFileName ) ); ZeroMemory( & ofn, sizeof( ofn ) ); //初始化OPENFILENAME结构参考文档二
  • OPENFILENAME ofn; char szFile[MAX_PATH];...//C语言中,结构体声明后必须要进行初始化结构体 ofn.lStructSize = sizeof(ofn); ofn.lpstrFile = szFile;//打开的文件的全路径 ofn.lpstrFile[0] = TEXT('\0');
  • GetOpenFileName用于创建一个打开文件对话框。存在于头文件commdlg.h。原型BOOL WINAPI GetOpenFileName( _Inout_ LPOPENFILENAME lpofn );lpofn为一个指向OPENFILENAME结构体的指针。 OPENFILENAME是一个包含了...
  • 使用windows API GetOpenFileName()实现的文件选择对话框有如下问题: 鼠标移开之后: 但是windows自带的文件管理器却: 怎么回事呢
  • 一、界面布局 并创建对话框变量 本文案例百度利快云即可下载 二、浏览文件 ①按钮单击 ②驱动器 ③目录框 三、演示
  • // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里 strFilePath = fileDlg.GetPathName(); //SetDlgItemText(IDC_OPEN_EDIT, strFilePath); } } ``` 具体做的是一个OpenGL...
  • 我现在需要跟windows,**任何程序**创建的save/open 文件对话框进行交互,根据msdn所说 [链接](https://dwz.cn/gKNKBrDv ""): > 从vista开始,提供了IFileDIalog接口来替代以前的GetOpenFileName等方法 ...
  • win32api调用打开/保存文件对话框

    千次阅读 2016-11-03 22:33:46
    演示:打开一个文本文件读取其中的第一个整数 #include #include #include using namespace std; int main() { TCHAR szFileName[MAX_PATH] = {}; OPENFILENAMEW openFileName = {}; openFileName....
  • vc编写shell扩展,实现在资源管理器中显示文件预览图,本例为预览dwg文件 驱动器控件、文件文件夹控件的示例和VC预览DWG功能 visual c++编写shellextension扩展插件,实现在打开文件窗口中,选中文件,就会显示文件...
  • VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。本教程中的代码,也都是在VC6.0下运行通过。 使用 在VC6.0下,必须先创建工程...
  • 该函数会弹出一个对话框,提示用户选择一个文件,以字符 串的形式返回一个文件名,如果用户选择cancel,将返回空字符串。 QFileDialog::getOpenFileName() 函数的第一个参数指的是父部件。对话框的 父子关系...
  • http://blog.csdn.net/wudaijun/article/details/8684822 增强对地址空间,文件映射,PE文件格式的理解和应用。 用VS2008开发。
  • 1.弹出对话框 首先调用Windows.h这个头文件 #include<windows.h> 接下来我们调用messagebox MessageBox(0, "你好,天朝", "helloworld", 0); //第一个参数设置为0,第一个参数是依赖的窗口的编号,相当...
  • 1. MessageBox 调用window.h头文件 ... arg1:对话框的内容 arg2:对话框的标题 arg3:对话框类型,设置为0即可 #include<stdio.h> #include<Windows.h> void main() { //printf("Hello world"...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,516
精华内容 5,806
关键字:

c语言文件选择对话框

c语言 订阅