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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mainfrm.cpp

?? CodezBank is just a small application that stores source code snippets organized in a hierarhichal m
?? CPP
字號(hào):
////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2008  
// 
// The following code is supplied "as-is" and 
// is given without warranty of any kind. 
// It may be freely distributed and used. 
// The user holds author blameless from any complications or 
// problems that may arise from the use of this code.
// 
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
//  $Workfile: $   created: 04/05/2008 11:11
////////////////////////////////////////////////////////////////////////////////
//  $Revision: $  $Modtime: $
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Author: steveb
//
// History:
//
////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CodezBank.h"
#include "MainFrm.h"
#include "LeftView.h"
#include "CodezBankView.h"
#include "CodeView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

using namespace Views;

static int WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING);

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_WM_CREATE()
	ON_UPDATE_COMMAND_UI_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, &CMainFrame::OnUpdateViewStyles)
	ON_COMMAND_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, &CMainFrame::OnViewStyle)
   ON_WM_DESTROY()
   ON_MESSAGE(WM_IDLEUPDATECMDUI, OnIdleUpdateCmdUI)
   ON_REGISTERED_MESSAGE(WM_FINDREPLACE, OnFindReplace)
   ON_COMMAND(ID_EDIT_FIND, &CMainFrame::OnEditFind)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	//ID_INDICATOR_NUM,
	//ID_INDICATOR_SCRL,
   ID_INDICATOR_SNIP_COUNT,
};

///////////////////////////////////////////////
/// setup '*' indicator for title
/// 
///////////////////////////////////////////////
CMainFrame::CMainFrame():
  m_pos(SECTION_SETTINGS, KEY_MAIN_WND)
, m_pFindDlg(NULL)
{
   static UINT indicators[] = { ID_TITLE_MOD };
   m_titleBar.SetIndicators(indicators, 
      sizeof(indicators)/sizeof(indicators[0]));
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
CMainFrame::~CMainFrame()
{
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if(!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

   m_pos.Load(this);
   LoadBarState(KEY_CTRLBARS);
	return 0;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
	CCreateContext* pContext)
{
	// create splitter window
	if(!m_wndSplitter.CreateStatic(this, 1, 2))
		return FALSE;

   int nTreeWidth = AfxGetApp()->GetProfileInt(SECTION_SETTINGS, KEY_TREEVIEW, 250);

	if(!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(nTreeWidth, 100), pContext) ||
		!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CCodezBankView), CSize(100, 100), pContext))
	{
		m_wndSplitter.DestroyWindow();
		return FALSE;
	}

   m_wndSplitter.AddView(0, 1, RUNTIME_CLASS(CCodeView), "Code");
  	return TRUE;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

#ifdef _DEBUG
///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
CCodezBankView* CMainFrame::GetRightPane()
{
	CWnd* pWnd = m_wndSplitter.GetPane(0, 1);
	CCodezBankView* pView = DYNAMIC_DOWNCAST(CCodezBankView, pWnd);
	return pView;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
CLeftView* CMainFrame::GetLeftPane()
{
   CWnd* pWnd = m_wndSplitter.GetPane(0, 0);
	CLeftView* pView = DYNAMIC_DOWNCAST(CLeftView, pWnd);
	return pView;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CMainFrame::OnUpdateViewStyles(CCmdUI* pCmdUI)
{
	if (!pCmdUI)
		return;

	// TODO: customize or extend this code to handle choices on the View menu

	CCodezBankView* pView = GetRightPane(); 

	// if the right-hand pane hasn't been created or isn't a view,
	// disable commands in our range

	if (pView == NULL)
		pCmdUI->Enable(FALSE);
	else
	{
		DWORD dwStyle = pView->GetStyle() & LVS_TYPEMASK;

		// if the command is ID_VIEW_LINEUP, only enable command
		// when we're in LVS_ICON or LVS_SMALLICON mode

		if (pCmdUI->m_nID == ID_VIEW_LINEUP)
		{
			if (dwStyle == LVS_ICON || dwStyle == LVS_SMALLICON)
				pCmdUI->Enable();
			else
				pCmdUI->Enable(FALSE);
		}
		else
		{
			// otherwise, use dots to reflect the style of the view
			pCmdUI->Enable();
			BOOL bChecked = FALSE;

			switch (pCmdUI->m_nID)
			{
			case ID_VIEW_DETAILS:
				bChecked = (dwStyle == LVS_REPORT);
				break;

			case ID_VIEW_SMALLICON:
				bChecked = (dwStyle == LVS_SMALLICON);
				break;

			case ID_VIEW_LARGEICON:
				bChecked = (dwStyle == LVS_ICON);
				break;

			case ID_VIEW_LIST:
				bChecked = (dwStyle == LVS_LIST);
				break;

			default:
				bChecked = FALSE;
				break;
			}

			pCmdUI->SetRadio(bChecked ? 1 : 0);
		}
	}
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CMainFrame::OnViewStyle(UINT nCommandID)
{
	// TODO: customize or extend this code to handle choices on the View menu
	CCodezBankView* pView = GetRightPane();

	// if the right-hand pane has been created and is a CCodezBankView,
	// process the menu commands...
	if (pView != NULL)
	{
		DWORD dwStyle = -1;

		switch (nCommandID)
		{
		case ID_VIEW_LINEUP:
			{
				// ask the list control to snap to grid
				CListCtrl& refListCtrl = pView->GetListCtrl();
				refListCtrl.Arrange(LVA_SNAPTOGRID);
			}
			break;

		// other commands change the style on the list control
		case ID_VIEW_DETAILS:
			dwStyle = LVS_REPORT;
			break;

		case ID_VIEW_SMALLICON:
			dwStyle = LVS_SMALLICON;
			break;

		case ID_VIEW_LARGEICON:
			dwStyle = LVS_ICON;
			break;

		case ID_VIEW_LIST:
			dwStyle = LVS_LIST;
			break;
		}

		// change the style; window will repaint automatically
		if (dwStyle != -1)
			pView->ModifyStyle(LVS_TYPEMASK, dwStyle);

      AfxGetApp()->WriteProfileInt(SECTION_SETTINGS, KEY_LISTSTYLE, dwStyle);
	}
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CMainFrame::OnDestroy()
{
   m_pos.Save(this);
   SaveBarState(KEY_CTRLBARS);

   CFrameWnd::OnDestroy();
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
LRESULT CMainFrame::OnIdleUpdateCmdUI(WPARAM wParam, LPARAM)
{
   m_titleBar.OnIdleUpdate(this, (BOOL)wParam);	// pass to title bar
   CFrameWnd::OnIdleUpdateCmdUI();				// pass to default handler
   return 0L;
}

///////////////////////////////////////////////
/// forward command messages to CTitleBar
/// 
///////////////////////////////////////////////
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
   return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo) ?
            TRUE : m_titleBar.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CMainFrame::SwitchView(LPCTSTR lpNewView)
{
   m_wndSplitter.SwitchToView(0, 1, lpNewView);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
LRESULT CMainFrame::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
   if(NULL != m_pFindDlg )
   {
      // Use pDlg as a pointer to the existing FindReplace dlg to 
      // call CFindReplaceDialog member functions
      if( m_pFindDlg->IsTerminating() )
      {
         CString   csFindString;
         CString   csReplaceString;
         
         csFindString = m_pFindDlg->GetFindString();
         csReplaceString = m_pFindDlg->GetReplaceString();

         VERIFY( AfxGetApp()->WriteProfileString(SECTION_SETTINGS,
            "FindString", csFindString ) );
         VERIFY( AfxGetApp()->WriteProfileString(SECTION_SETTINGS,
            "ReplaceString", csReplaceString ));
         
         m_pFindDlg = NULL;
         return 0L;
      }

      GetLeftPane()->FindString(m_pFindDlg->GetFindString(), 
         m_pFindDlg->SearchDown(), m_pFindDlg->MatchCase(), m_pFindDlg->MatchWholeWord());
   }

   return 0L;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CMainFrame::OnEditFind()
{
   if(m_pFindDlg == NULL)
   {
      CString csFindString = AfxGetApp()->GetProfileString(SECTION_SETTINGS, "FindString", "");
      CString csReplaceString = AfxGetApp()->GetProfileString(SECTION_SETTINGS, "ReplaceString", "");

      m_pFindDlg = new CFindReplaceDialog;
      m_pFindDlg->Create( TRUE, csFindString, csReplaceString, FR_DOWN, Frame() ); 

      m_pFindDlg->m_fr.lStructSize = sizeof(FINDREPLACE);
      m_pFindDlg->m_fr.hwndOwner = Frame()->m_hWnd;
   }
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CMainFrame::UpdateIndSnipCount(CCmdUI* pCmdUI, INT_PTR nCount)
{
   CString str;
   str.Format("Snippet Count: %d", nCount);

   CClientDC dc(&m_wndStatusBar);
	CFont* pOldFont = dc.SelectObject(m_wndStatusBar.GetFont());
	CSize szExtent = dc.GetTextExtent(str, str.GetLength());
	dc.SelectObject(pOldFont);

	UINT nStyle, nID;
	int nWidth;
	 
	m_wndStatusBar.GetPaneInfo(2, nID, nStyle, nWidth);
	m_wndStatusBar.SetPaneInfo(2, nID, nStyle, szExtent.cx/* + 18*/);

	pCmdUI->SetText(str);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷在线精品自拍偷无码专区| 国产日韩成人精品| 风间由美中文字幕在线看视频国产欧美| 国产精品成人一区二区三区夜夜夜| 国产精品国产三级国产aⅴ无密码| 在线观看91视频| 国产一区91精品张津瑜| 一区二区在线电影| 久久精品在这里| 4438x亚洲最大成人网| 99久久99久久精品免费看蜜桃| 日本欧美大码aⅴ在线播放| 日韩毛片一二三区| 久久精品视频在线看| 欧美人伦禁忌dvd放荡欲情| 成人动漫中文字幕| 韩国在线一区二区| 免费观看在线色综合| 亚洲精选视频在线| 国产精品久久看| 26uuu亚洲综合色欧美 | 性欧美疯狂xxxxbbbb| 国产精品欧美一级免费| 精品88久久久久88久久久| 欧美日韩成人综合在线一区二区| 99久免费精品视频在线观看| 国产999精品久久久久久绿帽| 免费成人在线观看视频| 亚洲成人综合在线| 亚洲六月丁香色婷婷综合久久| 亚洲国产激情av| 精品国产一区二区三区av性色 | 精品久久久久一区二区国产| 欧美区在线观看| 在线视频观看一区| 91亚洲精品一区二区乱码| 国产成人av在线影院| 韩国v欧美v亚洲v日本v| 欧美情侣在线播放| 欧美乱妇15p| 欧美日韩激情一区| 欧美日韩一区精品| 欧美精品视频www在线观看| 欧美午夜宅男影院| 欧美日韩夫妻久久| 欧美美女激情18p| 91精品国产综合久久精品| 欧美日韩三级一区| 欧美一区二区视频在线观看2020| 欧美日韩免费电影| 欧美一级在线免费| 日韩久久久精品| 精品国产一区二区三区忘忧草| 精品av久久707| 欧美韩国日本不卡| 亚洲欧洲综合另类在线| 亚洲一区二区三区四区五区黄| 亚洲国产精品一区二区www在线| 亚洲一区在线观看视频| 天天做天天摸天天爽国产一区| 五月天亚洲婷婷| 麻豆精品久久精品色综合| 激情丁香综合五月| 成人av电影在线播放| 在线亚洲一区观看| 欧美日本视频在线| 久久综合资源网| 亚洲欧美一区二区在线观看| 亚洲影院免费观看| 欧美bbbbb| 丰满少妇久久久久久久| 日本韩国精品一区二区在线观看| 欧美中文字幕亚洲一区二区va在线| 欧美日本乱大交xxxxx| 精品国产免费久久| 亚洲天堂免费看| kk眼镜猥琐国模调教系列一区二区 | 久久精品夜色噜噜亚洲aⅴ| 国产精品私房写真福利视频| 亚洲人成亚洲人成在线观看图片| 午夜精品久久久久久久久久| 国产一区在线观看视频| 色综合亚洲欧洲| 亚洲卡通欧美制服中文| 五月婷婷综合激情| 粉嫩蜜臀av国产精品网站| 在线一区二区视频| 精品国产1区二区| 亚洲激情第一区| 久久99久久精品| 一本色道久久综合狠狠躁的推荐| 欧美久久一区二区| 国产精品国产a级| 日韩精品电影一区亚洲| 成人免费高清在线观看| 制服丝袜在线91| 国产精品久久久久久久久搜平片| 日韩国产精品大片| 99精品视频在线免费观看| 日韩一区二区三区视频| 亚洲免费伊人电影| 国产真实乱子伦精品视频| 欧美日韩在线综合| 国产精品久久久久久亚洲伦| 日韩激情视频在线观看| 96av麻豆蜜桃一区二区| www久久精品| 日韩一区精品字幕| 色欧美片视频在线观看| 国产日韩av一区二区| 日韩精品亚洲专区| 欧美中文字幕亚洲一区二区va在线| 久久久www免费人成精品| 日韩av在线免费观看不卡| 久久综合九色综合欧美就去吻 | 日本系列欧美系列| 91官网在线免费观看| 中文字幕免费在线观看视频一区| 麻豆91精品视频| 欧美精品v日韩精品v韩国精品v| 亚洲日本在线看| 成人av在线资源| 久久夜色精品国产噜噜av| 日本不卡1234视频| 欧美精品在欧美一区二区少妇| 亚洲精品伦理在线| 99久久er热在这里只有精品15| 国产喷白浆一区二区三区| 精品一区二区国语对白| 欧美一区二区三区爱爱| 日韩av一级片| 欧美久久一二区| 亚洲777理论| 欧美三级电影一区| 亚洲图片欧美视频| 欧美日韩中字一区| 亚洲一区在线看| 精品视频一区三区九区| 五月婷婷久久丁香| 欧美日韩电影一区| 日本成人在线视频网站| 欧美一区二区日韩一区二区| 丝袜国产日韩另类美女| 欧美美女网站色| 青草国产精品久久久久久| 欧美日韩三级一区二区| 日韩国产高清影视| 欧美一级理论性理论a| 日韩激情在线观看| 欧美r级电影在线观看| 韩国三级在线一区| 欧美国产激情一区二区三区蜜月| 成人午夜激情影院| 亚洲欧美福利一区二区| 欧美日韩国产影片| 麻豆国产精品一区二区三区| 精品国产一区二区三区久久影院| 国产乱码精品一区二区三区av| 国产欧美一区二区三区鸳鸯浴| av中文字幕在线不卡| 一区二区三区中文在线观看| 欧美日韩国产精品成人| 奇米一区二区三区| 欧美国产日韩亚洲一区| 色综合久久久久久久久久久| 亚洲成在线观看| 亚洲精品一区二区三区福利| 成人h精品动漫一区二区三区| 亚洲免费观看高清完整版在线 | 欧美久久久久久蜜桃| 另类小说综合欧美亚洲| 国产日韩欧美在线一区| 色欧美片视频在线观看在线视频| 天天综合日日夜夜精品| 久久久久国产精品麻豆ai换脸 | 精久久久久久久久久久| 中文字幕一区二区三区蜜月| 欧美日韩不卡视频| 国产精品系列在线播放| 一区二区三区不卡在线观看 | 91天堂素人约啪| 日韩精品电影在线| 中文字幕不卡一区| 91精品久久久久久久91蜜桃| 国产v综合v亚洲欧| 日韩不卡在线观看日韩不卡视频| 国产调教视频一区| 欧美精品一级二级| 丁香婷婷深情五月亚洲| 首页国产欧美久久| 国产精品久久久久久亚洲毛片| 制服丝袜在线91| 97se亚洲国产综合在线| 久久99久国产精品黄毛片色诱| 亚洲欧美欧美一区二区三区| 精品黑人一区二区三区久久 | 91在线视频播放地址| 蜜臀av性久久久久蜜臀aⅴ| 综合自拍亚洲综合图不卡区| 精品久久久网站|