BOOL CTaskbarNotifier::LoadConfiguration(LPCTSTR szFileName) { TCHAR szConfigDir[MAX_PATH]; int nRed, nGreen, nBlue, sRed, sGreen, sBlue; int rcLeft, rcTop, rcRight, rcBottom; int bmpTrasparentRed, bmpTrasparentGreen, bmpTrasparentBlue; int fontSize; CString fontType, bmpFullPath, strBmpFileName; Hide(); m_strConfigFilePath = szFileName; CIni ini(szFileName, _T("CONFIG")); _tcsncpy(szConfigDir, szFileName, _countof(szConfigDir)); szConfigDir[_countof(szConfigDir)-1] = _T('\0'); LPTSTR pszFileName = _tcsrchr(szConfigDir, _T('\\')); if (pszFileName == NULL) return FALSE; *(pszFileName + 1) = _T('\0'); nRed = ini.GetInt(_T("TextNormalRed"),255); nGreen = ini.GetInt(_T("TextNormalGreen"),255); nBlue = ini.GetInt(_T("TextNormalBlue"),255); sRed = ini.GetInt(_T("TextSelectedRed"),255); sGreen = ini.GetInt(_T("TextSelectedGreen"),255); sBlue = ini.GetInt(_T("TextSelectedBlue"),255); bmpTrasparentRed = ini.GetInt(_T("bmpTrasparentRed"),255); bmpTrasparentGreen = ini.GetInt(_T("bmpTrasparentGreen"),0); bmpTrasparentBlue = ini.GetInt(_T("bmpTrasparentBlue"),255); fontType = ini.GetString(_T("FontType"), _T("MS Shell Dlg")); fontSize = ini.GetInt(_T("FontSize"), 8) * 10; m_dwTimeToStay = ini.GetInt(_T("TimeToStay"), 4000); m_dwTimeToShow = ini.GetInt(_T("TimeToShow"), 500); m_dwTimeToHide = ini.GetInt(_T("TimeToHide"), 200); strBmpFileName = ini.GetString(_T("bmpFileName"), _T("")); if (!strBmpFileName.IsEmpty()) { if (PathIsRelative(strBmpFileName)) bmpFullPath.Format(_T("%s%s"), szConfigDir, strBmpFileName); else bmpFullPath = strBmpFileName; } // get text rectangle coordinates rcLeft = ini.GetInt(_T("rcTextLeft"),5); rcTop = ini.GetInt(_T("rcTextTop"),45); rcRight = ini.GetInt(_T("rcTextRight"),220 ); rcBottom = ini.GetInt(_T("rcTextBottom"), 85); if (rcLeft<=0) rcLeft=1; if (rcTop<=0) rcTop=1; if (rcRight<=0) rcRight=1; if (rcBottom<=0) rcBottom=1; SetTextRect(CRect(rcLeft,rcTop,rcRight,rcBottom)); // get close button rectangle coordinates rcLeft = ini.GetInt(_T("rcCloseBtnLeft"),286); rcTop = ini.GetInt(_T("rcCloseBtnTop"),40); rcRight = ini.GetInt(_T("rcCloseBtnRight"), 300); rcBottom = ini.GetInt(_T("rcCloseBtnBottom"), 54); if (rcLeft<=0) rcLeft=1; if (rcTop<=0) rcTop=1; if (rcRight<=0) rcRight=1; if (rcBottom<=0) rcBottom=1; SetCloseBtnRect(CRect(rcLeft,rcTop,rcRight,rcBottom)); // get history button rectangle coordinates rcLeft = ini.GetInt(_T("rcHistoryBtnLeft"),283); rcTop = ini.GetInt(_T("rcHistoryBtnTop"),14); rcRight = ini.GetInt(_T("rcHistoryBtnRight"), 299); rcBottom = ini.GetInt(_T("rcHistoryBtnBottom"), 39); if (rcLeft<=0) rcLeft=1; if (rcTop<=0) rcTop=1; if (rcRight<=0) rcRight=1; if (rcBottom<=0) rcBottom=1; SetHistoryBtnRect(CRect(rcLeft,rcTop,rcRight,rcBottom)); if (bmpFullPath.IsEmpty() || !SetBitmap(bmpFullPath, bmpTrasparentRed, bmpTrasparentGreen, bmpTrasparentBlue)) { CEnBitmap imgTaskbar; if (imgTaskbar.LoadImage(IDR_TASKBAR, _T("GIF"))) { if (!SetBitmap(&imgTaskbar, bmpTrasparentRed, bmpTrasparentGreen, bmpTrasparentBlue)) return FALSE; } } SetTextFont(fontType, fontSize, TN_TEXT_NORMAL,TN_TEXT_UNDERLINE); SetTextColor(RGB(nRed, nGreen, nBlue), RGB(sRed, sGreen, sBlue)); return TRUE; }
BOOL CTaskbarNotifier::LoadConfiguration(LPCTSTR pszFilePath) { struct _stat st; st.st_mtime = -1; // '-1' = missing file (void)_tstat(pszFilePath, &st); if ( m_strConfigFilePath.CompareNoCase(pszFilePath) == 0 && st.st_mtime == m_tConfigFileLastModified) return TRUE; TCHAR szConfigDir[MAX_PATH]; int iTextNormalRed, iTextNormalGreen, iTextNormalBlue; int iTextSelectedRed, iTextSelectedGreen, iTextSelectedBlue; int iLeft, iTop, iRight, iBottom; int iBmpTransparentRed, iBmpTransparentGreen, iBmpTransparentBlue; int iFontSize; CString strFontType, strBmpFilePath, strBmpFileName; Hide(); m_strConfigFilePath = pszFilePath; CIni ini(pszFilePath, _T("Config")); _tcsncpy(szConfigDir, pszFilePath, _countof(szConfigDir)); szConfigDir[_countof(szConfigDir)-1] = _T('\0'); LPTSTR pszFileName = _tcsrchr(szConfigDir, _T('\\')); if (pszFileName == NULL) return FALSE; *(pszFileName + 1) = _T('\0'); iTextNormalRed = ini.GetInt(_T("TextNormalRed"), 255); iTextNormalGreen = ini.GetInt(_T("TextNormalGreen"), 255); iTextNormalBlue = ini.GetInt(_T("TextNormalBlue"), 255); iTextSelectedRed = ini.GetInt(_T("TextSelectedRed"), 255); iTextSelectedGreen = ini.GetInt(_T("TextSelectedGreen"), 255); iTextSelectedBlue = ini.GetInt(_T("TextSelectedBlue"), 255); // for backward compatibility read the old values (which had a typo) and then the new values iBmpTransparentRed = ini.GetInt(_T("BmpTrasparentRed"), 255); iBmpTransparentRed = ini.GetInt(_T("BmpTransparentRed"), iBmpTransparentRed); iBmpTransparentGreen = ini.GetInt(_T("BmpTrasparentGreen"), 0); iBmpTransparentGreen = ini.GetInt(_T("BmpTransparentGreen"), iBmpTransparentGreen); iBmpTransparentBlue = ini.GetInt(_T("BmpTrasparentBlue"), 255); iBmpTransparentBlue = ini.GetInt(_T("BmpTransparentBlue"), iBmpTransparentBlue); strFontType = ini.GetString(_T("FontType"), _T("MS Shell Dlg")); iFontSize = ini.GetInt(_T("FontSize"), 8) * 10; m_dwTimeToStay = ini.GetInt(_T("TimeToStay"), 4000); m_dwTimeToShow = ini.GetInt(_T("TimeToShow"), 500); m_dwTimeToHide = ini.GetInt(_T("TimeToHide"), 200); strBmpFileName = ini.GetString(_T("BmpFileName"), _T("")); if (!strBmpFileName.IsEmpty()) { if (PathIsRelative(strBmpFileName)) strBmpFilePath.Format(_T("%s%s"), szConfigDir, strBmpFileName); else strBmpFilePath = strBmpFileName; } // get text rectangle coordinates iLeft = ini.GetInt(_T("rcTextLeft"), 5); iTop = ini.GetInt(_T("rcTextTop"), 45); iRight = ini.GetInt(_T("rcTextRight"), 220); iBottom = ini.GetInt(_T("rcTextBottom"), 85); if (iLeft <= 0) iLeft = 1; if (iTop <= 0) iTop = 1; if (iRight <= 0) iRight = 1; if (iBottom <= 0) iBottom = 1; SetTextRect(CRect(iLeft, iTop, iRight, iBottom)); // get close button rectangle coordinates iLeft = ini.GetInt(_T("rcCloseBtnLeft"), 286); iTop = ini.GetInt(_T("rcCloseBtnTop"), 40); iRight = ini.GetInt(_T("rcCloseBtnRight"), 300); iBottom = ini.GetInt(_T("rcCloseBtnBottom"), 54); if (iLeft <= 0) iLeft = 1; if (iTop <= 0) iTop = 1; if (iRight <= 0) iRight = 1; if (iBottom <= 0) iBottom = 1; SetCloseBtnRect(CRect(iLeft, iTop, iRight, iBottom)); // get history button rectangle coordinates iLeft = ini.GetInt(_T("rcHistoryBtnLeft"), 283); iTop = ini.GetInt(_T("rcHistoryBtnTop"), 14); iRight = ini.GetInt(_T("rcHistoryBtnRight"), 299); iBottom = ini.GetInt(_T("rcHistoryBtnBottom"), 39); if (iLeft <= 0) iLeft = 1; if (iTop <= 0) iTop = 1; if (iRight <= 0) iRight = 1; if (iBottom <= 0) iBottom = 1; SetHistoryBtnRect(CRect(iLeft, iTop, iRight, iBottom)); if (strBmpFilePath.IsEmpty() || !SetBitmap(strBmpFilePath, iBmpTransparentRed, iBmpTransparentGreen, iBmpTransparentBlue)) { CEnBitmap imgTaskbar; if (imgTaskbar.LoadImage(IDR_TASKBAR, _T("GIF"))) { if (!SetBitmap(&imgTaskbar, iBmpTransparentRed, iBmpTransparentGreen, iBmpTransparentBlue)) return FALSE; } } SetTextFont(strFontType, iFontSize, TN_TEXT_NORMAL, TN_TEXT_UNDERLINE); SetTextColor(RGB(iTextNormalRed, iTextNormalGreen, iTextNormalBlue), RGB(iTextSelectedRed, iTextSelectedGreen, iTextSelectedBlue)); m_tConfigFileLastModified = st.st_mtime; return TRUE; }