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

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

?? codezbankview.cpp

?? CodezBank is just a small application that stores source code snippets organized in a hierarhichal m
?? CPP
字號:
////////////////////////////////////////////////////////////////////////////////
// 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 13:33
////////////////////////////////////////////////////////////////////////////////
//  $Revision: $  $Modtime: $
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Author: steveb
//
// History:
//
////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CodezBank.h"
#include "CodezBankDoc.h"
#include "CodezBankView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

using namespace Views;

bool CCodezBankView::m_bSortOrder = false;

IMPLEMENT_DYNCREATE(CCodezBankView, CListView)

BEGIN_MESSAGE_MAP(CCodezBankView, CListView)
	ON_WM_STYLECHANGED()
   ON_WM_CREATE()
   ON_NOTIFY_REFLECT(LVN_GETDISPINFO, &CCodezBankView::OnLvnGetdispinfo)
   ON_NOTIFY_REFLECT(NM_DBLCLK, &CCodezBankView::OnNMDblclk)
   ON_NOTIFY_REFLECT(NM_CLICK, &CCodezBankView::OnNMClick)
   ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, &CCodezBankView::OnLvnItemchanged)
   ON_NOTIFY_REFLECT(LVN_ENDLABELEDIT, &CCodezBankView::OnLvnEndlabeledit)
   ON_COMMAND(ID_EDIT_DELETE, &CCodezBankView::OnEditDelete)
   ON_UPDATE_COMMAND_UI(ID_EDIT_DELETE, &CCodezBankView::OnUpdateEditDelete)
   ON_WM_CONTEXTMENU()
   ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, &CCodezBankView::OnLvnColumnclick)
   ON_COMMAND(ID_EDIT_RENAME, &CCodezBankView::OnEditRename)
END_MESSAGE_MAP()

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
CCodezBankView::CCodezBankView()
{
   m_nMask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
CCodezBankView::~CCodezBankView()
{
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
BOOL CCodezBankView::PreCreateWindow(CREATESTRUCT& cs)
{
   cs.style |= LVS_EDITLABELS | LVS_SHOWSELALWAYS;

	return CListView::PreCreateWindow(cs);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();
   Refresh(NULL);
}

#ifdef _DEBUG
///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankView::AssertValid() const
{
	CListView::AssertValid();
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
CCodezBankDoc* CCodezBankView::GetDocument() const // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCodezBankDoc)));
	return (CCodezBankDoc*)m_pDocument;
}
#endif //_DEBUG

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankView::OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct)
{
	//TODO: add code to react to the user changing the view style of your window	
	CListView::OnStyleChanged(nStyleType,lpStyleStruct);	
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
int Views::CCodezBankView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   if (CListView::OnCreate(lpCreateStruct) == -1)
      return -1;

   m_Image.Create(32, 32, ILC_MASK|ILC_COLOR24, 0, 1);

   m_Image.Add(AfxGetApp()->LoadIcon(IDI_FOLDER));
   m_Image.Add(AfxGetApp()->LoadIcon(IDI_CODE2));

   m_ImageSm.Create(16, 16, ILC_MASK|ILC_COLOR24, 0, 1);

   m_ImageSm.Add(AfxGetApp()->LoadIcon(IDI_FOLDER));
   m_ImageSm.Add(AfxGetApp()->LoadIcon(IDI_CODE2));

   GetListCtrl().SetImageList(&m_Image, LVSIL_NORMAL);
   GetListCtrl().SetImageList(&m_ImageSm, LVSIL_SMALL);

   GetListCtrl().SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP);

   GetListCtrl().InsertColumn(0, "Name", LVCFMT_LEFT, 300, 0);
   GetListCtrl().InsertColumn(1, "Created", LVCFMT_LEFT, 120, 0);
   GetListCtrl().InsertColumn(2, "Modified", LVCFMT_LEFT, 120, 0);
   
   DWORD dwStyle = AfxGetApp()->GetProfileInt(SECTION_SETTINGS, KEY_LISTSTYLE, LVS_ICON);
   ModifyStyle(LVS_TYPEMASK, dwStyle);

   return 0;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Views::CCodezBankView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
   CCodeNode* pNodeIn = reinterpret_cast<CCodeNode*>(pHint);

   switch(lHint)
   {
   case hintRefreshListView:
      Refresh(pNodeIn);
      break;
   case hintClearDocument:
      GetListCtrl().DeleteAllItems();
      break;
   }
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankView::Refresh(CCodeNode* pNode)
{
   GetListCtrl().DeleteAllItems();

   int nIndex = 0;

   if(pNode)
   {
      for(POSITION pos = pNode->m_lstChildren.GetHeadPosition(); pos != NULL; nIndex++)
      {
         CCodeNode* pItem = pNode->m_lstChildren.GetNext(pos);

         LV_ITEM lvi;
         lvi.mask = m_nMask; 
         lvi.iItem = nIndex; 
         lvi.iSubItem = 0; 
         lvi.iImage = pItem->m_nFolderType == nodeFolder ? 0:1;
         lvi.pszText = LPSTR_TEXTCALLBACK; 
         lvi.lParam = (LPARAM)pItem;

         GetListCtrl().InsertItem(&lvi);
      }
   }
   else
   {
      // topmost
      for(POSITION pos = GetDocument()->m_lstNodes.GetHeadPosition(); pos != NULL; nIndex++)
      {
         CCodeNode* pItem = GetDocument()->m_lstNodes.GetNext(pos);

         LV_ITEM lvi;
         lvi.mask = m_nMask; 
         lvi.iItem = nIndex; 
         lvi.iSubItem = 0; 
         lvi.iImage = 0;
         lvi.pszText = LPSTR_TEXTCALLBACK; 
         lvi.lParam = (LPARAM)pItem;

         GetListCtrl().InsertItem(&lvi);
      }
   }
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Views::CCodezBankView::OnLvnGetdispinfo(NMHDR *pNMHDR, LRESULT *pResult)
{
   NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);

   if(pDispInfo->item.mask & LVIF_TEXT)
   {
      CCodeNode* pNode = reinterpret_cast<CCodeNode*>(pDispInfo->item.lParam);
      
      switch(pDispInfo->item.iSubItem)
      {
      case 0:
         lstrcpy (pDispInfo->item.pszText, pNode->m_strName);
         break;
      case 1:
         lstrcpy (pDispInfo->item.pszText, pNode->GetCreated());
         break;
      case 2:
         lstrcpy (pDispInfo->item.pszText, pNode->GetModified());
         break;
      }
   }
   *pResult = 0;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Views::CCodezBankView::OnNMDblclk(NMHDR *pNMHDR, LRESULT *pResult)
{
   LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
   *pResult = 0;

   if(pNMLV->iItem == -1)
      return;

   CCodeNode* pNode = reinterpret_cast<CCodeNode*>(GetListCtrl().GetItemData(pNMLV->iItem));
   Refresh(pNode);
   GetDocument()->UpdateAllViews(this, hintSelTreeItem, pNode);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Views::CCodezBankView::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
   // TODO: Add your control notification handler code here
   *pResult = 0;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Views::CCodezBankView::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
   LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
   // TODO: Add your control notification handler code here
   *pResult = 0;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Views::CCodezBankView::OnLvnEndlabeledit(NMHDR *pNMHDR, LRESULT *pResult)
{
   NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
   CCodeNode* pNode = reinterpret_cast<CCodeNode*>(pDispInfo->item.lParam);

   if(pDispInfo->item.pszText)
   {
      pNode->m_strName = pDispInfo->item.pszText;
      pNode->Modify();
      GetDocument()->SetModifiedFlag();
      GetDocument()->UpdateAllViews(this, hintRepaintTree, pNode);
   }
   *pResult = 0;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankView::OnEditDelete()
{
   if(Ask(MB_YESNO, "Delete selected item(s)?") == IDNO)
      return;

   for(POSITION pos = GetListCtrl().GetFirstSelectedItemPosition(); pos != NULL;)
   {
      int nItem = GetListCtrl().GetNextSelectedItem(pos);
  
      CCodeNode* pNode = reinterpret_cast<CCodeNode*>(GetListCtrl().GetItemData(nItem));
      GetDocument()->UpdateAllViews(this, hintRemoveItemFromTree, pNode);
      GetListCtrl().DeleteItem(nItem);
      GetDocument()->DeleteNode(pNode);
      pos = GetListCtrl().GetFirstSelectedItemPosition();
   }
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankView::OnUpdateEditDelete(CCmdUI *pCmdUI)
{
   pCmdUI->Enable(GetListCtrl().GetFirstSelectedItemPosition() != NULL);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankView::OnContextMenu(CWnd* pWnd, CPoint point)
{
   if (point.x == -1 && point.y == -1)
   {
      //keystroke invocation
      CRect rect;
      GetClientRect(rect);
      ClientToScreen(rect);

      point = rect.TopLeft();
      point.Offset(5, 5);
   }

   CMenu menu;
   VERIFY(menu.LoadMenu(IDR_TREE_CONTEXT));

   CMenu* pPopup = menu.GetSubMenu(0);
   ASSERT(pPopup != NULL);
   CWnd* pWndPopupOwner = this;

   while (pWndPopupOwner->GetStyle() & WS_CHILD)
      pWndPopupOwner = pWndPopupOwner->GetParent();

   pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
      pWndPopupOwner);		
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
int CALLBACK CCodezBankView::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
   CCodeNode* pItem1 = reinterpret_cast<CCodeNode*>(lParam1);
   CCodeNode* pItem2 = reinterpret_cast<CCodeNode*>(lParam2);
   int nResult;

   switch (lParamSort) 
   {
   case 0: // name
      if(m_bSortOrder)
         nResult = pItem1->m_strName.CompareNoCase (pItem2->m_strName);
      else
         nResult = pItem2->m_strName.CompareNoCase (pItem1->m_strName);
      break;

   case 1: // created
      if(m_bSortOrder)
         nResult = pItem1->m_tCreated > pItem2->m_tCreated;
      else
         nResult = pItem1->m_tCreated < pItem2->m_tCreated;
      break;

   case 2: // modified
      if(m_bSortOrder)
         nResult = pItem1->m_tModified > pItem2->m_tModified;
      else
         nResult = pItem1->m_tModified < pItem2->m_tModified;
      break;
   }
   return nResult;

}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Views::CCodezBankView::OnLvnColumnclick(NMHDR *pNMHDR, LRESULT *pResult)
{
   LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
   m_bSortOrder = !m_bSortOrder;
   GetListCtrl().SortItems (CompareFunc, pNMLV->iSubItem);
   *pResult = 0;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Views::CCodezBankView::OnEditRename()
{
   POSITION pos = GetListCtrl().GetFirstSelectedItemPosition();
   if(!pos)
      return;

   int iItem = GetListCtrl().GetNextSelectedItem(pos);
   GetListCtrl().EditLabel(iItem);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看视频一区二区| 久久99最新地址| 97久久精品人人澡人人爽| 国产精品萝li| 在线亚洲+欧美+日本专区| 亚洲大尺度视频在线观看| 在线电影欧美成精品| 秋霞午夜鲁丝一区二区老狼| 久久这里只有精品视频网| 国产不卡在线一区| 亚洲视频精选在线| 欧美精品自拍偷拍| 国产一区二区三区美女| 中文字幕欧美国产| 欧美色图天堂网| 精品一区二区三区在线观看 | 成人av资源在线| 亚洲欧美日韩国产一区二区三区 | 欧美另类z0zxhd电影| 日本aⅴ亚洲精品中文乱码| 26uuu亚洲综合色| 不卡视频在线观看| 视频一区中文字幕| 国产欧美视频一区二区| 色婷婷国产精品综合在线观看| 视频在线在亚洲| 中文字幕欧美国产| 欧美精品1区2区| 成人高清免费在线播放| 午夜精品久久久| 国产欧美日韩在线| 欧美精品日日鲁夜夜添| 国产成人亚洲综合a∨婷婷| 亚洲一区二区三区四区的| 26uuu精品一区二区在线观看| 99re6这里只有精品视频在线观看| 日韩成人免费在线| 亚洲视频在线观看一区| 欧美一区二区视频在线观看2022 | av电影在线不卡| 秋霞成人午夜伦在线观看| 成人免费一区二区三区在线观看| 日韩欧美黄色影院| 色欧美片视频在线观看| 国产伦精品一区二区三区免费| 亚洲精品菠萝久久久久久久| 久久免费精品国产久精品久久久久| 日本韩国视频一区二区| 国产美女av一区二区三区| 亚洲123区在线观看| 日韩伦理av电影| 久久精品一区四区| 日韩一区二区三区在线观看| 日韩欧美一级片| 欧美日本免费一区二区三区| 97精品电影院| 成人国产在线观看| 国产伦精一区二区三区| 美女视频一区二区三区| 亚洲制服欧美中文字幕中文字幕| 国产亚洲成av人在线观看导航 | 91精品国产综合久久精品麻豆| 波多野结衣91| 国产+成+人+亚洲欧洲自线| 久久精品国产99| 麻豆一区二区99久久久久| 午夜视频在线观看一区| 一区二区三区欧美日| 亚洲欧美日韩一区二区三区在线观看 | 午夜精品一区在线观看| 一区二区成人在线| 亚洲乱码国产乱码精品精的特点 | 久久精品久久久精品美女| 午夜精品免费在线| 午夜精品久久久久久久| 亚洲图片欧美一区| 亚洲一区二区三区爽爽爽爽爽| 一区二区日韩电影| 亚洲香肠在线观看| 亚洲高清免费观看| 午夜精品在线看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美三级电影在线观看| 欧美亚一区二区| 欧美日韩国产影片| 欧美剧情片在线观看| 制服丝袜av成人在线看| 日韩欧美中文字幕精品| 精品国产一区二区三区久久影院| 一区二区三区不卡视频在线观看| 亚洲日本成人在线观看| 一区二区三区四区乱视频| 亚洲第四色夜色| 青草av.久久免费一区| 久久av资源网| 国产一区二区三区四区五区美女| 国产不卡免费视频| 91美女在线视频| 欧美网站一区二区| 日韩精品一区二区在线观看| 久久女同精品一区二区| 国产精品国产三级国产普通话99 | 国产欧美一区二区精品久导航| 中文在线资源观看网站视频免费不卡| 国产精品乱人伦| 亚洲一区二区免费视频| 精品一区二区三区在线播放| 成人激情动漫在线观看| 欧洲精品在线观看| 日韩精品一区二区三区中文不卡 | 精品久久久久久久久久久久包黑料| 久久久噜噜噜久久人人看| 国产精品国产三级国产aⅴ入口| 亚洲综合偷拍欧美一区色| 免费一区二区视频| 成人福利在线看| 3atv一区二区三区| 欧美国产成人在线| 视频一区视频二区中文字幕| 国产乱色国产精品免费视频| 色哟哟国产精品免费观看| 欧美一二三在线| 中文字幕制服丝袜一区二区三区| 日日夜夜一区二区| bt7086福利一区国产| 欧美高清hd18日本| 国产精品福利电影一区二区三区四区| 午夜精品久久久久久久99水蜜桃| 国产成人久久精品77777最新版本| 欧美日韩中文一区| 国产成人自拍高清视频在线免费播放| 91在线观看地址| 久久一区二区视频| 午夜视频在线观看一区二区三区 | 日韩黄色免费网站| 成人av在线电影| 精品国产在天天线2019| 亚洲国产人成综合网站| 高清视频一区二区| 日韩一卡二卡三卡四卡| 亚洲一区二区三区四区不卡| 国产福利不卡视频| 欧美一区二区美女| 亚洲综合色丁香婷婷六月图片| 国产成人精品综合在线观看| 欧美一二区视频| 亚洲在线观看免费视频| 99国产精品一区| 日本一区二区三区视频视频| 日本欧美加勒比视频| 欧美色中文字幕| 亚洲精选免费视频| eeuss鲁一区二区三区| 26uuu精品一区二区| 日韩国产高清在线| 欧美三级午夜理伦三级中视频| 中文字幕亚洲区| 菠萝蜜视频在线观看一区| 久久视频一区二区| 日本午夜一本久久久综合| 欧美伊人久久大香线蕉综合69| 亚洲三级电影全部在线观看高清| 不卡影院免费观看| 国产精品美女一区二区在线观看| 国产成人福利片| 国产人成亚洲第一网站在线播放| 国产自产视频一区二区三区| 欧美一二三区在线| 美女脱光内衣内裤视频久久网站| 日韩一级片网站| 国内外成人在线| 久久久99精品免费观看| 国产盗摄精品一区二区三区在线| 国产亚洲一二三区| 成人黄页在线观看| 日韩毛片视频在线看| 色婷婷激情综合| 婷婷久久综合九色综合绿巨人 | 欧美一区二区在线视频| 亚洲18影院在线观看| 欧美一级在线观看| 九九在线精品视频| 国产婷婷色一区二区三区| 成人一区二区三区在线观看| 国产精品污网站| 91国偷自产一区二区三区观看| 亚洲一区二区三区视频在线 | 精品福利av导航| 国产91高潮流白浆在线麻豆| 亚洲天堂精品在线观看| 欧洲中文字幕精品| 男女男精品视频| 久久久天堂av| 色综合一区二区三区| 午夜国产精品一区| 久久精品一区二区三区av| 99视频一区二区| 视频一区二区国产| 久久久久国产精品麻豆ai换脸| 97久久久精品综合88久久|