⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q_opendialog.cpp

📁 QCurses全部代码 QCurses全部代码
💻 CPP
字号:
#include   "qcurses/Q_OpenDialog.hpp"//---------------------------------------------------------------------------------------------Q_OpenDialog::Q_OpenDialog(char *vCaption):Q_Dialog("文件打开对话"){	memset(FileName,'\0',30);	memset(DirName,'\0',BUF);	memset(FullFileName,'\0',BUF);	memset(NowDir,'\0',BUF);	memset(OldDir,'\0',BUF);	strcpy(Caption,vCaption);	BreakKey = 0;	NowSelect = 0;	Keys = 0;}//---------------------------------------------------------------------------------------------bool     Q_OpenDialog::Execute(){	//显示界面	bool  RC=false;	Form = newwin(15,70,5,5);	Win = new Q_Window(Form,15,70,0,0,true,COLOR_WHITE,COLOR_BLUE);	Win->SetCaption(Caption,COLOR_WHITE,COLOR_RED);	//建立按钮	Button[0] = new Q_Button(Win->GetHandle(),7,12,42,COLOR_WHITE,COLOR_RED);	Button[0]->Set(" 确 定 ");	Button[1] = new Q_Button(Win->GetHandle(),7,12,52,COLOR_WHITE,COLOR_RED);	Button[1]->Set(" 取 消 ");	//建立列表	List = new Q_List(Win->GetHandle(),13,26,1,3,true,COLOR_WHITE,COLOR_BLUE);	//建立表单	Edit[0] = new Q_Edit(Win->GetHandle(),26,2,39,COLOR_WHITE,COLOR_BLUE,MSTRING); //目录名	Edit[1] = new Q_Edit(Win->GetHandle(),26,3,39,COLOR_WHITE,COLOR_BLUE,MSTRING); //文件名	//建立标签	Label[0] = new Q_Label(Win->GetHandle(),8,2,29,COLOR_WHITE,COLOR_BLUE);	Label[0]->Set(0,"目录名:");	Label[1] = new Q_Label(Win->GetHandle(),8,3,29,COLOR_WHITE,COLOR_BLUE);	Label[1]->Set(0,"文件名:");	//取值	getcwd(OldDir,sizeof(OldDir));	strcpy(NowDir,OldDir);	BreakKey = 0;	NowSelect=0;	Keys=0;	while (BreakKey==0)	{		Win->Refresh();		KeyGo(NowSelect,Keys,2);  //其中 2 为控件的总数量		switch (NowSelect)		{		case 0:			//遍历目录,得到当前目录下的所有目录,并且写入 List 中			struct dirent  *namelist;			DIR   *dirVal;			getcwd(NowDir,sizeof(NowDir));			while ((dirVal = opendir(NowDir))!=NULL)			{				Edit[0]->Set(NowDir);				List->Clear();				while ((namelist = readdir(dirVal)) != NULL)					List->Add(namelist->d_name);				Keys=List->Get();				if(chdir(List->GetValue())==-1)					break;				getcwd(NowDir,sizeof(NowDir));			}			Edit[1]->Set(List->GetValue());			break;		case 1:			Keys=Button[0]->Get();			if (Button[0]->Value)			{				strcpy(FileName,List->GetValue());				getcwd(FullFileName,sizeof(FullFileName));				strcpy(DirName,FullFileName);				strcat(FullFileName,"/");				strcat(FullFileName,FileName);				chdir(OldDir);				BreakKey = 1;				RC = true;			}			break;		case 2:			Keys=Button[1]->Get();			if (Button[1]->Value)				BreakKey = 1;			break;		}	}	//释放资源	delete Button[0];	delete Button[1];	delete List;	delete Edit[0];	delete Edit[1];	delete Label[0];	delete Label[1];	delete Win;	delwin(Form);	return RC;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -