⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formatoptionpage.cpp

📁 用bcg库编写的java IDE 源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	ON_LBN_SELCHANGE(IDC_ITEMS_LIST, OnSelchangeItemsList)
	ON_WM_SHOWWINDOW()
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFormatOptionPage message handlers


BOOL CFormatOptionPage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	/*
    m_wndFonts.SetItemHeight (-1, 15);
    m_wndFonts.SetItemHeight (0, 14);
    m_wndFontSize.SetItemHeight (-1, 15);
    m_wndFontSize.SetItemHeight (0, 14);
    */

   int i=0;

   for(int nRow =0; nRow<NUMROWS;nRow++)
   {
	  int nItem = m_wndWindowList.AddString(*(m_szpWindows[nRow][0]));
	  LPCTSTR* lszpBase = m_szpWindows[nRow][1];
	  windowType *pWin = new windowType;
	  pWin->m_nFontSize = 0;
	  m_wndWindowList.SetItemData(nItem,(DWORD)pWin);


	  for(lszpBase; ((lszpBase != NULL)&&(*lszpBase!=NULL));lszpBase++)
	  {
         attributeColorMap* pAttrClr = new attributeColorMap;
		 pAttrClr->m_lszpName  = *lszpBase;

		 forebackColors nColors;
		 getDefaultColors(*lszpBase,nColors);
		 pAttrClr->m_cfColors.m_dwForeGrnd = nColors.m_dwForeGrnd;
		 pAttrClr->m_cfColors.m_dwBackGrnd = nColors.m_dwBackGrnd;
		 pWin->m_lColorAttrItems.Add(pAttrClr);
	  }
   }

	//for(i =0; m_szp
    CWindowDC dc(this);
    LOGFONT logfont;
    logfont.lfCharSet = DEFAULT_CHARSET;
    logfont.lfFaceName[0] = '\0';
    logfont.lfPitchAndFamily = 0;
    EnumFontFamiliesEx (dc.m_hDC, &logfont, (FONTENUMPROC)FontEnumProc, 
		                                               (LPARAM) this, 0);
    int j = m_wndFonts.FindStringExact (0, m_szpFont);
    if (j >= 0)
      m_wndFonts.SetCurSel (j);

    m_wndBckGrndColor.SubclassDlgItem(IDC_COMBO_BACKGRND,this);
	m_wndForeGrndColor.SubclassDlgItem(IDC_COMBO_FOREGRND,this);
    m_wndSampleDisplay.SubclassDlgItem(IDC_DISPLAY_SAMEPLE,this);
	//load system provided colors 

	for(i =0; i<16;i++)
	{
	  m_wndBckGrndColor.SetColorData(m_wndBckGrndColor.AddString("**"),
		  m_nAppChoosenColors[i]);
	}
	m_wndBckGrndColor.SetColorData(m_wndBckGrndColor.AddString("custom"),
		  m_nAppChoosenColors[i-1]);

	for(i =0; i<16;i++)
	{
      m_wndForeGrndColor.SetColorData(m_wndForeGrndColor.AddString("**"),
		  m_nAppChoosenColors[i]);
	}
    m_wndForeGrndColor.SetColorData(m_wndForeGrndColor.AddString("custom"),
		  m_nAppChoosenColors[i-1]);

	LoadSettings();
	m_wndFonts.SetCurSel(m_nfont);
	m_wndFontSize.SetCurSel(m_nfontSize);
	m_wndForeGrndColor.SetCurSel(m_nforegrd);
    m_wndBckGrndColor.SetCurSel(m_nbkgrd);
	return TRUE;
}


int CALLBACK CFormatOptionPage::FontEnumProc(ENUMLOGFONTEX *lpelfe, 
								             NEWTEXTMETRICEX *lpntme, 
        int FontType, CFormatOptionPage* pFormatPage )
{
    if( pFormatPage->m_wndFonts.FindStringExact( 0, lpelfe->elfLogFont.lfFaceName ) == CB_ERR &&
      lpelfe->elfLogFont.lfPitchAndFamily & FIXED_PITCH)
      {
        // Add to list
        //COMBOBOXEXITEM item;
        //item.mask = /*CBEIF_IMAGE|*/CBEIF_TEXT;//|CBEIF_SELECTEDIMAGE;
        //item.iItem = pFormatPage->m_wndFonts.GetCount ();
        //item.pszText = (LPTSTR)(LPCTSTR)lpelfe->elfFullName;
        //item.iImage = item.iSelectedImage = 1;
        //ASSERT(pFormatPage->m_wndFonts.InsertItem(&item));
		//pFormatPage->MessageBox((LPCTSTR)lpelfe->elfFullName);
        int item = pFormatPage->m_wndFonts.AddString( lpelfe->elfLogFont.lfFaceName );
        pFormatPage->m_wndFonts.SetItemData (item, lpelfe->elfLogFont.lfOutPrecision != OUT_STRING_PRECIS);
      }
   return -1;
}

void CFormatOptionPage::OnSelchangeWindowsList() 
{
   m_wndItems.ResetContent();
   int nIndex     = m_wndWindowList.GetCurSel();
   windowType* pWin = (windowType*)m_wndWindowList.GetItemData(nIndex);
  
   int nCount = pWin->m_lColorAttrItems.GetSize();
   for(int I=0; I<nCount; I++)
     m_wndItems.AddString(pWin->m_lColorAttrItems[I]->m_lszpName);


   if(m_wndItems.GetCount()>0)
   {
	  m_wndItems.SetCurSel(0);
	  forebackColors cfColorInfo = pWin->m_lColorAttrItems[0]->m_cfColors;
	  m_wndForeGrndColor.SelectColor(cfColorInfo.m_dwForeGrnd,IDC_COMBO_FOREGRND);
	  m_wndBckGrndColor.SelectColor(cfColorInfo.m_dwBackGrnd,IDC_COMBO_BACKGRND);
	  m_wndSampleDisplay.UpdateBoth(cfColorInfo.m_dwForeGrnd,cfColorInfo.m_dwBackGrnd);
   }
}

void CFormatOptionPage::OnSelchangeItemsList() 
{
   if(m_wndItems.GetCount()>0)
   {
	  if(m_wndWindowList.GetCount()>0)
	  {
        windowType* pWin = (windowType*)m_wndWindowList.GetItemData(m_wndWindowList.GetCurSel());
	    forebackColors cfColorInfo = pWin->m_lColorAttrItems[m_wndItems.GetCurSel()]->m_cfColors;
		
		m_wndForeGrndColor.SelectColor(cfColorInfo.m_dwForeGrnd,IDC_COMBO_FOREGRND);
		m_wndBckGrndColor.SelectColor(cfColorInfo.m_dwBackGrnd,IDC_COMBO_BACKGRND);
		m_wndSampleDisplay.UpdateBoth(cfColorInfo.m_dwForeGrnd,cfColorInfo.m_dwBackGrnd);
	  }
   }	
}

void CFormatOptionPage::OnSelchangeComboForegrnd() 
{
   COLORREF nColor = m_wndForeGrndColor.GetItemColor(m_wndForeGrndColor.GetCurSel());
   m_wndSampleDisplay.UpdateFrgrnd(nColor);	

   if(m_wndItems.GetCount()>0&&m_wndItems.GetCurSel()>=0)
   {
	  if(m_wndWindowList.GetCount()>0&&m_wndWindowList.GetCurSel()>=0)
	  {
        CString strText;
		m_wndForeGrndColor.GetLBText(m_wndForeGrndColor.GetCurSel(),strText);
		if(strText.Compare("custom") == 0)
		{
	      CColorDialog dlgColor;
	      if(dlgColor.DoModal() == IDOK)
		  {
            nColor = dlgColor.GetColor();
			m_wndForeGrndColor.SelectColor(nColor,IDC_COMBO_FOREGRND);
		  }
		}

        windowType* pWin = (windowType*)m_wndWindowList.GetItemData(m_wndWindowList.GetCurSel());


	    forebackColors cfColorInfo = pWin->m_lColorAttrItems[m_wndItems.GetCurSel()]->m_cfColors;
		cfColorInfo.m_dwForeGrnd  = nColor;

		pWin->m_lColorAttrItems[m_wndItems.GetCurSel()]->m_cfColors = cfColorInfo;
		m_wndForeGrndColor.SelectColor(cfColorInfo.m_dwForeGrnd,IDC_COMBO_FOREGRND);
	  }
   }
}

void CFormatOptionPage::OnSelchangeComboBackgrnd() 
{
   COLORREF nColor = m_wndBckGrndColor.GetItemColor(m_wndBckGrndColor.GetCurSel());
   m_wndSampleDisplay.UpdateBkgrnd(nColor);

   if(m_wndItems.GetCount()>0&&m_wndItems.GetCurSel()>=0)
   {
	  if(m_wndWindowList.GetCount()>0&&m_wndWindowList.GetCurSel()>=0)
	  {
        CString strText;
		m_wndBckGrndColor.GetLBText(m_wndBckGrndColor.GetCurSel(),strText);
		if(strText.Compare("custom") == 0)
		{
	      CColorDialog dlgColor;
	      if(dlgColor.DoModal() == IDOK)
		  {
            nColor = dlgColor.GetColor();
			m_wndBckGrndColor.SelectColor(nColor,IDC_COMBO_BACKGRND);
		  }
		}
        windowType* pWin = (windowType*)m_wndWindowList.GetItemData(m_wndWindowList.GetCurSel());
        
	    forebackColors cfColorInfo = pWin->m_lColorAttrItems[m_wndItems.GetCurSel()]->m_cfColors;
		cfColorInfo.m_dwBackGrnd  = nColor;

		pWin->m_lColorAttrItems[m_wndItems.GetCurSel()]->m_cfColors = cfColorInfo;
		m_wndBckGrndColor.SelectColor(cfColorInfo.m_dwBackGrnd,IDC_COMBO_BACKGRND);
	  }
   }
}

void CFormatOptionPage::OnSelchangeFontSizesCombo() 
{
   if(m_wndItems.GetCount()>0&&m_wndItems.GetCurSel()>=0)
   {
	  if(m_wndWindowList.GetCount()>0&&m_wndWindowList.GetCurSel()>=0)
	  {
        windowType* pWin = (windowType*)m_wndWindowList.GetItemData(m_wndWindowList.GetCurSel());
	    attributeColorMap* pMap = pWin->m_lColorAttrItems[m_wndItems.GetCurSel()];
	  }
   }  
}

void CFormatOptionPage::OnSelchangeFontsCombo() 
{
  CString szpFont ;
  m_wndFonts.GetLBText(m_wndFonts.GetCurSel(),szpFont);
  m_wndSampleDisplay.UpdateFont(szpFont);

   if(m_wndItems.GetCount()>0&&m_wndItems.GetCurSel()>=0)
   {
	  if(m_wndWindowList.GetCount()>0&&m_wndWindowList.GetCurSel()>=0)
	  {
        windowType* pWin = (windowType*)m_wndWindowList.GetItemData(m_wndWindowList.GetCurSel());
	    attributeColorMap* pMap = pWin->m_lColorAttrItems[m_wndItems.GetCurSel()];
	  }
   }
}

COLORREF CFormatOptionPage::getCurBackGrndColor()
{
  return m_wndBckGrndColor.GetItemColor(m_wndBckGrndColor.GetCurSel());
}

CFont* CFormatOptionPage::getCurFont()
{
  return 0;
}

int CFormatOptionPage::getCurFontSize()
{
  return 0;
}

COLORREF CFormatOptionPage::getCurFrGrndColor()
{
  return m_wndForeGrndColor.GetItemColor(m_wndForeGrndColor.GetCurSel());
}

void CFormatOptionPage::LoadSettings()
{
  CReg reg;
  LPCTSTR lszpBase = REGISTRY_ROOT;

  if(reg.Create(HKEY_CURRENT_USER,lszpBase,KEY_READ))
  {
     CReg optionsReg;
	 if(optionsReg.Create(reg.hKey,_T("Options"),KEY_READ))
	 {	  
	   CReg formatReg;
       if(formatReg.Create(optionsReg.hKey,_T("\\Format"),KEY_READ))
	   {
          CReg rgWindowTextSettings;
	      if(rgWindowTextSettings.Create(formatReg.hKey,_T("\\Window Text Settings"),KEY_READ))
		  {
		     for(int nRow =0; nRow<NUMROWS; nRow++)
			 { 
			    windowType* pWindow = (windowType*)m_wndWindowList.GetItemData(nRow);
              
                CReg rgWindow;
			    if(rgWindow.Create(rgWindowTextSettings.hKey,CString("\\")+(*(m_szpWindows[nRow][0])),KEY_READ))
				{
                   rgWindow.LoadString(_T ("font"),pWindow->m_lszpFont);
				   rgWindow.LoadNumber(_T ("font size"),(DWORD*)&pWindow->m_nFontSize);
				   {
				     mapARRAY* pMapArray = &pWindow->m_lColorAttrItems;
                     int nCount = pMapArray->GetSize();

				     for(int I=0; I<nCount; I++)
					 {
                       attributeColorMap* pMap = (*pMapArray)[I];
				       rgWindow.LoadBinary(pMap->m_lszpName,(LPBYTE)&pMap->m_cfColors,sizeof(pMap->m_cfColors));
					 }
				   }
			       rgWindow.Close();
				}
			 }
		     rgWindowTextSettings.Close();
		  }		
		  formatReg.Close();
	   }
       optionsReg.Close();
	 }
	 reg.Close();	 
  }
}

void CFormatOptionPage::SaveSettings()
{
  CReg reg;
  LPCTSTR lszpBase = REGISTRY_ROOT;

  if(reg.Create(HKEY_CURRENT_USER,lszpBase,KEY_WRITE))
  {
     CReg optionsReg;
	 if(optionsReg.Create(reg.hKey,_T("Options"),KEY_WRITE))
	 {	  
	   CReg formatReg;
       if(formatReg.Create(optionsReg.hKey,_T("\\Format"),KEY_WRITE))
	   {
          CReg rgWindowTextSettings;
	      if(rgWindowTextSettings.Create(formatReg.hKey,_T("\\Window Text Settings"),KEY_WRITE))
		  {
		     for(int nRow =0; nRow<NUMROWS; nRow++)
			 { 
			    windowType* pWindow = (windowType*)m_wndWindowList.GetItemData(nRow);
              
                CReg rgWindow;
			    if(rgWindow.Create(rgWindowTextSettings.hKey,CString("\\")+(*(m_szpWindows[nRow][0])),KEY_WRITE))
				{
                   VERIFY(rgWindow.SaveString(_T ("font"),pWindow->m_lszpFont));
				   VERIFY(rgWindow.SaveNumber(_T ("font size"),pWindow->m_nFontSize));
				   {
				     mapARRAY* pMapArray = &pWindow->m_lColorAttrItems;
                     int nCount = pMapArray->GetSize();

				     for(int I=0; I<nCount; I++)
					 {
                       attributeColorMap* pMap = (*pMapArray)[I];
				       VERIFY(rgWindow.SaveBinary(pMap->m_lszpName,(LPBYTE)&pMap->m_cfColors,sizeof(pMap->m_cfColors)));
					 }
				   }
			       rgWindow.Close();
				}
			 }
		     rgWindowTextSettings.Close();
		  }		
		  formatReg.Close();
	   }
       optionsReg.Close();
	 }
	 reg.Close();	 
  }
}


void CFormatOptionPage::OnOK() 
{
  SaveSettings();
  POSITION nPos = theApp.GetFirstDocTemplatePosition();
  CDocTemplate* pTmp = theApp.GetNextDocTemplate(nPos);

  for(POSITION nPos1 = pTmp->GetFirstDocPosition();nPos1 != NULL;)
  {
     CVisualJavaDoc* pDoc = (CVisualJavaDoc*)pTmp->GetNextDoc(nPos1);
     CVisualJavaView* pView =  (CVisualJavaView*)pDoc->getBuffer()->getHeadView();
	 if(pView != NULL)
        pView->OnFormatUpdate();
  }
  CPropertyPage::OnOK();
}



void CFormatOptionPage::OnShowWindow(BOOL bShow, UINT nStatus) 
{
  CPropertyPage::OnShowWindow(bShow, nStatus);
  m_wndWindowList.SetCurSel(0);
  SendMessage(WM_COMMAND,MAKEWPARAM(IDC_WINDOWS_LIST,CBN_SELCHANGE),(LPARAM)m_wndWindowList.m_hWnd);	
}

void CFormatOptionPage::OnDestroy() 
{
  CPropertyPage::OnDestroy();
	
  int nCount = m_wndWindowList.GetCount();
  for(int I=0; I<nCount; I++)
  {
     windowType* pWin = (windowType*)m_wndWindowList.GetItemData(I);
     delete pWin;
  }	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -