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

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

?? winappex.cpp

?? VC開發實用實例
?? CPP
字號:
// WinAppEx.cpp : implementation file
//

//類名:CWinAppEx
//功能:替換應用類,顯示Office2000菜單風格
//修改人:徐景周(jingzhou_xu@163.net)
//組織:未來工作室(Future Studio)
//日期:2001.12.1
#include "stdafx.h"
#include "..\resource.h"  //上一級目錄中
#include "WinAppEx.h"
#include "MDIFrmEx.h"
#include "DocTplEx.h"
//#include "MenuSetup.h" //已去掉設置對話框,此類無用,去掉

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CWinAppEx

IMPLEMENT_DYNCREATE(CWinAppEx, CWinApp)

CWinAppEx::CWinAppEx()
{
	m_bDrawGrayed=FALSE;
}

CWinAppEx::~CWinAppEx()
{
}

BOOL CWinAppEx::InitInstance()
{
	m_lpWndClass=AfxRegisterWndClass(CS_CLASSDC|CS_GLOBALCLASS|CS_VREDRAW|CS_HREDRAW|CS_NOCLOSE|CS_SAVEBITS,
										(HCURSOR) 0,::GetSysColorBrush(COLOR_MENU));
	BOOL bReturn=CWinApp::InitInstance();
	m_iMenuParameter=GetProfileInt("MenuParameter","Thresold",5);
	AdjustToolBars();
	CMDIFrameEx* pFrame=(CMDIFrameEx*)m_pMainWnd;
	ASSERT (pFrame->IsKindOf(RUNTIME_CLASS(CMDIFrameEx)));
	CString strTmp;
	CMenuEx* pMenu=pFrame->GetMainMenu();
	if (pMenu)
	{
		strTmp.Format("Menu%d",pFrame->m_nIDResource);
		SetupMenu(pMenu,strTmp);
		pFrame->RefreshMenuBar(pMenu,pFrame->GetWindowMenuPopup(pMenu));
	}
	POSITION pos;
	pos=GetFirstDocTemplatePosition();
	while(pos)
	{
		CMultiDocTemplateEx* pTemplate=(CMultiDocTemplateEx*)GetNextDocTemplate(pos);
		ASSERT(pTemplate->IsKindOf(RUNTIME_CLASS(CMultiDocTemplateEx)));
		CMenuEx* pMenu=pTemplate->GetMenu();
		if (pMenu)
		{
			strTmp.Format("Menu%d",pTemplate->m_nIDResource);
			SetupMenu(pMenu,strTmp);
		}
	}
	pFrame->PostMessage(WM_ACTIVATE,WA_ACTIVE,0);
	AfxGetApp()->DoWaitCursor(-1);
	return bReturn;
}

int CWinAppEx::ExitInstance()
{
	return CWinApp::ExitInstance();
}

BEGIN_MESSAGE_MAP(CWinAppEx, CWinApp)
	//{{AFX_MSG_MAP(CWinAppEx)
//	ON_COMMAND(IDM_MENU, OnMenuSetup)
	ON_COMMAND(ID_SHOWFULL, OnShowfull)
	ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpdateRecentFileMenu)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWinAppEx message handlers

////已去掉設置對話框,此類無用,可去掉
void CWinAppEx::OnMenuSetup() 
{

//	CMenuSetup dlg(AfxGetMainWnd());
	CMDIFrameEx* pFrame=(CMDIFrameEx*)AfxGetMainWnd();
	ASSERT (pFrame->IsKindOf(RUNTIME_CLASS(CMDIFrameEx)));
	CString strTmp;
	
//	dlg.m_MenuList.SetSize(1);
//	dlg.m_MenuList[0].m_nIDResource=pFrame->m_nIDResource;
//	dlg.m_MenuList[0].m_MenuName=m_pszAppName;
	CMenuEx* pMenu=pFrame->GetMainMenu();
	if (pMenu)
	{
		strTmp.Format("Menu%d",pFrame->m_nIDResource);
		SaveMenuChanges(pMenu,strTmp);
	}
/*
	UINT n=2;
	POSITION pos;
	pos=GetFirstDocTemplatePosition();
	CMultiDocTemplateEx* pTemplate;
	while(pos)
	{
		pTemplate=(CMultiDocTemplateEx*)GetNextDocTemplate(pos);
		ASSERT(pTemplate->IsKindOf(RUNTIME_CLASS(CMultiDocTemplateEx)));
		dlg.m_MenuList.SetSize(n);
		dlg.m_MenuList[n-1].m_nIDResource=pTemplate->m_nIDResource;
		pTemplate->GetDocString(dlg.m_MenuList[n-1].m_MenuName,CDocTemplate::regFileTypeName);
		n++;
		CMenuEx* pMenu=pTemplate->GetMenu();
		if (pMenu)
		{
			strTmp.Format("Menu%d",pTemplate->m_nIDResource);
			SaveMenuChanges(pMenu,strTmp);
		}
	}
	n=pFrame->m_ToolBarList.GetSize();
	dlg.m_ToolBarList.SetSize(n);
	CToolbarEx* pBar;
	for(UINT i=0;i<n;i++)
	{
		pBar=pFrame->m_ToolBarList[i];
		if (pBar)
		{
			dlg.m_ToolBarList[i].m_nIDResource=pBar->m_nIDResource;
			dlg.m_ToolBarList[i].m_MenuName.Format("ToolBar #%d",i+1);
		}
	}

	if(dlg.DoModal()==IDOK)	OnMenuSilent();
*/
}

void CWinAppEx::OnMenuSilent()
{
	AdjustToolBars();
	CMenuEx TmpMenu;
	CMDIFrameEx* pFrame=(CMDIFrameEx*)AfxGetMainWnd();
	ASSERT (pFrame->IsKindOf(RUNTIME_CLASS(CMDIFrameEx)));
	pFrame->EnableMenuChange(FALSE);
	CString strTmp;
	CMenuEx* pMenu=pFrame->GetMainMenu();
	if (pMenu)
	{
		strTmp.Format("Menu%d",pFrame->m_nIDResource);
		pMenu->DestroyMenu();
		pMenu->LoadMenu(pFrame->m_nIDResource);
		SetupMenu(pMenu,strTmp);
		pFrame->LoadMenuToolBars();
	}
	POSITION pos;
	pos=GetFirstDocTemplatePosition();
	while(pos)
	{
		CMultiDocTemplateEx* pTemplate=(CMultiDocTemplateEx*)GetNextDocTemplate(pos);
		ASSERT(pTemplate->IsKindOf(RUNTIME_CLASS(CMultiDocTemplateEx)));
		CMenuEx* pMenu=pTemplate->GetMenu();
		if (pMenu)
		{
			strTmp.Format("Menu%d",pTemplate->m_nIDResource);
			pMenu->DestroyMenu();
			pMenu->LoadMenu(pTemplate->m_nIDResource);
			SetupMenu(pMenu,strTmp);
			pTemplate->LoadMenuToolBars();
		}
	}
	pFrame->EnableMenuChange(TRUE);
	pFrame->RefreshMenuBar(NULL,NULL);
	pFrame->PostMessage(WM_ACTIVATE,WA_ACTIVE,0);
	AfxGetApp()->DoWaitCursor(-1);
}


void CWinAppEx::AdjustToolBars()
{
	CMDIFrameEx* pFrame=(CMDIFrameEx*)m_pMainWnd;
	ASSERT (pFrame->IsKindOf(RUNTIME_CLASS(CMDIFrameEx)));
	UINT n=pFrame->m_ToolBarList.GetSize();
	CToolbarEx* pBar;
	CString  strTmp;
	for(UINT i=0;i<n;i++)
	{
		pBar=pFrame->m_ToolBarList[i];
		if (pBar)
		{
			strTmp.Format("Toolbar%d",pBar->m_nIDResource);
			SetToolBar(*(pBar), (pBar)->m_nIDResource ,strTmp);
		}
	}
}

void CWinAppEx::SetToolBar(CToolBar &ToolBar, UINT id, const char *section)
{
	CToolBarCtrl &t=ToolBar.GetToolBarCtrl();
	CString str;
	int nn;

	ToolBar.LoadToolBar(id);
	nn=t.GetButtonCount();

	UINT *tb,n;
	tb=new UINT[nn];
	UINT *ti;
	ti=new UINT[nn];
	int j=0,ns=0;
	for (int i=0;i<nn;i++)
	{
		int nID=ToolBar.GetItemID(i);
		if (nID==ID_SEPARATOR) 
		{
			ns++;
			if (j!=0 && tb[j-1]!=ID_SEPARATOR) 
			{
				tb[j]=nID; 
				ti[j]=0; 
				j++;
			} 
			continue;
		}
		else
		{
			str.Format("ID_%d",nID);
			n=GetProfileInt(section,str,0x8000);
			if (n) 
			{
				tb[j]=nID;
				ti[j]=i-ns; 
				j++;
			}
		}
	}
	if (j!=0 && tb[j-1]==ID_SEPARATOR) j--;
	ToolBar.SetButtons(tb,j);
	for(i=0;i<j;i++)
	{
		if (tb[i]!=ID_SEPARATOR)
			{ToolBar.SetButtonInfo(i,tb[i],TBBS_BUTTON,ti[i]);}
		else
			{ToolBar.SetButtonInfo(i,0,TBBS_SEPARATOR,0);}
	}
	ToolBar.CalcFixedLayout(TRUE,FALSE);
	CFrameWnd* f=ToolBar.GetDockingFrame();
	if (f) f->RecalcLayout();

	delete[]tb;
	delete[]ti;
}

CMenuEx* CWinAppEx::SetupMenu(CMenuEx *pTopMenu, const char *section)
{
	CMenuEx* pCurMenu = NULL;
	int iPos,iLastSep;
	CMenuEx* pMenu;
	int LastSep;
	int nMenu=pTopMenu->GetMenuItemCount();
	int nPrev=0; 
	LastSep=-1;
	iLastSep=-1;
	for (iPos = nMenu-1; iPos >= 0; iPos--)
	{
			if (pMenu = pTopMenu->GetSubMenu(iPos))
			{
				if (!SetupMenu(pMenu,section))
				{
					pTopMenu->DeleteMenu(iPos,MF_BYPOSITION);
					nMenu--;
					iLastSep--;
				}
				else nPrev++;
			}
			else  
			{
				UINT nID=pTopMenu->GetMenuItemID(iPos);
				if (nID==ID_SEPARATOR)
				{
					if (nPrev==0)
					{
						pTopMenu->DeleteMenu(iPos,MF_BYPOSITION);
						nMenu--;
						iLastSep--;
					}
					else 
					{
						nPrev=0;
						LastSep=iPos;
						iLastSep=iPos;
					}
				}
				else
				{
					CString str;
					str.Format("ID_%d",nID);
					UINT t;
					t=GetProfileInt(section,str,0x8000);
					if (!t) 
					{
						pTopMenu->DeleteMenu(iPos,MF_BYPOSITION);
						nMenu--;
						iLastSep--;
					}
					else
					{
						nPrev++;
						LastSep=-1;
						t&=0xffff;
						if (t<0x8000)
							pTopMenu->ModifyFlagsEx(nID,MF_DRAWGRAYED|t);
						else
							pTopMenu->ModifyFlagsEx(nID,t);
					}
				}
			}
			if (iLastSep==iPos+1)
			{
				int nFlagsEx=pTopMenu->GetFlagsEx(iLastSep+1);
				nFlagsEx&=pTopMenu->GetFlagsEx(iPos);
				if (nFlagsEx&MF_DRAWGRAYED)
					pTopMenu->ModifyODSeparator(iLastSep,MF_DRAWGRAYED);
				iLastSep=-1;
			}
	}
	if (LastSep>=0 && pTopMenu->GetMenuItemID(0)==ID_SEPARATOR) 
		pTopMenu->DeleteMenu(0,MF_BYPOSITION);
	nMenu=pTopMenu->GetMenuItemCount();
	if (nMenu>0 && pTopMenu->GetMenuItemID(nMenu-1)==ID_SEPARATOR)
	{
		pTopMenu->DeleteMenu(nMenu-1,MF_BYPOSITION);
		nMenu--;
	}
	if (nMenu==0) return NULL;
	return pTopMenu;
}

CMenuEx* CWinAppEx::SaveMenuChanges(CMenuEx *pTopMenu, const char *section)
{
	int iPos;
	CMenuEx* pMenu;
	int nMenu=pTopMenu->GetMenuItemCount();
	for (iPos = nMenu-1; iPos >= 0; iPos--)
	{
			if (pMenu = pTopMenu->GetSubMenu(iPos))
			{
				SaveMenuChanges(pMenu,section);
			}
			else  
			{
				UINT nID=pTopMenu->GetMenuItemID(iPos);
				if (nID==ID_SEPARATOR) 
					continue;
				else
				{
					CString str;
					str.Format("ID_%d",nID);
					UINT t=pTopMenu->GetFlagsEx(iPos);
					t&=0xffff;
					WriteProfileInt(section,str,t);
				}
			}
	}
	if (nMenu==0) return NULL;
	return pTopMenu;
}

void CWinAppEx::OnShowfull() 
{
	// TODO: Add your command handler code here
	
}

/////////////////////////////////////////////////////////////////////////////
// MRU file list custom implementation

void CWinAppEx::OnUpdateRecentFileMenu(CCmdUI* pCmdUI)
{
	ASSERT_VALID(this);
	if (m_pRecentFileList == NULL) // no MRU files
		pCmdUI->Enable(FALSE);
	else
	{
		ASSERT(m_pRecentFileList->m_arrNames != NULL);

		CMenuEx* pMenu = (CMenuEx*)pCmdUI->m_pMenu;
		if (m_pRecentFileList->m_strOriginal.IsEmpty() && pMenu != NULL)
			pMenu->GetMenuString(pCmdUI->m_nID, m_pRecentFileList->m_strOriginal, MF_BYCOMMAND);

		if (m_pRecentFileList->m_arrNames[0].IsEmpty())
		{
			// no MRU files
			if (!m_pRecentFileList->m_strOriginal.IsEmpty())
				pCmdUI->SetText(m_pRecentFileList->m_strOriginal);
			pCmdUI->Enable(FALSE);
			return;
		}

		if (pCmdUI->m_pMenu == NULL)
			return;

		ASSERT(pMenu->IsKindOf(RUNTIME_CLASS(CMenuEx)));

		for (int iMRU = 0; iMRU < m_pRecentFileList->m_nSize; iMRU++)
			pMenu->DeleteMenu(pCmdUI->m_nID + iMRU, MF_BYCOMMAND);

		TCHAR szCurDir[_MAX_PATH];
		GetCurrentDirectory(_MAX_PATH, szCurDir);
		int nCurDir = lstrlen(szCurDir);
		ASSERT(nCurDir >= 0);
		szCurDir[nCurDir] = '\\';
		szCurDir[++nCurDir] = '\0';

		CString strName;
		CString strTemp;
		for (iMRU = 0; iMRU < m_pRecentFileList->m_nSize; iMRU++)
		{
			if (!m_pRecentFileList->GetDisplayName(strName, iMRU, szCurDir, nCurDir))
				break;

			// double up any '&' characters so they are not underlined
			LPCTSTR lpszSrc = strName;
			LPTSTR lpszDest = strTemp.GetBuffer(strName.GetLength()*2);
			while (*lpszSrc != 0)
			{
				if (*lpszSrc == '&')
					*lpszDest++ = '&';
				if (_istlead(*lpszSrc))
					*lpszDest++ = *lpszSrc++;
				*lpszDest++ = *lpszSrc++;
			}
			*lpszDest = 0;
			strTemp.ReleaseBuffer();

			// insert mnemonic + the file name
			TCHAR buf[10];
			wsprintf(buf, _T("&%d "), (iMRU+1+m_pRecentFileList->m_nStart) % 10);
			pMenu->InsertMenu(pCmdUI->m_nIndex++,
				MF_STRING | MF_BYPOSITION, pCmdUI->m_nID++,
				CString(buf) + strTemp);
		}

		// update end menu count
		pCmdUI->m_nIndex--; // point to last menu added
		pCmdUI->m_nIndexMax = pCmdUI->m_pMenu->GetMenuItemCount();

		pCmdUI->m_bEnableChanged = TRUE;    // all the added items are enabled
		int allok=1;
		for (UINT h=0;h<pCmdUI->m_nIndexMax-1;h++)
		{
			if ((pMenu->GetFlagsEx(h)&MF_DRAWGRAYED)!=0
				&& pMenu->GetMenuItemID(h)!=ID_SEPARATOR)
			{
				allok=0;
				break;
			}
		}
		if(allok) pMenu->SetFlagsEx(pCmdUI->m_nIndexMax-1,
									pMenu->GetFlagsEx(pCmdUI->m_nIndexMax-1)|MF_DRAWGRAYED);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线亚洲+欧美+日本专区| 色av成人天堂桃色av| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 国产乱码一区二区三区| 色诱亚洲精品久久久久久| 日韩女优电影在线观看| 一区二区三区日韩精品| 国产精品小仙女| 欧美一区二区三区的| 一区二区三区在线观看网站| 国产成人激情av| 日韩一区二区三免费高清| 一区二区三区成人| 99久久久精品| 国产人妖乱国产精品人妖| 久久精品国产亚洲高清剧情介绍 | 中文字幕精品—区二区四季| 青青草国产精品亚洲专区无| 在线视频国内一区二区| 亚洲啪啪综合av一区二区三区| 国产寡妇亲子伦一区二区| 欧美成人性福生活免费看| 蜜臀av性久久久久蜜臀av麻豆| 欧美日韩黄视频| 性久久久久久久| 欧美综合一区二区| 亚洲电影第三页| 欧美日本不卡视频| 午夜亚洲国产au精品一区二区| 欧美综合天天夜夜久久| 亚洲制服欧美中文字幕中文字幕| 91日韩在线专区| 亚洲免费在线观看视频| 99久久免费视频.com| 亚洲色图制服丝袜| 99久久99久久免费精品蜜臀| 亚洲欧美精品午睡沙发| 欧美三级乱人伦电影| 亚洲成人精品影院| 91精品国产91久久综合桃花| 另类小说综合欧美亚洲| 久久久精品2019中文字幕之3| 国产一区999| 国产精品女同一区二区三区| 91视频你懂的| 日韩精品午夜视频| 26uuu久久综合| 99久久综合精品| 五月天一区二区| 精品入口麻豆88视频| 懂色av中文字幕一区二区三区| 国产亚洲成av人在线观看导航| av日韩在线网站| 亚洲成人精品一区| 亚洲精品一线二线三线| 99久久久久久| 天天亚洲美女在线视频| 久久精品这里都是精品| 97se狠狠狠综合亚洲狠狠| 亚洲一区日韩精品中文字幕| 欧美变态凌虐bdsm| 成人高清视频免费观看| 亚洲成人午夜影院| 国产亚洲精品aa| 欧美日韩一区高清| 国产成人亚洲综合a∨婷婷| 亚洲精品视频一区二区| 欧美本精品男人aⅴ天堂| 不卡一区二区中文字幕| 水蜜桃久久夜色精品一区的特点 | 91精品国产一区二区| 国产精品综合在线视频| 亚洲一区二区三区四区的| 久久亚洲精品小早川怜子| 在线观看亚洲精品视频| 国产激情视频一区二区在线观看| 亚洲第一电影网| 中文字幕中文在线不卡住| 欧美一级夜夜爽| 成人在线综合网| 欧美日韩在线观看一区二区| 中文字幕亚洲综合久久菠萝蜜| www.视频一区| 日本一道高清亚洲日美韩| 国产精品第四页| 日韩欧美一级二级三级| 99久久精品免费看国产 | 国产免费观看久久| 欧美在线一区二区| 欧美日韩视频不卡| 成人在线一区二区三区| 男人的天堂久久精品| 亚洲视频免费看| 国产亚洲欧洲997久久综合| 欧美美女一区二区| 91日韩一区二区三区| 欧美日韩国产大片| 国产成人啪免费观看软件| 国产精品免费av| 欧美性生活影院| 亚洲女同ⅹxx女同tv| 中文字幕久久午夜不卡| 亚洲精品一区二区三区在线观看| 欧美色图免费看| 色狠狠一区二区三区香蕉| 成人午夜电影网站| 粉嫩aⅴ一区二区三区四区| 国内精品国产成人| 激情另类小说区图片区视频区| 日本欧美一区二区| 日韩和欧美一区二区| 亚洲国产成人porn| 视频一区二区不卡| 天天综合天天综合色| 日韩不卡手机在线v区| 日韩av一二三| 美美哒免费高清在线观看视频一区二区 | 日韩一区二区免费电影| 亚洲一级电影视频| 最近日韩中文字幕| 欧美日韩免费不卡视频一区二区三区 | 精品国产凹凸成av人网站| 日韩一级精品视频在线观看| 欧美一二区视频| 欧美xxxxx牲另类人与| 337p日本欧洲亚洲大胆精品| 亚洲精品一区在线观看| 国产欧美精品一区二区三区四区 | 久久国内精品视频| 国内外成人在线| 春色校园综合激情亚洲| 97se亚洲国产综合在线| 国产尤物一区二区在线| 91一区一区三区| 欧洲激情一区二区| 91精品国产综合久久精品图片| 日韩欧美在线观看一区二区三区| 精品蜜桃在线看| 中文成人av在线| 亚洲一区二区三区在线看 | 1区2区3区国产精品| 亚洲精品国产a久久久久久| 五月天国产精品| 国模冰冰炮一区二区| av在线播放不卡| 在线播放国产精品二区一二区四区| 日韩美女一区二区三区四区| 国产精品免费看片| 高清在线不卡av| 色美美综合视频| 26uuu色噜噜精品一区| 成人免费小视频| 激情五月播播久久久精品| 91香蕉视频污| 日韩一区二区精品| 亚洲人成在线观看一区二区| 秋霞午夜av一区二区三区| 成人精品电影在线观看| 自拍偷拍亚洲激情| 男人操女人的视频在线观看欧美| 免费不卡在线视频| 成人手机电影网| 久久激情综合网| 91视频精品在这里| 精品国产精品网麻豆系列| 亚洲蜜臀av乱码久久精品| 国产一区二区三区免费在线观看| av亚洲精华国产精华| 2020国产精品久久精品美国| 亚洲午夜电影在线| 床上的激情91.| 欧美成人三级电影在线| 亚洲二区在线视频| aaa欧美大片| 久久精品欧美一区二区三区不卡| 亚洲v日本v欧美v久久精品| 99久久伊人网影院| 久久久久免费观看| 另类综合日韩欧美亚洲| 欧美日韩高清一区二区| 亚洲最大成人综合| 99久久国产综合精品麻豆| 欧美国产日韩一二三区| 国产一区二区三区四| 亚洲精品亚洲人成人网| 久久99精品国产麻豆婷婷洗澡| 久久久电影一区二区三区| 在线成人免费观看| 日本欧美加勒比视频| 日韩一区二区免费高清| 一二三四区精品视频| a级精品国产片在线观看| 国产亚洲欧美在线| 国产一区二区成人久久免费影院| 日韩午夜激情av| 美女被吸乳得到大胸91| 欧美一二三四在线| 久久99久国产精品黄毛片色诱| 欧美一级搡bbbb搡bbbb| 日韩中文字幕不卡|