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

📄 config.cpp

📁 语法检查程序
💻 CPP
字号:
/***************************************************************************/
/* NOTE:                                                                   */
/* This document is copyright (c) by Oz Solomonovich.  All non-commercial  */
/* use is allowed, as long as this document is not altered in any way, and */
/* due credit is given.                                                    */
/***************************************************************************/

// Config.cpp : implementation file
//

#include "stdafx.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/* Registry section */
static LPCTSTR s_pszSection = "";


// define the variables:
#define CFG_VAR(name, type, var, defval) type var = defval;
#define CFG_STR(name, var, defval)       CString var = defval;
#include "config.h"


struct IntCfgVar
{
    LPCTSTR     cKeyName;
    int *       pVar;       
};

struct StrCfgVar
{
    LPCTSTR     cKeyName;
    CString *   pVar;       
};


// the variable <-> registry key translation lists
IntCfgVar IntCfgVars[] =
{
#undef CFG_VAR
#undef CFG_STR
#define CFG_VAR(name, type, var, defval) { #name, ((int *)&var) },
#define CFG_STR(name, var, defval) 
#include "config.h"
    { NULL, NULL }
};

StrCfgVar StrCfgVars[] =
{
#undef CFG_VAR
#undef CFG_STR
#define CFG_VAR(name, type, var, defval)
#define CFG_STR(name, var, defval)       { #name, &var },
#include "config.h"
    { NULL, NULL }
};


const unsigned cIntCfgVars = (sizeof(IntCfgVars)/sizeof(IntCfgVars[0]) - 1);
const unsigned cStrCfgVars = (sizeof(StrCfgVars)/sizeof(StrCfgVars[0]) - 1);


/////////////////////////////////////////////////////////////////////////////
// Configuration persistence

BOOL WriteCfgInt(LPCTSTR lpszEntry, int nValue)
{
    return AfxGetApp()->WriteProfileInt(s_pszSection, lpszEntry, nValue);
}

UINT GetCfgInt(LPCTSTR lpszEntry, int nDefault)
{
    return AfxGetApp()->GetProfileInt(s_pszSection, lpszEntry, nDefault);
}

BOOL WriteCfgString(LPCTSTR lpszEntry, LPCTSTR lpszValue)
{
    return AfxGetApp()->WriteProfileString(s_pszSection, lpszEntry, lpszValue);
}

CString GetCfgString(LPCTSTR lpszEntry, LPCTSTR lpszDefault)
{
    return AfxGetApp()->GetProfileString(s_pszSection, lpszEntry, lpszDefault);
}

#define GETINT(name, var) var = GetCfgInt(name, var);

void GetConfiguration()
{
    unsigned i;

    for (i = 0; i < cIntCfgVars; i++)
    {
        (*IntCfgVars[i].pVar) = 
            GetCfgInt(IntCfgVars[i].cKeyName, *IntCfgVars[i].pVar);
    }

    for (i = 0; i < cStrCfgVars; i++)
    {
        (*StrCfgVars[i].pVar) = 
            GetCfgString(StrCfgVars[i].cKeyName, *StrCfgVars[i].pVar);
    }
}

void WriteConfiguration()
{
    unsigned i;

    for (i = 0; i < cIntCfgVars; i++)
    {
        WriteCfgInt(IntCfgVars[i].cKeyName, *IntCfgVars[i].pVar);
    }

    for (i = 0; i < cStrCfgVars; i++)
    {
        WriteCfgString(StrCfgVars[i].cKeyName, *StrCfgVars[i].pVar);
    }
}

/////////////////////////////////////////////////////////////////////////////
// Registry Section Information

void CfgSetRegSection(LPCTSTR pszSection)
{
    s_pszSection = pszSection;
}

void CfgGetRegSection(LPCTSTR *ppszSection)
{
    *ppszSection = s_pszSection;
}

⌨️ 快捷键说明

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