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

📄 main.cpp

📁 《bcb深度历险》 电子书
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include <registry.hpp>
#include <mmsystem.h>
#include <extctrls.hpp>

#include "main.h"
#include "xFiles.hpp"
#include "xUtils.hpp"
#include "xGraphics.hpp"
#include "xRegistry.hpp"
#include "xDesktop.hpp"
#include "xFonts.hpp"
#include "xControls.hpp"
#include "about.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

AnsiString __fastcall TMainForm::ReadThemeItem(TIniFile* IniFile, AnsiString Section, AnsiString Ident)
{
  if (Ident == "") Ident = "DefaultValue";
  AnsiString value = IniFile->ReadString(Section, Ident, "");

  AnsiString S = FThemePath + ExtractFileName(value);
  if (FileExistsAfterTruncate(S)) value = S;

  return value;
}

void __fastcall TMainForm::ReadThemeFile(AnsiString FileName)
{
  DoBusy(true);
  try {
    FThemePath = PathWithSlash(ExtractFilePath(FileName), '\\');
    FThemeName = ExtractFileName(FileName);

    TIniFile* IniFile = new TIniFile(FileName);
    try {
      // read metrics
      AnsiString S;
      S = ReadThemeItem(IniFile, secMetrics, "IconMetrics");
      StringToBuffer(S, &FIM, sizeof(FIM));
      S = ReadThemeItem(IniFile, secMetrics, "NonClientMetrics");
      StringToBuffer(S, &FNM, sizeof(FNM));

      FMyFonts[mfIcon] = FIM.lfFont;
      FMyFonts[mfCaptionFont] = FNM.lfCaptionFont;
      FMyFonts[mfsmCaptionFont] = FNM.lfSmCaptionFont;
      FMyFonts[mfMenuFont] = FNM.lfMenuFont;
      FMyFonts[mfStatusFont] = FNM.lfStatusFont;
      FMyFonts[mfMessageFont] = FNM.lfMessageFont;

      // read my icons
      if (IniFile->SectionExists(secMyComputerKey))
        FMyIcons[mcMyComputer] = ReadThemeItem(IniFile, secMyComputerKey, ""); // for fool win98"s theme
      else
        FMyIcons[mcMyComputer] = ReadThemeItem(IniFile, secMyComputer, "");

      if (IniFile->SectionExists(secNeighborKey))
        FMyIcons[mcNeighbor] = ReadThemeItem(IniFile, secNeighborKey, "");
      else
        FMyIcons[mcNeighbor] = ReadThemeItem(IniFile, secNeighbor, "");

      if (IniFile->SectionExists(secRecycleBinKey)) {
        FMyIcons[mcRecycleBinFull] = ReadThemeItem(IniFile, secRecycleBinKey, "full");
        FMyIcons[mcRecycleBinEmpty] = ReadThemeItem(IniFile, secRecycleBinKey, "empty");
      } else {
        FMyIcons[mcRecycleBinFull] = ReadThemeItem(IniFile, secRecycleBin, "full");
        FMyIcons[mcRecycleBinEmpty] = ReadThemeItem(IniFile, secRecycleBin, "empty");
      }

      // read my colors
      for (TMyColor i = 0; i <= TMyColor_MAX; i = i + 1) {
        AnsiString S = ReadThemeItem(IniFile, secColors, MyColorID[i]);
        if (S != "")
          FMyColors[i] = RGBStringToColor(S);
        else {
          if (i == GradientActiveTitle)
            FMyColors[i] = FMyColors[ActiveTitle];
          else if (i == GradientInactiveTitle)
            FMyColors[i] = FMyColors[InactiveTitle];
          else
            FMyColors[i] = -1; // 箇砞

⌨️ 快捷键说明

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