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

📄 chnconv_opt.cpp

📁 This software performs code conversion of Chinese characters, including GB2312/GBK and BIG5. It a
💻 CPP
字号:
// chnconv_opt.cpp

#include <windows.h>
#include "msc.h"
#include "codepage.h"
#include "resource.h"
#include "chnconv.h"


#define CHNCONV_OPT_GLOBAL(type,name)              extern type name ;    type name = (type) 0
#define CHNCONV_OPT_GLOBAL_INIT(type,name,init)    extern type name ;    type name = init
#define CHNCONV_OPT_GLOBAL_ARRAY(type,name,size)   extern type name [] ; type name [size] = { 0 }
// C++ 偱偼 const 偼僨僼僅儖僩偱偼撪晹寢崌偵側傞偺偱丄extern 偱偺愰尵傕昁梫

#include "chnconv_opt.h"



////////////////////////////////////////
//    僆僾僔儑儞僼傽僀儖偺撉傒庢傝    //
////////////////////////////////////////



// 惍悢偺僆僾僔儑儞
const OPTION_INTEGER OptionIntegerList [] = {
   { & IsGb2big5N,   "IsGb2big5N" },
   { & IsBig52gbN,   "IsBig52gbN" },
   { & IsGb2cwN,     "IsGb2cwN" },
   { & IsSenceCwFanti,  "IsSenceCwFanti" },
   { & IsCwTxtFanti,    "IsCwTxtFanti" },
   { & IsOutputNumber,  "IsOutputNumber" },
   { & IsInputNumber,   "IsInputNumber" },
   { & IsOneQuestionMark,  "IsOneQuestionMark" },
   { & IsConvertQuotation, "IsConvertQuotation" },
   { & IsUseSameFont,      "IsUseSameFont" },
   { & IsOutputCwNewFont,  "IsOutputCwNewFont" },
   { & IsTxtUnicodeHtml,   "IsTxtUnicodeHtml" },
   { & IsNoUseUnicode,     "IsNoUseUnicode" },
   { & IsConvertCjkEx,     "IsConvertCjkEx" },
   { & IsLinshiDaimaToCjkEx, "IsLinshiDaimaToCjkEx" },
   { & IsCjkExToLinshiDaima, "IsCjkExToLinshiDaima" },
   { & nTmFontSize,        "TmFontSize" },
   { & IsWriteTmComment,   "IsWriteTmComment" } ,
#ifdef CHNCONV_EXE
   { & IsNoConfirm,     "IsNoConfirm" },
   { & IsNoRecycle,     "IsNoRecycle" },
   { & IsNoMessage,     "IsNoMessage" },
   { & IsNoAddExtension,   "IsNoAddExtension" },
   { & IsConfirmOnExit, "IsConfirmOnExit" },
   { & nSavedMuiLangId, "MuiLangId" },
   { & nSavedSrcType,   "SrcType" },
   { & nSavedDstType,   "DstType" },
   { & nSavedSrcCode,   "SrcCode" },
   { & nSavedDstCode,   "DstCode" },
   { & nSavedWindowX,   "WindowX" },
   { & nSavedWindowY,   "WindowY" },
#endif
} ;

const int OPTION_INTEGER_LIST_NELEM = NELEMOF ( OptionIntegerList ) ;



// 暥帤楍偺僆僾僔儑儞 (ANSI)
const OPTION_STRING_A OptionStringListA [] = {
   { szGbFont,          "GbFont",         FONTNAME_MAX },
   { szGbGothicFont,    "GbGothicFont",   FONTNAME_MAX },
   { szBig5Font,        "Big5Font",       FONTNAME_MAX },
   { szBig5GothicFont,  "Big5GothicFont", FONTNAME_MAX },
   { szPinyinFont,      "PinyinFont",     FONTNAME_MAX },
   { szPinyinGothicFont,"PinyinGothicFont",FONTNAME_MAX },
#ifdef CHNCONV_EXE
   { szBrowsePathA,     "BrowsePathA",    MAX_PATH },
#endif
} ;

const int OPTION_STRING_LIST_A_NELEM = NELEMOF ( OptionStringListA ) ;



#if defined CHNCONV_EXE || defined SETUP_C
// 暥帤楍偺僆僾僔儑儞 (UNICODE)
const OPTION_STRING_W OptionStringListW [] = {
   { szBrowsePathW,     "BrowsePathW",    MAX_PATH },
} ;

const int OPTION_STRING_LIST_W_NELEM = NELEMOF ( OptionStringListW ) ;
#endif



////////////////////////////////////////
//         僐乕僪儁乕僕偺慖戰         //
////////////////////////////////////////



#ifdef CHNCONV_EXE
// 僐乕僪儁乕僕偺慖戰
const CODEPAGE AvailableCodeList [] = {
   { CP_JAPANESE_CW,    IDS_CP_JAPANESE_CW },
   { CP_JAPANESE_NH,    IDS_CP_JAPANESE_NH },
   { CP_JAPANESE_CWN,   IDS_CP_JAPANESE_CWN },
   { CP_JAPANESE_ZQ,    IDS_CP_JAPANESE_ZQ },
   { CP_JAPANESE_CX,    IDS_CP_JAPANESE_CX },
   { CP_JAPANESE_ZJ,    IDS_CP_JAPANESE_ZJ },
   { CP_JAPANESE_TM,    IDS_CP_JAPANESE_TM },
   { CP_JAPANESE_FW,    IDS_CP_JAPANESE_FW },
} ;

const int AVAILABLE_CODE_LIST_NELEM = NELEMOF ( AvailableCodeList ) ;
#endif



////////////////////////////////////////
//          僆僾僔儑儞偺夝庍          //
////////////////////////////////////////



// 僆僾僔儑儞偺夝庍
unsigned long TranslateConversionMode ( int nSrcCodePage, int nDstCodePage ) {

   unsigned long dwConversionMode = 0 ;

   if ( IsOutputNumber ) dwConversionMode |= CONVMODE_OUTPUT_CODE_NUMBER ;
   if ( IsInputNumber ) dwConversionMode |= CONVMODE_INPUT_CODE_NUMBER ;
   if ( IsOneQuestionMark ) dwConversionMode |= CONVMODE_ONE_QUESTION_MARK ;
   if ( IsConvertQuotation ) dwConversionMode |= CONVMODE_QUOTATION_MARK ;
   if ( IsGb2big5N && nDstCodePage == CP_CHINESE_TRADITIONAL ) dwConversionMode |= CONVMODE_CHNCONV_NO_VARIANT ;
   if ( IsBig52gbN && nSrcCodePage == CP_CHINESE_TRADITIONAL ) dwConversionMode |= CONVMODE_CHNCONV_NO_VARIANT ;
   if ( IsGb2cwN ) dwConversionMode |= CONVMODE_CHNCONV_NO_GBK ;
   if ( IsSenceCwFanti ) dwConversionMode |= CONVMODE_SENSE_CW_FANTIZI ;
   if ( IsCwTxtFanti ) dwConversionMode |= CONVMODE_CW_TXT_FANTIZI ;
   if ( ! IsUseSameFont ) dwConversionMode |= CONVMODE_PINYIN_BY_ASCII ;
   if ( IsOutputCwNewFont ) dwConversionMode |= CONVMODE_OUTPUT_NEW_FONT ;
   if ( IsTxtUnicodeHtml ) dwConversionMode |= CONVMODE_TXT_UNICODE_HTML ;
   if ( IsNoUseUnicode ) dwConversionMode |= CONVMODE_NO_USE_UNICODE ;
   if ( IsConvertCjkEx ) dwConversionMode |= CONVMODE_CONVERT_CJKEX ;
   if ( IsLinshiDaimaToCjkEx ) dwConversionMode |= CONVMODE_LINGSHIDAIMA_TO_CJKEX ;
   if ( IsCjkExToLinshiDaima ) dwConversionMode |= CONVMODE_CJKEX_TO_LINGSHIDAIMA ;
#ifdef CHNCONV_CONSOLE
   if ( IsConvertTxt ) dwConversionMode |= CONVMODE_CONVERT_TXT ;
   if ( IsConvertRtf ) dwConversionMode |= CONVMODE_CONVERT_RTF ;
#endif

   return dwConversionMode ;
}



// 奼挘僆僾僔儑儞偺夝庍
unsigned long TranslateAdditionalMode ( int nSrcCodePage, int nDstCodePage ) {

   unsigned long dwAdditionalMode = 0 ;

   if ( IsWriteTmComment ) dwAdditionalMode |= ADDITIONAL_MODE_WRITE_TM_COMMENT ;

   return dwAdditionalMode ;
}



⌨️ 快捷键说明

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