📄 formatoptionpage.cpp
字号:
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 + -