红联Linux门户
Linux帮助

分别在Windows与Ubuntu系统下在C程序中打开选择对话框

发布时间:2016-11-12 15:30:57来源:linux网站作者:SeaTalks
今天看到一哥们问了一个问题“C语言选择文件”,想要在C程序中打开选择对话框进行文件选择。
原问题:
分别在Windows与Ubuntu系统下在C程序中打开选择对话框
我知道这个问题应该是用C调用系统库来实现,而不应该是用C自己写一个窗口程序(太麻烦了)。这个问题勾起了我的兴趣,因为自己从来没这么干过;也十分兴奋,因为没写过Linux下的窗口。于是,一番搜索后,终于让我实现了。
 
上代码:
 
在windows下:
#include <windows.h>
#include <Shlobj.h>
#include <tchar.h>
#include <Commctrl.h>
#pragma comment(lib, "comctl32.lib")
int main()  
{  
LPITEMIDLIST pil = NULL;  
INITCOMMONCONTROLSEX InitCtrls = { 0 };  
TCHAR szBuf[4096] = { 0 };  
BROWSEINFO bi = { 0 };  
bi.hwndOwner = NULL;  
bi.iImage = 0;  
bi.lParam = NULL;  
bi.lpfn = NULL;  
bi.lpszTitle = _T("请选择文件路径");  
bi.pszDisplayName = szBuf;  
bi.ulFlags = BIF_BROWSEINCLUDEFILES;
InitCommonControlsEx(&InitCtrls);//在调用函数SHBrowseForFolder之前需要调用该函数初始化相关环境
pil = SHBrowseForFolder(&bi);  
if (NULL != pil)//若函数执行成功,并且用户选择问件路径并点击确定
{  
SHGetPathFromIDList(pil, szBuf);//获取用户选择的文件路径
wprintf_s(_T("%s"), szBuf);  
}
return 0;  
}
 
在Ubuntu下的代码为:
#include <gtk/gtk.h> 
void select_file()  
{  
GtkWidget *dialog;
dialog=gtk_file_chooser_dialog_new("SelectFile",NULL,GTK_FILE_CHOOSER_ACTION_OPEN,GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,GTK_STOCK_OK,GTK_RESPONSE_ACCEPT,NULL);
if(gtk_dialog_run(GTK_DIALOG(dialog))==GTK_RESPONSE_ACCEPT)  
{  
char *filename;  
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));  
printf("file name is : %s ", filename);  
}  
gtk_widget_destroy(dialog);  
}
int main(int argc,char **argv)  
{  
gtk_init(&argc,&argv);  
select_file();  
return 0;  
}  
 
效果如下:
分别在Windows与Ubuntu系统下在C程序中打开选择对话框
linux下的不好截图,不过效果是一样的。
注:在linux下需要先安装了gtk才能运行。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25955.html