´Ù. Util ¸ðµâ

ÀÌ ¸ðµâ¿¡´Â ÇÁ·ÎÁ§Æ® Àüü¿¡ °ÉÃÄ ÀÚÁÖ È£ÃâµÇ´Â ÇÔ¼ö¿Í Ŭ·¡½ºµéÀÌ Á¤ÀǵǾî ÀÖ´Ù. ±âÁ¸ÀÇ Util ¸ðµâ¿¡´Â Àü¿ª ÇÔ¼öµé¸¸ µÎµµ·Ï ÇÏ°í SOption Ŭ·¡½º´Â Option ¸ðµâ·Î, CMru, CHistory Ŭ·¡½º´Â Mru ¸ðµâ·Î ºÐÇÒÇÑ´Ù. ´ÙÀ½Àº ºÐÇÒ ÈÄÀÇ Çì´õ ÆÄÀÏÀÌ´Ù. °¢°¢ÀÇ Çì´õ ÆÄÀÏ¿¡´Â ÀÌÁß ÄÄÆÄÀÏÀ» ¹æÁöÇϱâ À§ÇØ Çì´õ ÆÄÀϺ°·Î °íÀ¯ÇÑ ¸ÅÅ©·Î¸¦ Á¤ÀÇÇÑ´Ù.

 

Util.h

Mru.h

#ifndef __UTIL_H

#define __UTIL_H

 

#define STARTQ TCHAR qMes[256];\

          static qcount=0;\

          LARGE_INTEGER qs,s1,s2,s3,qe,qfreq;\

          double g1,g2,g3,ge;\

          QueryPerformanceFrequency(&qfreq);\

          QueryPerformanceCounter(&qs);\

          s1=s2=s3=qs;

#define SPOT1 QueryPerformanceCounter(&s1);

#define SPOT2 QueryPerformanceCounter(&s2);

#define SPOT3 QueryPerformanceCounter(&s3);

#define ENDQ QueryPerformanceCounter(&qe);\

          g1=((double)(s1.QuadPart-qs.QuadPart))/((double)qfreq.QuadPart);\

          g2=((double)(s2.QuadPart-qs.QuadPart))/((double)qfreq.QuadPart);\

          g3=((double)(s3.QuadPart-qs.QuadPart))/((double)qfreq.QuadPart);\

          ge=((double)(qe.QuadPart-qs.QuadPart))/((double)qfreq.QuadPart);\

          sprintf(qMes, "%04d : S1=%.6f,S2=%.6f,S3=%.6f,QE=%.6f\r\n",++qcount,g1,g2,g3,ge);\

          OutputDebugString(qMes);

 

#define SHLM HKEY_LOCAL_MACHINE

#define SHCU HKEY_CURRENT_USER

#define SHCR HKEY_CLASSES_ROOT

 

void WriteLogFile(TCHAR *strLog,...);

void MySetImeMode(HWND hEdit, BOOL bHan);

UINT SHRegReadInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, INT nDefault);

BOOL SHRegReadString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpDefault,

   LPTSTR lpRet, DWORD nSize);

BOOL SHRegWriteInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, UINT nData);

BOOL SHRegWriteString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpData);

void SavePosition(HWND hWnd, TCHAR *Key);

void LoadPosition(HWND hWnd, TCHAR *Key, RECT *Def=NULL);

HRESULT MyCreateShortCut(LPCSTR szSrcFile, LPSTR szLnkFile, LPSTR szArgument, LPSTR szDesc);

void MyGetSpecialFolderPath(HWND hWnd, int nFolder, TCHAR *szPath);

void MoveToParentCenter(HWND hWnd);

BOOL BrowseFolder(HWND hParent, LPCTSTR szTitle, LPCTSTR StartPath, TCHAR *szFolder);

void ParseFtpInfo(TCHAR *Path, TCHAR *Server, TCHAR *User, TCHAR *Pass, TCHAR *& File, int &Port);

void EncodePath(TCHAR *Path, TCHAR *EncPath);

void EncodeBinary(PBYTE buf, int Length, BOOL bEncode);

int BinaryToTextEnccode(PBYTE Src, int length, PBYTE Dest, BOOL bEncode);

int DecodeText(TCHAR *EncText, TCHAR *Text);

void EncodeText(TCHAR *Text, TCHAR *EncText);

 

#define FIF_DEEP 1

#define FIF_DIRFILTER 2

#define FIF_INCHID 4

typedef int (*FIFCALLBACK)(TCHAR *, DWORD, LPVOID);

void FindInFiles(TCHAR *Path, TCHAR *Pattern, DWORD Flags, FIFCALLBACK pCallBack, LPVOID pCustom);

BOOL IsMatch(TCHAR *Path, TCHAR *Pattern);

 

#endif // __UTIL_H

#ifndef __MRU_H

#define __MRU_H

 

class CHistory

{

private:

          TCHAR **data;

          int width;

 

public:

          int num;

          int height;

 

          CHistory();

          CHistory(int awidth,int aheight);

          ~CHistory();

 

          void Init(int awidth, int aheight);

          void ChangeHeight(int aheight);

          void Add(TCHAR *str);

          void Delete(int idx);

          TCHAR *Get(int idx);

          void Set(int idx, TCHAR *str);

          void Empty();

};

 

class CMru

{

private:

          CHistory arMru;

          HMENU hMenu;

          TCHAR Key[MAX_PATH];

 

public:

          UINT MenuID;

          int MaxMru;

 

          CMru();

          ~CMru();

          BOOL InitMRU(TCHAR *aKey, HMENU aMenu, UINT aMenuID, int aMaxMru);

          BOOL ChangeMenu(HMENU aMenu);

          void ChangeMaxMru(int aMaxMru);

          void LoadMRU();

          void SaveMRU();

          void AddMRU(TCHAR *Path);

          void RemoveMRU(int nIndex);

          void ArrangeMenu();

          void GetFilePath(int nIndex,TCHAR *buf);

};

 

#endif // __MRU_H

 

Option.h

#ifndef __OPTION_H

#define __OPTION_H

 

struct SOption

{

          SOption();

          void Init();

          int GetMaxMru();

          int GetUndoLimit();

          void Load(TCHAR *Key);

          void Save(TCHAR *Key);

          void GetStyleColor();

          void SetStyleColor(CParse *Parser);

 

          int StartAction;

          BOOL bExplorerPopup;

          BOOL bAllowMulti;

          BOOL bMaxFirstChild;

          int MaxMru;

          TCHAR DefExt[12];

          BOOL Hangul;

          int OutputHeight;

          BOOL bInitFind;

          BOOL bInitNextFind;

          BOOL bShowToolBar;

          BOOL bShowStatus;

          BOOL bShowFileWnd;

          int FileWndWidth;

          BOOL bShowFileTab;

          BOOL bShowHidden;

          int FilterIndex;

          BOOL bToolBarBig;

          BOOL bToolBarText;

          BOOL bBrowseMode;

          BOOL bSoundFindFail;

          BOOL bWatchChange;

          BOOL bReloadNoAsk;

          BOOL bReloadProject;

 

          int LineRatio;

          BOOL bWrap;

          int nWrap;

          int RightWrap;

          int ColMark;

          int HideSelType;

          int nShowCurLine;

          LOGFONT logfont;

          BOOL bShowMargin;

          BOOL bShowLineNum;

          BOOL bShowEnter;

          BOOL bShowTab;

          BOOL bShowSpace;

          int TabWidth;

          BOOL bNoFirstSpace;

          COLORREF MarColor1;

          COLORREF MarColor2;

          COLORREF NumColor;

          COLORREF MarkColor;

          int ShowTabType;

          int ShowEnterType;

          int ShowSpaceType;

          COLORREF CodeColor;

          COLORREF CurColor;

          COLORREF cBack;

          COLORREF cFore;

          COLORREF cSelFore;

          COLORREF cSelBack;

          BOOL bUseLineEnd;

          BOOL bAllowDrag;

          int CaretWidth;

          BOOL bHideCurLine;

          BOOL bCalcTabWithAvg;

          int UndoLimit;

          BOOL bSpaceForTab;

          BOOL bAutoIndent;

          BOOL bBlockIndentWithTab;

          BOOL bHomeToFirstChar;

          int FindDlgPos;

 

          TCHAR arExt[4][250];

          SParseStyle arStyle[4][32];

          FtpInfo arFtp[32];

 

          LOGFONT prtFont;

          RECT prtMargin;

          BOOL prtbParse;

          BOOL prtnWrap;

          BOOL prtbLineNum;

          BOOL prtbSysHeader;

          BOOL prtbDirect;

          TCHAR prtHeader[256];

          TCHAR prtFooter[256];

          int prtnHeader;

          int prtnFooter;

          TCHAR prtBkText[64];

};

 

#endif // __OPTION_H

 

ÀÌ¹Ì ½Ç½ÀÇß´ø Ŭ·¡½º¿Í ÇÔ¼öµéÀ̹ǷΠ³»¿ëÀº ±»ÀÌ º¼ ÇÊ¿ä°¡ ¾øÀ» °Í °°°í ¾î¶² ¸ðµâ¿¡ ¾î¶² ÇÔ¼ö°¡ ¹èÄ¡µÇ¾ú´ÂÁö¸¸ »ìÆì º¸µµ·Ï ÇÏÀÚ. ´ëÃæÀÇ ¸ð¾ç¸¸ »ìÆì º¸¸é µÇ¹Ç·Î Áö¸é Àý¾àÀ» À§ÇØ ±Û²ÃÀ» Á» ÀÛ°Ô ÀμâÇß´Ù.

¿ø·¡ÀÇ Util.h¿¡ ÀÖ´Â ¼±¾ð¹®µéÀ» Àû´çÈ÷ ³ª´©¾î °¡Áö±â¸¸ Çߴµ¥ ´Ü, Util.h¿¡ ¼±¾ðµÇ¾î ÀÖ´ø FtpInfo ±¸Á¶Ã¼´Â Internet.h·Î ¿Å±æ °ÍÀ̹ǷΠÀÏ´Ü »èÁ¦ÇÏ¿´´Ù. ¶ÇÇÑ bContFIF º¯¼ö¿¡ ´ëÇÑ extern ¼±¾ðµµ global.h¶ó´Â º°µµÀÇ ¸ðµâ¿¡¼­ Àü´ãÇϹǷΠUtil.h¿¡´Â µÑ ÇÊ¿ä°¡ ¾ø´Ù.

±¸Çö ÆÄÀÏ¿¡´Â ¹°·Ð Çì´õ ÆÄÀÏ¿¡ ¼±¾ðÇÑ ÇÔ¼öÀÇ º»Ã¼¿Í °¢ Ŭ·¡½ºÀÇ ¸â¹öÇÔ¼öµéÀÌ Á¤ÀǵǾî ÀÖ´Ù. ±âÁ¸ÀÇ Util.cpp¿¡ ÀÖ´ø ÄÚµåµéÀ» °¢ ¸ðµâ·Î º¹»çÇϱ⸸ ÇÏ¸é µÈ´Ù. ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ ±â´ÉÀ» »ç¿ëÇϹǷΠ¸ðµç CPPÆÄÀÏÀº stdafx.h¸¦ ÀÎŬ·çµåÇØ¾ß ÇÑ´Ù. ±¸Çö ÆÄÀÏÀÇ ³»¿ëÀº CD-ROMÀÇ ¼Ò½º¸¦ ÂüÁ¶Çϱ⠹ٶóµÇ Çì´õ ÆÄÀϸ¸ º¸¸é ¾î¶»°Ô ºÐÇҵǾú´ÂÁö ¾Ë ¼ö ÀÖÀ¸¹Ç·Î ±»ÀÌ È®ÀÎÇØ º¼ ÇÊ¿ä±îÁö´Â ¾øÀ» °ÍÀÌ´Ù.