亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? articleview.cpp.svn-base

?? wince c++ 下 開發的 rss 閱讀器源代碼
?? SVN-BASE
?? 第 1 頁 / 共 2 頁
字號:
				if (::GetSubMenu(hParentMenu, nIndex) == pMenu->m_hMenu) {
					// when popup is found, m_pParentMenu is containing menu
					state.m_pParentMenu = CMenu::FromHandle(hParentMenu);
					break;
				}
			}
		}
	}

	state.m_nIndexMax = pMenu->GetMenuItemCount();
	for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax; state.m_nIndex++) {
		state.m_nID = pMenu->GetMenuItemID(state.m_nIndex);
		if (state.m_nID == 0)
			continue; // menu separator or invalid cmd - ignore it

		ASSERT(state.m_pOther == NULL);
		ASSERT(state.m_pMenu != NULL);
		if (pMenu->GetSubMenu(state.m_nIndex) != NULL) {
			// possibly a popup menu, route to first item of that popup
			state.m_pSubMenu = pMenu->GetSubMenu(state.m_nIndex);
			if (state.m_pSubMenu == NULL ||
				(state.m_nID = state.m_pSubMenu->GetMenuItemID(0)) == 0 ||
				state.m_nID == (UINT)-1)
			{
				continue; // first item of popup can't be routed to
			}
			state.DoUpdate(this, FALSE); // popups are never auto disabled
		}
		else {
			// normal menu item
			// Auto enable/disable if frame window has 'm_bAutoMenuEnable'
			// set and command is _not_ a system command.
			state.m_pSubMenu = NULL;
			state.DoUpdate(this, TRUE);
		}

		// adjust for menu deletions and additions
		UINT nCount = pMenu->GetMenuItemCount();
		if (nCount < state.m_nIndexMax) {
			state.m_nIndex -= (state.m_nIndexMax - nCount);
			while (state.m_nIndex < nCount &&
				pMenu->GetMenuItemID(state.m_nIndex) == state.m_nID)
			{
				state.m_nIndex++;
			}
		}
		state.m_nIndexMax = nCount;
	}
}

void CArticleView::OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized) {
	if (InFullScreen)
		ToFullScreenMode();
	else
		ToNormalMode();
}

// commands

void CArticleView::OnItemNext() {
	LOG0(1, "CArticleView::OnItemNext()");

	if (View == NULL) return;

	CMainFrame *frame = (CMainFrame *) AfxGetMainWnd();
	if (View->SiteItem != NULL && View->SiteItem->Type == CSiteItem::VFolder) {
		CWaitCursor wait;

		int oldIdx = View->GetSelectedItem();
		int idx = View->GetSelectedItem();

		BOOL found = FALSE;
		while (!found) {
			if (idx < View->GetItemCount() - 1) idx++;
			else if (Config.WrapAround) idx = 0;
			else idx = oldIdx;

			// we are back on the original site
			if (idx == oldIdx) {
				frame->NoNewMessage();
				break;
			}

			// check
			if (View->SiteItem->FlagMask == MESSAGE_READ_STATE) {
				CFeedItem *fi = View->GetItem(idx);
				if (!fi->IsDeleted() && (fi->IsNew() || fi->IsUnread()))
					found = TRUE;
			}
			else
				found = TRUE;
		}

		if (found) {
			View->OpenItem(idx);
			View->EnsureVisible(idx);

			frame->m_wndBanner.Invalidate();
		}
	}
	else {
		CWaitCursor wait;

		int oldIdx = View->GetSelectedItem();
		int oldSite = Config.ActSiteIdx;

		int site = Config.ActSiteIdx;
		int idx = View->GetSelectedItem();

		BOOL found = FALSE;
		while (!found) {
			if (idx < View->GetItemCount() - 1) {
				idx++;
				if (site == oldSite) {
					// we are back on the original item
					if (idx == oldIdx) break;
				}
			}
			else {
				int t = site;
				site = View->MoveToNextChannel();
				if (t == site) break;
				else idx = 0;
			}

			// check
			if (View->GetItemCount() > 0) {
				if (Config.MoveToUnread) {
					CFeedItem *fi = View->GetItem(idx);
					if (!fi->IsDeleted() && (fi->IsNew() || fi->IsUnread()))
						found = TRUE;
				}
				else
					found = TRUE;
			}
		}

		if (found) {
			View->OpenItem(idx);
			View->EnsureVisible(idx);

			frame->m_wndBanner.Invalidate();

			if (oldSite != site) frame->AddSiteToSave(oldSite);
			// TODO: preload the site with unread items if reading only unread
			frame->PreloadSite(site);
		}
		else {
			// get back to original site and item
			frame->SelectSite(oldSite);
			if (View->GetItemCount() > 0) {
				View->SetSelectedItem(oldIdx);
				View->EnsureVisible(oldIdx);
			}

			frame->NoNewMessage();
		}
	}
}

void CArticleView::OnItemPrev() {
	LOG0(1, "CArticleView::OnItemPrev()");

	if (View == NULL) return;

	CMainFrame *frame = (CMainFrame *) AfxGetMainWnd();
	if (View->SiteItem != NULL && View->SiteItem->Type == CSiteItem::VFolder) {
		CWaitCursor wait;

		int oldIdx = View->GetSelectedItem();
		int idx = View->GetSelectedItem();

		BOOL found = FALSE;
		while (!found) {
			if (idx > 0) idx--;
			else if (Config.WrapAround) idx = View->GetItemCount() - 1;
			else idx = oldIdx;

			// we are back on the original site
			if (idx == oldIdx) {
				frame->NoNewMessage();
				break;
			}

			// check
			if (View->SiteItem->FlagMask == MESSAGE_READ_STATE) {
				CFeedItem *fi = View->GetItem(idx);
				if (!fi->IsDeleted() && (fi->IsNew() || fi->IsUnread()))
					found = TRUE;
			}
			else
				found = TRUE;
		}

		if (found) {
			View->OpenItem(idx);
			View->EnsureVisible(idx);

			frame->m_wndBanner.Invalidate();
		}
	}
	else {
		CWaitCursor wait;

		int oldIdx = View->GetSelectedItem();
		int oldSite = Config.ActSiteIdx;

		int site = Config.ActSiteIdx;
		int idx = View->GetSelectedItem();

		BOOL found = FALSE;
		while (!found) {
			if (idx > 0) {
				idx--;
				if (site == oldSite) {
					// we are back on the original site
					if (idx == oldIdx) break;
				}
			}
			else {
				int t = site;
				site = View->MoveToPrevChannel();
				if (t == site) break;
				else idx = View->GetItemCount() - 1;
			}

			// check
			if (View->GetItemCount() > 0) {
				if (Config.MoveToUnread) {
					CFeedItem *fi = View->GetItem(idx);
					if (!fi->IsDeleted() && (fi->IsNew() || fi->IsUnread()))
						found = TRUE;
				}
				else
					found = TRUE;
			}
		}

		if (found) {
			View->OpenItem(idx);
			View->EnsureVisible(idx);

			frame->m_wndBanner.Invalidate();

			if (oldSite != site) frame->AddSiteToSave(oldSite);
			// TODO: preload the site with unread items if reading only unread
			frame->PreloadSite(site);
		}
		else {
			// get back to original site and item
			frame->SelectSite(oldSite);
			if (View->GetItemCount() > 0) {
				View->SetSelectedItem(oldIdx);
				View->EnsureVisible(oldIdx);
			}
			frame->NoNewMessage();
		}
	}
}

void CArticleView::OnItemFlag() {
	LOG0(1, "CArticleView::OnItemFlag()");

	if (View != NULL) {
		CMainFrame *frame = (CMainFrame *) AfxGetMainWnd();

		int selItem = View->GetSelectedItem();
		if (m_pArticle->IsFlagged()) {
			View->UnflagItem(selItem);
			m_pArticle->SetFlags(0, MESSAGE_FLAG);
			frame->m_wndBanner.SetFlagged(-1);
		}
		else {
			View->FlagItem(selItem);
			m_pArticle->SetFlags(MESSAGE_FLAG, MESSAGE_FLAG);
			frame->m_wndBanner.SetFlagged(FLAG_ICON);
		}
		frame->m_wndBanner.Invalidate();
	}
}

void CArticleView::OnUpdateItemFlag(CCmdUI *pCmdUI) {
	LOG0(5, "CArticleView::OnUpdateItemFlag()");

	pCmdUI->SetCheck(m_pArticle->IsFlagged());
}

void CArticleView::OnRefresh() {
	LOG0(3, "CArticleView::OnRefresh()");

	ShowArticle();
}

void CArticleView::OnItemOpen() {
	LOG0(1, "CArticleView::OnItemOpen()");

	ToNormalMode();
	if (m_strContextMnuUrl.IsEmpty()) OpenOnlineMessage(m_pArticle->Link, m_pArticle->SiteItem);
	else OpenOnlineMessage(m_strContextMnuUrl, m_pArticle->SiteItem);
}


void CArticleView::OnEnclosureOpen() {
	LOG0(1, "CArticleView::OnEnclosureOpen()");

	if (m_pArticle != NULL && m_pArticle->HasEnclosure()) {
		CEnclosureItem *ei = m_pArticle->Enclosures.GetHead();
		ToNormalMode();
		OpenEnclosure(ei->URL);
	}
}

void CArticleView::OnUpdateEnclosureOpen(CCmdUI *pCmdUI) {
	LOG0(5, "CArticleView::OnUpdateEnclosureOpen()");

	pCmdUI->Enable(m_pArticle->HasEnclosure());
}


void CArticleView::OnEnclosureGet() {
	LOG0(1, "CArticleView::OnEnclosureOpen()");

	CArray<CFeedItem *, CFeedItem *> items;
	items.Add(m_pArticle);

	CMainFrame *frame = (CMainFrame *) AfxGetMainWnd();
	frame->m_wndUpdateBar.EnqueueEnclosures(items);
	frame->m_wndUpdateBar.Redraw();
	frame->m_wndUpdateBar.Start();
}

void CArticleView::OnUpdateEnclosureGet(CCmdUI *pCmdUI) {
	if (m_pArticle != NULL && m_pArticle->HasEnclosure()) {
		CEnclosureItem *ei = m_pArticle->Enclosures.GetHead();
		pCmdUI->Enable(!IsEnclosureCached(ei->URL));
	}
	else
		pCmdUI->Enable(FALSE);
}

void CArticleView::OnEnclosureDelete() {
	LOG0(1, "CArticleView::OnEnclosureOpen()");

	CArray<CFeedItem *, CFeedItem *> items;
	items.Add(m_pArticle);
	ClearEnclosures(items);

	CMainFrame *frame = (CMainFrame *) AfxGetMainWnd();
	frame->SetupEnclosureBar(m_pArticle);
}

void CArticleView::OnUpdateEnclosureDelete(CCmdUI *pCmdUI) {
	if (m_pArticle->HasEnclosure()) {
		CEnclosureItem *ei = m_pArticle->Enclosures.GetHead();
		pCmdUI->Enable(IsEnclosureCached(ei->URL));
	}
	else
		pCmdUI->Enable(FALSE);
}

void CArticleView::OnCopyUrl() {
	LOG0(1, "CArticleView::OnCopyUrl()");

	CString link;
	if (m_strContextMnuUrl.IsEmpty() && m_pArticle != NULL) link = m_pArticle->Link;
	else link = m_strContextMnuUrl;

	CopyTextToClipboard(GetSafeHwnd(), link);
}

void CArticleView::OnCopy() {
	LOG0(1, "CArticleView::OnCopy()");

	LPSTREAM stream = 0;		// give us the output stream here
	DWORD rsd = 0;				// required, can be checked with SUCCEEDED?...
	CopySelectionToNewIStream(&rsd, &stream);
	if (stream) {
		// got it
		STATSTG stat = { 0 };
		stream->Stat(&stat, 0); // probably check for the S_OK code...

		if (LPBYTE buf = (LPBYTE) LocalAlloc(LHND, (UINT) stat.cbSize.QuadPart + 2)) {
			ULONG ulNumChars;
			// read whole
			if (SUCCEEDED(stream->Read(buf, (ULONG) stat.cbSize.QuadPart, &ulNumChars)) &&
				ulNumChars == stat.cbSize.QuadPart)
			{
				CString strSelectedText((LPCWSTR) buf); // our text here!
				CopyTextToClipboard(GetSafeHwnd(), strSelectedText);
			}

			LocalFree(buf);
		}
		stream->Release();
	}
}

void CArticleView::OnUpdateCopy(CCmdUI *pCmdUI) {
	BOOL isTextSelected = (BOOL) IsSelection();
	pCmdUI->Enable(isTextSelected);
}

void CArticleView::OnLinkOpen() {
	LOG0(1, "CArticleView::OnLinkOpen()");

	ToNormalMode();
	OpenOnlineMessage(m_strContextMnuUrl, m_pArticle->SiteItem);
}

void CArticleView::OnLinkDownload() {
	LOG0(1, "CArticleView::OnLinkDownload()");

	CMainFrame *frame = (CMainFrame *) AfxGetMainWnd();
	frame->m_wndUpdateBar.EnqueueItem(m_strContextMnuUrl, FILE_TYPE_HTML);
	frame->m_wndUpdateBar.Redraw();
	frame->m_wndUpdateBar.Start();
}

void CArticleView::OnBookmarkLink(UINT nID) {
	ToNormalMode();

	// link to bookmark
	CString link;
	if (m_strContextMnuUrl.IsEmpty() && m_pArticle != NULL) link = m_pArticle->Link;
	else link = m_strContextMnuUrl;

	int idx = nID - ID_SOCIAL_BOOKMARK_BASE;
	CSocialBookmarkSite *sbs = Config.SocialBookmarkSites[idx];
	CString url = sbs->Url;
	if (url.Replace(_T("[%URL%]"), UrlEncode(link)) != 1) {
		Error(IDS_BAD_URL_FMT_SBS);
		return;
	}

	// if the [%TITLE%] is not present, this will do nothing, which is ok
	if (m_strContextMenuLinkName.GetLength() > 0)
		url.Replace(_T("[%TITLE%]"), UrlEncode(m_pArticle->Title + _T(" - ") + m_strContextMenuLinkName));
	else
		url.Replace(_T("[%TITLE%]"), UrlEncode(m_pArticle->Title));

	// open browser
	OpenUrlExt(url);

	m_strContextMenuLinkName.Empty();
}

void CArticleView::OnViewImage() {
	CString fileName = GetCacheFile(FILE_TYPE_IMAGE, Config.CacheLocation, m_strContextMnuUrl);
	if (FileExists(fileName)) ShellOpenFile(fileName); 		// file is cached -> open it with a local program
	else OpenUrlExt(m_strContextMnuUrl);					// file not cached -> use web browser to open it
}

void CArticleView::OnCopyImageLocation() {
	CopyTextToClipboard(GetSafeHwnd(), m_strContextMnuUrl);
}

void CArticleView::OnSendByEmail() {
	ToNormalMode();

	CString link;
	if (m_strContextMnuUrl.IsEmpty() && m_pArticle != NULL) link = m_pArticle->Link;
	else link = m_strContextMnuUrl;

	SendByEmail(link);
}

void CArticleView::ToFullScreenMode() {
	if (!InFullScreen) {
		CMainFrame *frame = (CMainFrame *) AfxGetMainWnd();
		HWND hWnd = frame->GetSafeHwnd();

		SHSipPreference(hWnd, SIP_FORCEDOWN);				// hide SIP
		SetForegroundWindow();
		SHFullScreen(hWnd, SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON);
		::ShowWindow(frame->m_hwndCmdBar, SW_HIDE);


		HDC hDC = ::GetDC(hWnd);
		::MoveWindow(hWnd, 0, 0, GetDeviceCaps(hDC, HORZRES), GetDeviceCaps(hDC, VERTRES), TRUE);
		::ReleaseDC(hWnd, hDC);

		InFullScreen = TRUE;
	}
}

void CArticleView::ToNormalMode() {
	if (InFullScreen) {
		CMainFrame *frame = (CMainFrame *) AfxGetMainWnd();
		HWND hWnd = frame->GetSafeHwnd();

		SHFullScreen(hWnd, SHFS_SHOWTASKBAR | SHFS_SHOWSTARTICON | SHFS_SHOWSIPBUTTON);
		::ShowWindow(frame->m_hwndCmdBar, SW_SHOW);

#define MENU_HEIGHT 	26
		RECT rc;
		::GetWindowRect(hWnd, &rc);
		::MoveWindow(hWnd, rc.left, rc.top + SCALEY(MENU_HEIGHT), rc.right, rc.bottom - (2 * SCALEY(MENU_HEIGHT)), TRUE);

		InFullScreen = FALSE;
	}
}

void CArticleView::OnFullscreen() {
	if (InFullScreen) ToNormalMode();
	else ToFullScreenMode();
}

void CArticleView::OnUpdateFullscreen(CCmdUI *pCmdUI) {
	pCmdUI->SetCheck(InFullScreen);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一线二线三线视频| 欧美一区午夜视频在线观看| 国产在线播精品第三| 精品毛片乱码1区2区3区| av中文字幕亚洲| 久久国产欧美日韩精品| 国产精品99久久久久久有的能看 | 亚洲欧洲综合另类| 亚洲自拍偷拍欧美| 99久久精品免费观看| 日本欧美大码aⅴ在线播放| 日韩国产精品久久久久久亚洲| 亚洲黄色片在线观看| 亚洲猫色日本管| 一区二区三区在线观看国产| 亚洲夂夂婷婷色拍ww47 | 久久疯狂做爰流白浆xx| 国内一区二区视频| 成人av电影观看| 欧美三级电影网| 欧美一区二区高清| 国产精品色婷婷| 一区二区三区四区中文字幕| 日韩国产成人精品| 国产成a人无v码亚洲福利| 一本大道久久a久久综合婷婷| 一本色道综合亚洲| 26uuu成人网一区二区三区| 久久久一区二区三区| 亚洲精品欧美二区三区中文字幕| 日韩主播视频在线| 大陆成人av片| 欧美精品tushy高清| 精品入口麻豆88视频| 中文字幕在线一区| 日韩国产欧美在线观看| 国产精品一区三区| 欧美日韩一区二区三区免费看| 亚洲精品一区二区精华| 亚洲精品一二三| 精品一二三四区| 欧美亚洲禁片免费| 精品日韩99亚洲| 国产女人18毛片水真多成人如厕 | 欧美综合一区二区| 久久综合久久综合久久| 亚洲一区二区三区自拍| 国产精品白丝jk黑袜喷水| 欧美视频完全免费看| 国产精品网友自拍| 久久99国产精品尤物| 欧美吞精做爰啪啪高潮| 中文字幕欧美激情一区| 久久精品国产77777蜜臀| 91免费版在线看| 久久久99精品免费观看不卡| 亚洲va国产va欧美va观看| 精品一区二区三区免费视频| 欧美日韩一区不卡| 亚洲天堂中文字幕| 国产一区欧美一区| 日韩美一区二区三区| 亚洲精品视频在线看| 成人性色生活片免费看爆迷你毛片| 日韩三级在线观看| 日韩成人精品在线| 欧美高清视频不卡网| 亚洲第一在线综合网站| 在线国产亚洲欧美| 亚洲激情中文1区| 色综合中文字幕国产 | 国产精品天天看| 久久99精品国产.久久久久久| 欧美日韩一区二区电影| 亚洲成人av一区二区| 欧美视频在线观看一区二区| 一区二区三区中文在线| 色先锋aa成人| 亚洲精品水蜜桃| 92国产精品观看| 亚洲欧洲日产国产综合网| 成人国产在线观看| 欧美精品一区二区三区高清aⅴ| 五月激情综合婷婷| 欧美日韩一级黄| 日韩中文欧美在线| 欧美一区二区三区免费大片 | 亚洲成人av中文| av电影在线不卡| 夜夜嗨av一区二区三区| 欧美午夜视频网站| 日韩高清不卡一区| xfplay精品久久| 99这里只有久久精品视频| 一区二区三区在线播| 日韩三区在线观看| 成人免费高清在线| 亚洲资源在线观看| 欧美一区二区视频在线观看2020 | 欧美伊人久久久久久久久影院| 亚洲一二三专区| 欧美一级片免费看| 成人av影视在线观看| 亚洲自拍偷拍网站| 久久久夜色精品亚洲| 色先锋资源久久综合| 久久精品国产亚洲aⅴ| 国产精品电影一区二区三区| 欧美自拍偷拍一区| 久久97超碰国产精品超碰| 国产精品伦理一区二区| 欧美日韩一区二区在线视频| 国精产品一区一区三区mba视频| 欧美国产激情二区三区| 欧美老年两性高潮| 成人午夜视频在线观看| 午夜精品影院在线观看| 国产喂奶挤奶一区二区三区| 欧美日韩视频专区在线播放| 国产激情偷乱视频一区二区三区| 亚洲资源中文字幕| 国产精品美女视频| 精品99久久久久久| 欧美日韩视频在线第一区 | 波多野结衣在线aⅴ中文字幕不卡| 亚洲午夜久久久久久久久电影院| 久久久一区二区| 日韩欧美成人激情| 欧美性色黄大片| www..com久久爱| 国产精品18久久久久久久久久久久 | 亚洲国产日韩一级| 国产精品丝袜久久久久久app| 欧美一级片在线观看| 欧美体内she精高潮| av资源站一区| 成人毛片在线观看| 国产精品亚洲视频| 国产精选一区二区三区| 久久精工是国产品牌吗| 午夜激情一区二区| 亚洲成人av免费| 亚洲成人一二三| 亚洲福利视频三区| 亚洲综合色噜噜狠狠| 日韩美女精品在线| 亚洲日本欧美天堂| 亚洲欧洲综合另类| 亚洲激情在线激情| 天堂一区二区在线| 视频一区国产视频| 日韩av不卡一区二区| 免费观看久久久4p| 秋霞国产午夜精品免费视频| 午夜视频久久久久久| 五月婷婷久久综合| 全部av―极品视觉盛宴亚洲| 麻豆精品视频在线观看视频| 激情五月播播久久久精品| 精品综合免费视频观看| 国产精品自在在线| 成人高清免费观看| 91污片在线观看| 欧美私模裸体表演在线观看| 欧美日韩一卡二卡| 精品国产乱码91久久久久久网站| 2021久久国产精品不只是精品| 精品99一区二区| 1000精品久久久久久久久| 一区二区三区在线免费播放| 天天av天天翘天天综合网| 久久精品国产99| 99热国产精品| 在线电影院国产精品| 久久日韩精品一区二区五区| 国产精品女同互慰在线看| 亚洲精品国产精华液| 美女爽到高潮91| aaa国产一区| 欧美疯狂性受xxxxx喷水图片| 26uuu另类欧美亚洲曰本| 亚洲视频图片小说| 美女网站色91| 色欧美片视频在线观看在线视频| 欧美日韩第一区日日骚| 久久久精品免费观看| 亚洲一区二区三区四区中文字幕| 蜜臀久久99精品久久久久宅男| 国产精品自拍av| 精品1区2区3区| 国产性做久久久久久| 亚洲一区二区成人在线观看| 极品少妇一区二区三区精品视频| 99re8在线精品视频免费播放| 日韩一区二区视频| 又紧又大又爽精品一区二区| 国产老妇另类xxxxx| 欧美精品黑人性xxxx| 国产精品久久久久婷婷二区次| 日韩av成人高清|