当前位置: 首页>>代码示例>>C++>>正文


C++ path::has_root方法代码示例

本文整理汇总了C++中path::has_root方法的典型用法代码示例。如果您正苦于以下问题:C++ path::has_root方法的具体用法?C++ path::has_root怎么用?C++ path::has_root使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在path的用法示例。


在下文中一共展示了path::has_root方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: relative_to

	static path relative_to(const path &from, const path &to, bool fromdir=true) {
		if(PathIsSameRoot(from.buf, to.buf)) {
			path p;

			if(!PathRelativePathTo(p.buf, from.buf, fromdir?FILE_ATTRIBUTE_DIRECTORY:0, to.buf, 0))
			{
				TCHAR chBuf[1024];
				swprintf_s(chBuf, _countof(chBuf), L"PathRelativePathTo() from:[%s] to:[%s] failed!!", from.buf, to.buf);
				TRACEERR("[path] [relative_to]", chBuf, GetLastError());
				throw path_error("PathRelativePathTo");
			}

			return p;
		}
		else if(to.has_root()) return to;
		else
		{
			TRACEE("[path] [relative_to]  * ERROR:  unable to create relative path: paths have different roots!!");
			throw std::runtime_error("unable to create relative path: paths have different roots");
		}
	}
开发者ID:DroidInteractiveSoftware,项目名称:peerblock,代码行数:21,代码来源:pathx.hpp

示例2: EditList_OnCommand

static void EditList_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {
	switch(id) {
		case IDC_FILE:
		case IDC_URL:
			if(codeNotify==EN_UPDATE || codeNotify==CBN_EDITUPDATE || codeNotify==CBN_SELCHANGE)
				EnableWindow(GetDlgItem(hwnd, IDOK), GetWindowTextLength(hwndCtl)>0);
			break;
		case IDC_ADDFILE:
			EnableWindow(GetDlgItem(hwnd, IDC_URL), FALSE);
			EnableWindow(GetDlgItem(hwnd, IDC_FILE), TRUE);
			EnableWindow(GetDlgItem(hwnd, IDC_BROWSE), TRUE);
			EnableWindow(GetDlgItem(hwnd, IDOK), GetWindowTextLength(GetDlgItem(hwnd, IDC_FILE))>0);
			break;
		case IDC_ADDURL:
			EnableWindow(GetDlgItem(hwnd, IDC_FILE), FALSE);
			EnableWindow(GetDlgItem(hwnd, IDC_BROWSE), FALSE);
			EnableWindow(GetDlgItem(hwnd, IDC_URL), TRUE);
			EnableWindow(GetDlgItem(hwnd, IDOK), GetWindowTextLength(GetDlgItem(hwnd, IDC_URL))>0);
			break;
		case IDC_BROWSE: {
			TCHAR file[MAX_PATH]={0};

			OPENFILENAME ofn={0};
			ofn.lStructSize=sizeof(ofn);
			ofn.hwndOwner=hwnd;
			ofn.lpstrFilter=_T("PeerBlock Lists (*.p2p; *.p2b; *.txt)\0*.p2p;*.p2p;*.p2b;*.txt\0")_T("All Files (*.*)\0*.*\0");
			ofn.lpstrFile=file;
			ofn.nMaxFile=MAX_PATH;
			ofn.Flags=OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;

			if(GetOpenFileName(&ofn)) {
				path p=path::relative_to(path::base_dir(), file);
				SetDlgItemText(hwnd, IDC_FILE, p.c_str());
			}
		} break;
		case IDOK: {
			List **list=(List**)(LONG_PTR)GetWindowLongPtr(hwnd, DWLP_USER);

			if(IsDlgButtonChecked(hwnd, IDC_ADDFILE)==BST_CHECKED) {
				const path file=GetDlgItemText(hwnd, IDC_FILE);

				if(!path::exists(file.has_root()?file:path::base_dir()/file)) {
					MessageBox(hwnd, IDS_INVALIDFILETEXT, IDS_INVALIDFILE, MB_ICONERROR|MB_OK);
					break;
				}

				StaticList *l;

				if(l=dynamic_cast<StaticList*>(*list))
					if(l->File!=file) {
						l->File=file;
						g_ret|=LISTS_NEEDRELOAD;
					}
				else {
					delete *list;
					*list=l=new StaticList;
					l->File=file;

					g_ret|=LISTS_NEEDRELOAD;
				}
			}
			else {
				tstring url=GetDlgItemText(hwnd, IDC_URL);

				if(!(path(url).is_url())) {
					MessageBox(hwnd, IDS_INVALIDURLTEXT, IDS_INVALIDURL, MB_ICONERROR|MB_OK);
					break;
				}

				DynamicList *l;

				if(l=dynamic_cast<DynamicList*>(*list)) {
					if(l->Url!=url) {
						l->Url=url;
						g_ret|=LISTS_NEEDRELOAD;
					}
				}
				else {
					delete *list;
					*list=l=new DynamicList;
					l->Url=url;

					g_ret|=LISTS_NEEDRELOAD;
				}

			}

			List::ListType type=(IsDlgButtonChecked(hwnd, IDC_BLOCK)==BST_CHECKED)?List::Block:List::Allow;

			if((*list)->Type!=type) {
				(*list)->Type=type;
				g_ret|=LISTS_NEEDRELOAD;
			}

			(*list)->Description=GetDlgItemText(hwnd, IDC_DESCRIPTION);

			EndDialog(hwnd, g_ret);
		} break;
		case IDCANCEL:
			EndDialog(hwnd, 0);
//.........这里部分代码省略.........
开发者ID:Cecildt,项目名称:peerblock,代码行数:101,代码来源:editlistproc.cpp

示例3: AddList_OnCommand

static void AddList_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {
	switch(id) {
		case IDC_FILE:
		case IDC_URL:
			if(codeNotify==EN_UPDATE || codeNotify==CBN_EDITUPDATE || codeNotify==CBN_SELCHANGE)
				EnableWindow(GetDlgItem(hwnd, IDOK), GetWindowTextLength(hwndCtl)>0);
			break;
		case IDC_ADDFILE:
			EnableWindow(GetDlgItem(hwnd, IDC_URL), FALSE);
			EnableWindow(GetDlgItem(hwnd, IDC_FILE), TRUE);
			EnableWindow(GetDlgItem(hwnd, IDC_BROWSE), TRUE);
			EnableWindow(GetDlgItem(hwnd, IDOK), GetWindowTextLength(GetDlgItem(hwnd, IDC_FILE))>0);
			break;
		case IDC_ADDURL:
			EnableWindow(GetDlgItem(hwnd, IDC_FILE), FALSE);
			EnableWindow(GetDlgItem(hwnd, IDC_BROWSE), FALSE);
			EnableWindow(GetDlgItem(hwnd, IDC_URL), TRUE);
			EnableWindow(GetDlgItem(hwnd, IDOK), GetWindowTextLength(GetDlgItem(hwnd, IDC_URL))>0);
			break;
		case IDC_BROWSE: {
			TCHAR file[MAX_PATH]={0};

			OPENFILENAME ofn={0};
			ofn.lStructSize=sizeof(ofn);
			ofn.hwndOwner=hwnd;
			ofn.lpstrFilter=_T("PeerBlock Lists (*.p2p; *.p2b; *.txt)\0*.p2p;*.p2p;*.p2b;*.txt\0")_T("All Files (*.*)\0*.*\0");
			ofn.lpstrFile=file;
			ofn.nMaxFile=MAX_PATH;
			ofn.Flags=OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;

			if(GetOpenFileName(&ofn)) {
				path p=path::relative_to(path::base_dir(), file);
				SetDlgItemText(hwnd, IDC_FILE, p.c_str());
			}
		} break;

		case IDOK:
		{
			List **list=(List**)(LONG_PTR)GetWindowLongPtr(hwnd, DWLP_USER);
			bool addedList = false;

			if(IsDlgButtonChecked(hwnd, IDC_ADDFILE)==BST_CHECKED)
			{
				// File-based list
				const path file=GetDlgItemText(hwnd, IDC_FILE);

				if(!path::exists(file.has_root()?file:path::base_dir()/file))
				{
					MessageBox(hwnd, IDS_INVALIDFILETEXT, IDS_INVALIDFILE, MB_ICONERROR|MB_OK);
					break;
				}

				StaticList *l=new StaticList;
				l->File=file;

				*list=l;
				addedList = true;
			}
			else
			{
				TRACEI("[addlistproc] [AddList_OnCommand]    sanity-checking URL-based list");

				// URL-based list
				tstring url=GetDlgItemText(hwnd, IDC_URL);

				if(!(path(url).is_url()))
				{
					TRACEE("[addlistproc] [AddList_OnCommand]  * ERROR:  Not a valid URL!");
					MessageBox(hwnd, IDS_INVALIDURLTEXT, IDS_INVALIDURL, MB_ICONERROR|MB_OK);
					break;
				}

				// sanity-check
				if (g_config.EnableListSanityChecking) url = AddList_SanityCheckUrl(url);

				if (!url.empty())
				{
					// Finally, add this new list!
					TRACEI("[addlistproc] [AddList_OnCommand]    adding new list");
					DynamicList *l=new DynamicList;
					l->Url=url;

					*list=l;
					addedList = true;
				}
				else
				{
					TRACEI("[addlistproc] [AddList_OnCommand]    not adding new list");
					DynamicList *l=new DynamicList;
					l->Url=url;

					*list=l;
				}
			}

			if (addedList)
			{
				TRACEI("[addlistproc] [AddList_OnCommand]    finishing list-add");
				(*list)->Type=(IsDlgButtonChecked(hwnd, IDC_BLOCK)==BST_CHECKED)?List::Block:List::Allow;
				(*list)->Description=GetDlgItemText(hwnd, IDC_DESCRIPTION);
//.........这里部分代码省略.........
开发者ID:wowngasb,项目名称:kl_tool,代码行数:101,代码来源:addlistproc.cpp


注:本文中的path::has_root方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。