º£Å¸1À» ¸±¸®ÁîÇϱâ Àü¿¡ °£´ÜÇÑ ÃÖÀûÈ ¸î °¡Áö¸¦ ÇÒ °ÍÀÌ´Ù. ¼º´É °³¼±¿¡ Å« µµ¿òÀÌ µÇ´Â ¸î °¡Áö ÃÖÀûȰŸ®°¡ ÀÖ±â´Â ÇÏÁö¸¸ ÀÌ·± °ÍµéÀº Á» ´õ ±â´ÉÀÌ ¿Ï¼ºµÈ ÈÄ¿¡ ÇÏ´Â °ÍÀÌ ÄÚµå À¯Áö¿¡ À¯¸®ÇØ ´ÙÀ½À¸·Î ¿¬±âÇÏ°í ¾ÆÁÖ °£´ÜÇÑ ÃÖÀûȸ¸ ÇÒ °ÍÀÌ´Ù.
´ç±ÙÀÇ ±âº» ¹®ÀÚ¿ Ãâ·Â ÇÔ¼ö´Â Ŭ¸®ÇÎ ±â´É°ú ÀÚ°£ Á¶Àý ±â´ÉÀÌ ÀÖ´Â ExtTextOutÀÌ´Ù. ´Ü, ¸î °¡Áö ¹®Á¦·Î ÀÎÇØ ÀÌ ÇÔ¼ö¸¦ Á÷Á¢ »ç¿ëÇÏÁö ¾Ê°í AeTextOutÀ̶ó´Â ÇÔ¼ö¸¦ ´ë½Å »ç¿ëÇϴµ¥ ÀÌ ÇÔ¼öÀÇ Äڵ带 º¸ÀÚ.
void CApiEditText::AeTextOut(HDC hdc,int x,int y,TCHAR *str,int len)
{
int i;
int *lpDx;
int boff;
boff=str-pFrame->buf;
lpDx=(int *)malloc(len*sizeof(int));
for (i=0;i<len;) {
if (pFrame->IsDBCS(boff+i)) {
lpDx[i++]=GetCharWidth(str+i,2);
lpDx[i++]=0;
} else {
lpDx[i++]=GetCharWidth(str+i,1);
}
}
ExtTextOut(hdc,x,y,0,NULL,str,len,lpDx);
free(lpDx);
}
lpDx ¹è¿¿¡ °¢ ¹®ÀÚÀÇ ¼öÆò À§Ä¡¸¦ ¹Ì¸® ±¸ÇØ ³õ°í ÇѲ¨¹ø¿¡ Ãâ·ÂÇÑ´Ù. °¢ ¹®ÀÚÀÇ ÆøÀ» ´©ÀûÇÏ¿© ´ÙÀ½ ±ÛÀÚÀÇ À§Ä¡¸¦ ±¸Çϴµ¥ ÀÌ °úÁ¤¿¡¼ ÀÚ°£°ú ´Ü¾î °£°Ý µîÀÇ ¿É¼ÇÀÌ Àû¿ëµÈ´Ù. ÀÌ ÇÔ¼ö´Â lpDx ¹è¿À» ¸Å¹ø ¹®ÀÚ¿ ±æÀ̸¸Å ÇÒ´çÇÏ°í ÇØÁ¦Çϴµ¥ Å« ¸Þ¸ð¸®´Â ¾Æ´ÏÁö¸¸ È£Ãâ ȸ¼ö°¡ ³Ê¹« ºó¹øÇϱ⠶§¹®¿¡ ¼º´É¿¡ ¸·´ëÇÑ ¿µÇâÀ» ¹ÌÄ£´Ù. ¸Å¹ø ÇÒ´çÇÏ´Â °Íº¸´Ù ¹Ì¸® ÇÒ´çÇØ ³õ°í °è¼Ó »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.
class CApiEditText : public CWindow
{
....
int *lpDx;
BOOL CApiEditText::OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct)
{
....
lpDx=(int *)malloc(1025*sizeof(int));
return TRUE;
}
void CApiEditText::OnDestroy(HWND hWnd)
{
....
free(lpDx);
}
lpDx¸¦ ºäÀÇ ¸â¹ö·Î ¼±¾ðÇÏ°í ºä°¡ »ý¼ºµÉ ¶§ 1025ÀÇ Å©±â·Î ¹Ì¸® ÇÒ´çÇßÀ¸¸ç Æı«µÉ ¶§ ÇØÁ¦ÇÑ´Ù. ÀÌ·¸°Ô µÇ¸é ºä°¡ Á¸ÀçÇÏ´Â µ¿¾È lpDx°¡ Á¸ÀçÇϹǷΠAeTextOut ÇÔ¼ö¿¡¼ ÀÏÀÏÀÌ lpDx¸¦ ÇÒ´çÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ ÇÔ¼öÀÇ lpDx °ü¸® ÄÚµå´Â ¸ðµÎ »èÁ¦ÇÑ´Ù. ´Ü, ÀÌ·¸°Ô µÇ¸é AeTextOut ÇÔ¼ö´Â ÇÑ ¹ø¿¡ Ãâ·ÂÇÒ ¼ö ÀÖ´Â ¹®ÀÚ¿ ±æÀÌ¿¡ Á¦¾àÀÌ »ý±â´Âµ¥ DrawLine ÇÔ¼ö¿¡¼ ¼¼±×¸ÕÆ® Å©±â¸¦ 1024·Î ÁÙÀδÙ.
int CApiEditText::DrawLine(HDC hdc, int Line)
{
....
for (;;) {
for (len=0;;) {
assert(nowoff+len <= pLine[Line].End);
if (nowoff+len == pLine[Line].End || len >= 1024) {
¿ø·¡ ÀÌ °ªÀº 4096À̾ú´Âµ¥ Á¶±Ý ´õ ÁÙ¿´´Ù. DrawLine¿¡¼ 1024 ÀÌ»óÀÏ ¶§ ¼¼±×¸ÕÆ®¸¦ ÀÚ¸£´Âµ¥ lpDx´Â ¿Ö 1025Àΰ¡ Çϸé 1023 À§Ä¡°¡ DBCSÀ̸é Àç¼ö¾ø°Ô 1024¸¦ ³ÑÀ» ¼öµµ Àֱ⠶§¹®ÀÌ¸ç ±×·¡¼ 1¹ÙÀÌÆ®ÀÇ ¿©À¯°¡ ÇÊ¿äÇÏ´Ù.
ApiEdit´Â ¿¬¼ÓÀ¸·Î ÀԷµǴ ¹®ÀÚ¿ÀÇ Ãë¼Ò ·¹Äڵ带 º´ÇÕÇÑ´Ù. ¸Å ±ÛÀÚ³ª À½¼Ò¸¶´Ù Ãë¼Ò ·¹Äڵ带 ÀÛ¼ºÇÒ ¼ö´Â ¾øÀ¸¹Ç·Î º´ÇÕ Ã³¸®´Â »ý·«ÇÒ ¼ö ¾ø´Ù. ±×·¯³ª Ŭ¸³º¸µå¿¡¼ ¹®ÀÚ¿À» ¿¬¼ÓÀûÀ¸·Î ºÙ¿© ³ÖÀ¸¸é °¢ ¹®ÀÚ¿µéÀÌ ¸ðµÎ º´ÇյǾî ÇÑ ¹ø¿¡ ºÙ¿© ³Ö¾îÁø °Íó·³ ±â·ÏµÈ´Ù. ÀÌ »óÅ¿¡¼ Ctrl+Z·Î Ãë¼ÒÇÏ¸é ºÙ¿©³Ö¾îÁø ¸ðµç ¹®ÀÚ¿ÀÌ ÇѲ¨¹ø¿¡ Ãë¼ÒµÇ¾î ºÒÆíÇÏ´Ù. ÀÔ·Â ·¹Äڵ带 Àû´çÈ÷ º´ÇÕÇϱâ´Â Ç쵂 ³Ê¹« ±æÁö ¾Êµµ·Ï °ü¸®ÇÏ´Â °ÍÀÌ ÁÁÀ» °Í °°´Ù.
void CApiEdit::URInsert(int nPos, TCHAR *str, int len)
{
if (CanRedo()) {
ClearRedo();
} else {
if (pUR[nowur].action==UR_INSERT) {
// »ðÀÔ À§Ä¡°¡ ¿¬¼ÓÀÌ°í ±æÀÌ°¡ 64 ¹Ì¸¸ÀÏ ¶§¸¸ º´ÇÕÇÑ´Ù.
if (pUR[nowur].pos + pUR[nowur].len==nPos && pUR[nowur].len < 64) {
AllocURData(nowur,pUR[nowur].len+len,5);
memcpy(pUR[nowur].data+pUR[nowur].len,str,len);
pUR[nowur].len+=len;
// ÀÔ·ÂµÈ ¹®ÀÚ¿ÀÌ °ø¹éÀ̳ª °³Çà ÄÚµåÀÌ¸é ºÐÇÒÇÑ´Ù.
if (str[0]==' ' || str[0]=='\r') {
NextRecord();
}
return;
} else {
....
°°Àº »ðÀÔ ·¹ÄÚµåÀÌ°í À§Ä¡°¡ ¿¬¼ÓÀûÀÌ´õ¶óµµ ÀÌÀü ·¹ÄÚµåÀÇ ±æÀÌ°¡ 64 ¹Ì¸¸ÀÏ ¶§¸¸ º´ÇÕÇÑ´Ù. À̶§ 64¶ó´Â °ªÀº ´Ü¼øÇÑ ÀÓÀÇ°ªÀε¥ °ø¹éÀ̳ª °³Çà¾øÀÌ ÀÌ Á¤µµ ¹®ÀÚ¿À» °è¼Ó ÀÔ·ÂÇÒ ¸®°¡ ¾øÀ¸¹Ç·Î ÀÌ Á¤µµ ±æÀÌÀÇ ¹®ÀÚ¿ÀÌ µé¾î ÀÖ´Ù¸é ÀÌÀü¿¡ Ŭ¸³º¸µå¿¡¼ ºÙ¿©Áø °ÍÀ¸·Î ÆÇ´ÜÇÏ´Â °ÍÀÌ´Ù. ¼³»ç ÀÌ ÆÇ´ÜÀÌ Æ²·È´Ù ÇÏ´õ¶óµµ Ãë¼Ò ·¹Äڵ常 ºÐÇÒµÉ »Ó Ưº°ÇÑ ºÎÀÛ¿ëÀº ¾ø´Ù.
´ç±ÙÀº »ç¿ëÀÚ°¡ ¼³Á¤ÇÑ ¿É¼ÇÀ» ·¹Áö½ºÆ®¸®¿¡ öÀúÈ÷ ±â·ÏÇÑ´Ù. ¸ÞÀÎ À©µµ¿ì°¡ Æı«µÇ´Â ½ÃÁ¡ÀÎ OnDestroy¿¡ ´ÙÀ½°ú °°Àº Äڵ尡 ÀÖ´Ù.
void OnDestroy(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
Option.Save(KEY);
DgMacro.SaveToReg(KEY);
DgShortCut.Save(KEY);
....
¿É¼Ç, ¸ÅÅ©·Î, ´ÜÃàÅ° µîÀ» ¸ðµÎ ·¹Áö½ºÆ®¸®¿¡ ÀúÀåÇÑ´Ù. ¹®Á¦´Â ÀÌ ÇÔ¼öµéÀÇ ¾ÈÂÊÀÌ ³Ê¹« °Å´ëÇؼ ·¹Áö½ºÆ®¸®¿¡ ±²ÀåÈ÷ ¸¹Àº °ªµéÀ» ±â·ÏÇÑ´Ù´Â °ÍÀÌ´Ù. °ªÀÌ Á¶±ÝÀÌ¶óµµ º¯°æµÇ¾ú´Ù¸é ÀúÀåÇÏ´Â °ÍÀÌ ¸¶¶¥ÇÏ°ÚÁö¸¸ ±×·¸Áö ¾Ê´Ù¸é ¶È°°Àº °ªÀ» ºÒÇÊ¿äÇÏ°Ô ±â·ÏÇϸç Á¾·á ¼Óµµµµ ´À·ÁÁö°í ¿î¿µÃ¼Á¦µµ ·¹Áö½ºÆ®¸® ij½Ã¿¡ ¸¹Àº ÀÚ¿øÀ» ³¶ºñÇÒ °ÍÀÌ´Ù. ½ÇÁ¦·Î °ªÀÌ ¹Ù²ð ¶§¸¸ ÀúÀåÇÏ´Â °ÍÀÌ È¿À²ÀûÀε¥ °ª º¯°æ ¿©ºÎ¸¦ Á¶»çÇϱâ À§ÇÑ ¸â¹ö¸¦ Ãß°¡ÇÑ´Ù.
struct SOption
{
BOOL bModified;
....
SOption::SOption()
{
int i;
for (i=0;i<sizeof(arFtp)/sizeof(arFtp[0]);i++) {
lstrcpy(arFtp[i].Name,"");
}
Init();
bModified=FALSE;
}
class CMacro
{
public:
CMacro();
~CMacro();
SMacro *arMacro;
int Size;
int Num;
BOOL bModified;
CMacro::CMacro()
{
Size=0;
Num=0;
arMacro=NULL;
bModified=FALSE;
}
class CShortCut
{
public:
SShortCut *arShortCut;
BOOL bModified;
CShortCut::CShortCut()
{
arShortCut=NULL;
bModified=FALSE;
}
°¢ Ŭ·¡½º¿¡ bModified ¸â¹ö¸¦ Ãß°¡ÇÏ°í »ý¼ºÀÚ¿¡¼ FALSE·Î ÃʱâÈÇÑ´Ù. ±×¸®°í ÀÌ ±¸Á¶Ã¼°¡ Á¶±ÝÀÌ¶óµµ º¯°æµÉ ¶§ TRUE·Î º¯°æÇÑ´Ù. ¿É¼ÇÀÇ °æ¿ì´Â ´ÙÀ½ ÇÑ ÁÙ¸¸ ÀÛ¼ºÇÏ¸é µÈ´Ù.
void Config()
{
PROPSHEETPAGE psp[11];
PROPSHEETHEADER psh;
NewOption=Option;
NewOption.bModified=TRUE;
....
NewOptionÀÇ bModified¸¦ TRUE·Î ÃʱâÈÇϸé ApplyNow¿¡¼ ÀÌ ±¸Á¶Ã¼¸¦ Option¿¡ ´ëÀÔÇÒ °ÍÀÌ´Ù. »ç¿ëÀÚ°¡ ±âº» ¼³Á¤ ´ëÈ»óÀÚ¸¦ ¿¾î¼ ¿É¼ÇÀº º¯°æÇÏÁö ¾Ê°í ¹Ù·Î ´Ý¾Ò´Ù¸é OptionÀº º¯ÇÏÁö ¾Ê´Â´Ù. ¼³»ç ¿É¼ÇÀ» º¯°æÇß´Ù ÇÏ´õ¶óµµ Ãë¼Ò ¹öÆ°À» ´·¯ NewOptionÀ» OptionÀ¸·Î ´ëÀÔÇÏÁö ¾ÊÀ¸¸é ¸ðµç ¿É¼Ç º¯°æÀº ¹«È¿°¡ µÈ´Ù. ´ÜÃàÅ°¿Í ¸ÅÅ©·Î´Â °ü¸® ´ëÈ»óÀÚ¸¦ ¿ ¶§ º¯°æµÈ °ÍÀ¸·Î °£ÁÖÇÑ´Ù.
void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
case IDM_TOOL_MACRO:
DgMacro.bModified=TRUE;
DgShortCut.bModified=TRUE;
DialogBox(g_hInst,MAKEINTRESOURCE(IDD_MACRO),hWnd,MacroDlgProc);
break;
case IDM_TOOL_SHORTCUT:
DgShortCut.bModified=TRUE;
DialogBox(g_hInst,MAKEINTRESOURCE(IDD_SHORTCUTLIST),hWnd,ShortCutListProc);
break;
´ëÈ»óÀÚ¸¦ ¿Áö ¾Ê°í ´ÜÃàÅ°³ª ¸ÅÅ©·Î¸¦ ÆíÁýÇÒ ¼ö´Â ¾øÀ¸¹Ç·Î ÀÌ ±æ¸ñÀ» ÁöÅ°°í ÀÖÀ¸¸é º¯°æ ½ÃÁ¡À» È®½ÇÈ÷ ¾Ë ¼ö ÀÖ´Ù. ¹°·Ð ´ëÈ»óÀÚ¸¦ ´Ü¼øÈ÷ ¿±â¸¸ ÇÏ°í ¹Ù·Î ´Ý¾Æµµ º¯°æµÈ °ÍÀ¸·Î °£ÁÖÇϴµ¥ ÀÌ·¸°Ô µÇ¸é ºÒÇÊ¿äÇÏ°Ô ·¹Áö½ºÆ®¸®¿¡ Áߺ¹ ÀúÀåÇÏ°ÚÁö¸¸ ±×·¸´Ù°í Çؼ º° ºÎÀÛ¿ëÀº ¾ø´Ù. ½ÇÁ¦·Î ¸ÅÅ©·Î¿Í ´ÜÃàÅ°°¡ ÆíÁýµÇ¾ú´ÂÁö¸¦ Á¤È®ÇÏ°Ô ÆÇ´ÜÇÏ´Â °Íµµ °¡´ÉÀº ÇÏ°ÚÁö¸¸ ±×´ÙÁö Á¤È®ÇÒ ÇÊ¿äµµ ¾ø´Ù. ¿É¼ÇµéÀÌ º¯°æµÇ´Â ¶Ç´Ù¸¥ ½ÃÁ¡Àº ÃÖÃÊ ¼³Ä¡µÉ ¶§ÀÌ´Ù.
int OnCreate(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
if (SHRegReadInt(SHCU,KEY"Setting","StartAction",1000) == 1000) {
Option.GetStyleColor();
DgShortCut.Init();
FindFlag=AE_FIND_WRAP | AE_FIND_RECURSIVE | AE_FIND_SHORTPATH;
arFind[3].num=2;
arFind[3].Set(0,"*.*");
arFind[3].Set(1,"*.cpp;*.hpp;*.c;*.h;*.inl");
Option.bModified=TRUE;
DgMacro.bModified=TRUE;
DgShortCut.bModified=TRUE;
} else {
....
ÃÖÃÊ ¼³Ä¡½Ã´Â ·¹Áö½ºÆ®¸®¿¡¼ °ªÀ» ÀÐÁö ¾Ê°í º°µµÀÇ ÃʱâÈ ÇÔ¼ö¸¦ È£ÃâÇϴµ¥ À̶§´Â »ç¿ëÀÚ°¡ Á÷Á¢ ÆíÁýÇÏÁö ¾Ê¾Ò´õ¶óµµ Á¾·áÇÒ ¶§ ¹«Á¶°Ç ¿É¼ÇÀ» ÀúÀåÇØ¾ß ÇÑ´Ù. °¢ Ŭ·¡½º°¡ º¯°æ ¿©ºÎ¸¦ ½º½º·Î °ü¸®ÇϹǷΠÁ¾·á½ÃÀÇ ¿É¼Ç ÀúÀå ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÏ¸é µÈ´Ù.
void OnDestroy(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
// ÀúÀåÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§¸¸ ÀúÀåÇÑ´Ù.
if (Option.bModified) Option.Save(KEY);
if (DgMacro.bModified) DgMacro.SaveToReg(KEY);
if (DgShortCut.bModified) DgShortCut.Save(KEY);
....
½ÇÁ¦·Î º¯°æµÈ ¿É¼Ç¿¡ ´ëÇؼ¸¸ ·¹Áö½ºÆ®¸®¿¡ ÀúÀåÇß´Ù. ÀÌ·¸°Ô Çϸé Á¾·á ¼Óµµ°¡ ÈξÀ ´õ »¡¶óÁø´Ù.
±³À°¿ë ÇÁ·ÎÁ§Æ®¸¦ °³¹ßÇÏ´Ù º¸´Ï ´Ü°è¼øÀ¸·Î ½Ç½ÀÀ» ÁøÇàÇÒ ¼ö¹Û¿¡ ¾ø°í ±×·¯´Ù º¸´Ï ¼Ò½º°¡ ¹«Ã´À̳ª ÁöÀúºÐÇÑ °÷ÀÌ ÀÖ´Ù. ´ëÇ¥ÀûÀ¸·Î Dangeun.cppÀÇ OnInitMenu ÇÔ¼ö¸¦ µé ¼ö Àִµ¥ ¸Þ´º Ç׸ñÀÌ ¸Å¹ø ÇÑ µÎ°³¾¿ °³º°ÀûÀ¸·Î Ãß°¡µÇ°í ±×·¸´Ù º¸´Ï ÀÌ ¸Þ´º Ç׸ñÀ» °ü¸®ÇÏ´Â Äڵ嵵 °³º°ÀûÀ¸·Î Ãß°¡µÇ¾î ¿ÏÀüÈ÷ ¾û¸ÁÀÌ µÇ¾î ¹ö·È´Ù. ´ÙÀ½°ú °°ÀÌ ±ò²ûÇÏ°Ô Á¤¸®ÇÏÀÚ.
#define DGCHECKMENUITEM(ID,Con) CheckMenuItem(hMenu,ID, MF_BYCOMMAND | ((Con) ? MF_CHECKED:MF_UNCHECKED))
#define DGENABLEMENUITEM(ID,Con) EnableMenuItem(hMenu,ID, MF_BYCOMMAND | ((Con) ? MF_ENABLED:MF_GRAYED))
void OnInitMenu(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
HMENU hMenu;
HWND hActive;
SInfo *pSi;
int s,e;
CApiEditText *pView;
BOOL bHexa,bText,bSel;
hMenu=(HMENU)wParam;
UpdateMenuCaption(hMenu);
hActive=(HWND)SendMessage(g_hMDIClient,WM_MDIGETACTIVE,0,NULL);
if (hActive) {
pSi=(SInfo *)GetWindowLongPtr(hActive,0);
pView=pSi->Ae.GetActiveView();
// Çí»ç ºä¿Í ¼±Åÿµ¿ª À¯¹« ¹Ì¸® Á¶»ç
bHexa=(pView->ViewType==HEXA_VIEW);
bText=(pView->ViewType==TEXT_VIEW);
pSi->Ae.GetSelect(s,e);
bSel=(s != e);
DGENABLEMENUITEM(IDM_EDIT_VIRT,bText);
DGENABLEMENUITEM(IDM_EDIT_COLUMN,bText);
DGENABLEMENUITEM(IDM_TOOL_PARA,bText);
DGCHECKMENUITEM(IDM_EDIT_VIRT,pView->GetVirtualPos() && bText);
DGCHECKMENUITEM(IDM_EDIT_COLUMN,pView->GetColumnMode() && bText);
DGCHECKMENUITEM(IDM_VIEW_HEXA,bHexa);
DGCHECKMENUITEM(IDM_FILE_READONLY,pSi->Ae.GetReadOnly());
DGENABLEMENUITEM(IDM_FILE_REVERT,pSi->Ae.GetModified() &&
strncmp(pSi->NowFile,"À̸§¾øÀ½",8)!=0);
DGENABLEMENUITEM(IDM_EDIT_CUT,bSel);
DGENABLEMENUITEM(IDM_EDIT_COPY,bSel);
DGENABLEMENUITEM(IDM_EDIT_CUTAPPEND,bSel);
DGENABLEMENUITEM(IDM_EDIT_COPYAPPEND,bSel);
DGENABLEMENUITEM(IDM_EDIT_UPPERSENT,bSel);
DGENABLEMENUITEM(IDM_EDIT_TOTAB,bSel && !bHexa);
DGENABLEMENUITEM(IDM_EDIT_TOSPACE,bSel && !bHexa);
DGENABLEMENUITEM(IDM_EDIT_PASTE,IsClipboardFormatAvailable(CF_TEXT)==FALSE);
DGCHECKMENUITEM(IDM_VIEW_WORDWRAP,pSi->Ae.GetWrap() != 0);
DGCHECKMENUITEM(IDM_VIEW_CODE,pSi->Ae.GetShowState(SHOWENTER));
// ÁÙ°£ Ç¥½Ã
for (s=IDM_LINE_1;s<=IDM_LINE_5;s++) DGCHECKMENUITEM(s,FALSE);
switch (pSi->Ae.GetLineRatio()) {
case 100:DGCHECKMENUITEM(IDM_LINE_1,TRUE);break;
case 120:DGCHECKMENUITEM(IDM_LINE_2,TRUE);break;
case 150:DGCHECKMENUITEM(IDM_LINE_3,TRUE);break;
case 200:DGCHECKMENUITEM(IDM_LINE_4,TRUE);break;
case 300:DGCHECKMENUITEM(IDM_LINE_5,TRUE);break;
}
DGENABLEMENUITEM(IDM_EDIT_UNDO,pSi->Ae.CanUndo());
DGENABLEMENUITEM(IDM_EDIT_REDO,pSi->Ae.CanRedo());
// ¹®¹ý Ç¥½Ã
for (s=IDM_SYN_NONE;s<=IDM_SYN_SQL;s++) DGCHECKMENUITEM(s,FALSE);
switch (int(pSi->Ae.GetParser()->GetInfo(0))) {
case 0:DGCHECKMENUITEM(IDM_SYN_NONE,TRUE);break;
case 1:DGCHECKMENUITEM(IDM_SYN_CPP,TRUE);break;
case 2:DGCHECKMENUITEM(IDM_SYN_HTML,TRUE);break;
case 3:DGCHECKMENUITEM(IDM_SYN_SQL,TRUE);break;
}
DGENABLEMENUITEM(IDM_SEARCH_NEXT,lstrlen(arFind[0].Get(0)) != 0);
DGENABLEMENUITEM(IDM_SEARCH_PREV,lstrlen(arFind[0].Get(0)) != 0);
DGENABLEMENUITEM(IDM_EDIT_INDENT,!bHexa);
DGENABLEMENUITEM(IDM_EDIT_UNINDENT,!bHexa);
DGENABLEMENUITEM(IDM_EDIT_COPYUP,!bHexa);
DGENABLEMENUITEM(IDM_EDIT_COPYDOWN,!bHexa);
DGENABLEMENUITEM(IDM_EDIT_COMMENT,lstrlen(pSi->Ae.GetParser()->GetInfo(2)) && !bHexa);
DGENABLEMENUITEM(IDM_EDIT_UNCOMMENT,lstrlen(pSi->Ae.GetParser()->GetInfo(2)) && !bHexa);
// ¹®¼ Æ÷¸Ë Ç¥½Ã
switch (pSi->Ae.GetFormat()) {
case AE_FORMAT_WIN:
CheckMenuRadioItem(hMenu,IDM_FILE_WIN,IDM_FILE_UTF_8,IDM_FILE_WIN,MF_BYCOMMAND);
break;
case AE_FORMAT_UNIX:
CheckMenuRadioItem(hMenu,IDM_FILE_WIN,IDM_FILE_UTF_8,IDM_FILE_UNIX,MF_BYCOMMAND);
break;
case AE_FORMAT_MAC:
CheckMenuRadioItem(hMenu,IDM_FILE_WIN,IDM_FILE_UTF_8,IDM_FILE_MAC,MF_BYCOMMAND);
break;
case AE_FORMAT_UNICODE:
CheckMenuRadioItem(hMenu,IDM_FILE_WIN,IDM_FILE_UTF_8,IDM_FILE_UNICODE,MF_BYCOMMAND);
break;
case AE_FORMAT_UNIBIG:
CheckMenuRadioItem(hMenu,IDM_FILE_WIN,IDM_FILE_UTF_8,IDM_FILE_UNIBIG,MF_BYCOMMAND);
break;
case AE_FORMAT_UTF8:
CheckMenuRadioItem(hMenu,IDM_FILE_WIN,IDM_FILE_UTF_8,IDM_FILE_UTF_8,MF_BYCOMMAND);
break;
}
}
DGCHECKMENUITEM(IDM_VIEW_OUTPUT,bShowOutput);
DGCHECKMENUITEM(IDM_VIEW_TOOLBAR,Option.bShowToolBar);
DGCHECKMENUITEM(IDM_VIEW_STATUS,Option.bShowStatus);
DGCHECKMENUITEM(IDM_VIEW_FILE,Option.bShowFileWnd);
DGCHECKMENUITEM(IDM_VIEW_FILETAB,Option.bShowFileTab);
DGCHECKMENUITEM(IDM_EDIT_COMMODE,bComMode);
DGCHECKMENUITEM(IDM_VIEW_CLIP,Option.bShowClipWnd);
}
¸Þ´º Ç׸ñÀÇ »ç¿ë °¡´É¼º ¿©ºÎ¿Í üũ ¿©ºÎ¸¦ Á¦¾îÇÏ´Â µÎ °³ÀÇ ¸ÅÅ©·Î ÇÔ¼ö¸¦ Á¤ÀÇÇÏ°í ÀÌ ÇÔ¼öµé·Î ¸Þ´º Ç׸ñÀ» °ü¸®Çß´Ù. °ü¸® ´ë»ó°ú Á¶°Ç¸¸ Àμö·Î Àü´ÞÇϹǷΠÀб⠽±°í ¼Ò½º·®µµ ÈξÀ ´õ ÁÙÀÏ ¼ö ÀÖ´Ù. »Ó¸¸ ¾Æ´Ï¶ó »ïÇ× Á¶°Ç ¿¬»êÀÚ·Î Àμö¸¸ ¼±ÅÃÇÏ°í ¸Å¹ø ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾ÊÀ½À¸·Î½á ¼Óµµ¿Í Å©±â¿¡µµ À¯¸®ÇÏ´Ù. ÇÔ¼ö ³»ºÎ´Â µû·Î ºÐ¼®ÇÏÁö ¾Ê¾Æµµ ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ ¿Ü¿¡µµ OnIdle, ApplyNow, SetSetting µîÀÇ ÇÔ¼öµµ Á¤¸® ´ë»óÀÌ´Ù. ´õ Á¤¸®ÇÒ¸¸ÇÑ °÷ÀÌ ¾îµð ÀÌ »ÓÀ̰ڴ°¡¸¸ ´ëÃæ Á¤¸®ÇÏ´Â Èä³»¸¸ ³»±â·Î ÇÑ´Ù. ÀÌ·± ½ÄÀ¸·Î ¼Ò½º¸¦ Á¤¸®ÇÏ´Ù°¡´Â ¾Æ¸¶ Àüü ¼Ò½º¸¦ ´Ù½Ã ÀÛ¼ºÇØ¾ß ÇÒ °ÍÀÌ´Ù. ´ÙÀ½¿¡ ¹®¼È°¡ ³¡³ ÈÄ¿¡ Çѹø¿¡ Á¤¸®ÇÒ »ý°¢ÀÌ´Ù.
¾ËÆÄ 5 ¹öÀü±îÁö ´ç±ÙÀº ¹«¼öÈ÷ ¸¹Àº ¹ö±×µéÀÌ Á¸ÀçÇß´Ù. »ç¼ÒÇÑ ¹ö±×³ª ´Ü¼ø ¿ÀŸµéÀÌ ¸¹Áö¸¸ °¡²û¾¿ ÇÁ·Î±×·¥À» ´Ù¿î½ÃÅ°´Â Ä¡¸íÀûÀÎ ¹ö±×µµ ÀÖ¾ú´Ù. °³¹ß ÀÚü¿¡¸¸ ³Ê¹« Ä¡ÁßÇÏ´Ù º¸´Ï Á» Ȳ´çÇÑ ¹ö±×µµ ÀÖ¾ú´Âµ¥ ¾îÂ÷ÇÇ °³¹ßÀÚ¿¡°Ô ¹ö±×´Â ÇÇÇÒ ¼ö ¾ø´Â ¼÷¸íÀÌ´Ù. ÀÌ ¹ö±×µé ´ëºÎºÐÀº ¾ÕÂÊÀÇ ½Ç½À °úÁ¤À» ¼öÁ¤ÇÏ¿© ÀÌ¹Ì ÇØ°áÇØ ³õ¾Ò´Ù. ¸¶Áö¸·¿¡ ¹ß°ßµÈ ¸î °¡Áö »ç¼ÒÇÑ ¹®Á¦¸¸ ÇØ°áÇÏ¸é µÈ´Ù.
ÆÄÀÏ ¿ÀÇ Á÷ÈÄÀÇ »óŶõ Á¤º¸Áß ÀϺΰ¡ ºÎÁ¤È®ÇÑ ¹®Á¦°¡ ÀÖ´Ù. ƯÈ÷ ÁÙ ¼ö°¡ Á¦´ë·Î °»½ÅµÇÁö ¾Ê´Âµ¥ ÆÄÀÏÀ» ¿©´Â ¹æ¹ý¿¡ µû¶ó µÇ´Â °æ¿ìµµ ÀÖ°í ¾ÈµÇ´Â °æ¿ìµµ ÀÖ´Ù. ¹®¼°¡ Á¤·ÄµÇ°í ³ ÈÄ¿¡ ÅëÁö ¸Þ½ÃÁö¸¦ ¹Þ´Â°¡ ¾Æ´Ï¸é Á¤·ÄÀü¿¡ ÅëÁö ¸Þ½ÃÁö¸¦ ¹Þ´Â°¡¿¡ µû¶ó ´Þ¶óÁö´Âµ¥ ÆÄÀÏÀ» ¿¬ ÈÄ ¹«Á¶°Ç »óŶõÀ» °»½ÅÇϵµ·Ï ¼öÁ¤ÇÑ´Ù.
BOOL OpenFileToChild(HWND hChild, TCHAR *Path)
{
....
SetStatusText(0xffff);
return TRUE;
}
ÀϹÝÀûÀ¸·Î ÆÄÀÏÀÌ ¹Ù²î¸é ¿µÇâÀ» ¹Þ´Â Á¤º¸°¡ ¸¹À¸¹Ç·Î »óŶõÀÇ ¸ðµç ÆÄÆ®¸¦ ÀüºÎ ´Ù½Ã °»½ÅÇß´Ù. ÆÄÀÏÀ» ¿©´Â µ¿ÀÛÀº ±×´ÙÁö ÀÚÁÖ ÀÖ´Â ÀÏÀÌ ¾Æ´Ï¹Ç·Î Àüü¸¦ ´Ù ¹Ù²ãµµ ¼Óµµ»óÀÇ ºÒÀÌÀÍÀº °ÅÀÇ ¾ø´Ù.
Åø¹ÙÀÇ ÀúÀå ¹öÆ° µ¿ÀÛÀÌ Á¶±Ý ÀÌ»óÇѵ¥ ´Ù¸¥ ¹öÆ°°ú´Â ´Þ¸® ´·¯µµ ¾¦ µé¾î°¡Áö ¾ÊÀ¸¸ç Ç×»ó À§·Î ¼Ú¾Æ ÀÖ´Ù. OnIdle¿¡¼ ÀÌ ¹öÆ°À» °ü¸®ÇÒ ¶§ È°¼ºÃ¢ÀÌ Àִ°¡¿¡ µû¶ó »ç¿ë°¡´É¼ºÀ» °ü¸®Çϴµ¥ ¹öÆ°À» ´©¸¦ ¶§µµ »óŸ¦ °Á¦·Î º¯°æÇϱ⠶§¹®¿¡ Ç×»ó »ç¿ë °¡´ÉÇÏ¸é¼ ¾÷µÈ »óÅ·θ¸ º¸ÀÌ´Â °ÍÀÌ´Ù. ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.
void OnIdle()
{
void OnIdle()
{
HWND hActive;
SInfo *pSi;
int s,e;
CApiEditText *pView;
hActive=(HWND)SendMessage(g_hMDIClient,WM_MDIGETACTIVE,0,NULL);
if (hActive) {
pSi=(SInfo *)GetWindowLongPtr(hActive,0);
pView=pSi->Ae.GetActiveView();
// ÀúÀå ¹öÆ°Àº »ç¿ë±ÝÁö »óÅÂÀÏ ¶§¸¸ »óŸ¦ º¯°æÇÑ´Ù.
if ((SendMessage(hToolBar,TB_GETSTATE,IDM_FILE_SAVE,0) & TBSTATE_ENABLED)==0) {
SendMessage(hToolBar,TB_SETSTATE,IDM_FILE_SAVE,MAKELONG(TBSTATE_ENABLED,0));
}
pSi->Ae.GetSelect(s,e);
....
»ç¿ë ±ÝÁö »óÅÂÀÏ ¶§¸¸ »ç¿ë°¡´ÉÇÏ°Ô º¯°æÇÏ°í ±×·¸Áö ¾ÊÀ» °æ¿ì´Â ÀúÀå ¹öÆ°ÀÇ »óŸ¦ º°µµ·Î Á¶ÀÛÇÏÁö ¾Ê´Â´Ù. Á¶°Ç¸¸ Çϳª¸¸ Ãß°¡Çϸé ÀÏ¹Ý ¹öưó·³ Á¦´ë·Î µ¿ÀÛÇÑ´Ù.
Á¦Ç°À» ¸±¸®ÁîÇϱâ Àü¿¡ µðÆúÆ® ¿É¼ÇÀ» ÀûÀýÇÏ°Ô ¼öÁ¤ÇÑ´Ù. ¿É¼ÇÀ̶ó´Â °ÍÀº »ç¿ëÀÚ°¡ ¾ðÁ¦µçÁö ¼öÁ¤ÇÒ ¼ö ÀÖÁö¸¸ ´ëºÎºÐÀÇ »ç¿ëÀÚµéÀº ¿É¼ÇÀ» Á¶Á¤ÇÏÁö ¾Ê°í °³¹ß»ç°¡ óÀ½ ¸ÂÃç ³õÀº µðÆúÆ®¸¦ ±×´ë·Î »ç¿ëÇÑ´Ù. µû¶ó¼ ¸±¸®Áî¿¡ Àû¿ëµÈ ¿É¼ÇÀº ½ÇÁúÀûÀ¸·Î »ç¿ëÀÚµéÀÌ Ã³À½ º¸´Â Á¦Ç°ÀÇ ¸ð½ÀÀ» ¹Ý¿µÇÏ¸ç ¼±ÅõÇÁö ¾ÊÀº ¿É¼ÇÀº ±â´ÉÀÇ Á¸À縦 ¾ËÁöµµ ¸øÇÏ´Â °æ¿ì°¡ Çã´ÙÇÏ´Ù. ±×·¡¼ »ó¿ë ÇÁ·Î±×·¥µéÀº ÃÖ´ëÇÑ ¸ðµç ±â´ÉÀ» ´Ù ¼±ÅÃÇÑ Ã¤·Î ¸±¸®ÁîÇÏ¿© ±â´ÉÀÇ Á¸À縦 Àû±ØÀûÀ¸·Î ¾Ë¸°´Ù.
ÇÏÁö¸¸ ´ç±ÙÀº »ó¿ë ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï¹Ç·Î ÀÚ½ÅÀÇ ¸ðµç ±â´ÉÀ» ¾Ö½á »Ë³¾ ÇÊ¿ä°¡ ¾ø´Ù. »ç¿ëÀÚ°¡ ºÒÆíÇÏÁö ¾ÊÀ» Á¤µµÀÇ ±âº» ¿É¼Ç¸¸ ¼±ÅÃÇÏ°í ³ª¸ÓÁö´Â ¾Ë¾Æ¼ ¾²µµ·Ï ±â´ÉÀ» °¨Ãá´Ù. ÀÌ·¸°Ô µÇ¸é Èûµé°Ô ¸¸µç ÀϺΠ±â´ÉÀº È°¿ëµÇÁö ¸øÇÏ´Â ¾Ö¼®ÇÔÀÌ ÀÖÁö¸¸ °í±Þ ±â´ÉÀ» µå·¯³»´Â °Íº¸´Ù ÀÚ¿¬½º·¯¿òÀ» ´õ Áß¿ä½ÃÇÑ´Ù´Â ÀÔÀåÀÌ´Ù. µðÆúÆ® ¿É¼Ç Áß ÀϺθ¦ Á¶Á¤ÇÑ´Ù.
void SOption::Init()
{
int i;
StartAction=2;
bExplorerPopup=TRUE;
....
MaxMru=3;
....
bShowFileWnd=TRUE;
....
bWrap=TRUE;
....
memset(&logfont,0,sizeof(LOGFONT));
lstrcpy(logfont.lfFaceName,"±¼¸²");
logfont.lfHeight=10;
logfont.lfCharSet=HANGEUL_CHARSET;
logfont.lfPitchAndFamily=VARIABLE_PITCH | FF_MODERN;
....
bUseLineEnd=FALSE;
Ž»ö±â Æ˾÷ ¸Þ´º¸¦ ±âº»À¸·Î ¼±ÅÃÇߴµ¥ 1.2¿¡¼´Â COM °´Ã¼¸¦ Á¦´ë·Î ¸¸µé¾úÀ¸¹Ç·Î ¸ðµç À©µµ¿ìÁî ¹öÀü¿¡ º° ¹®Á¦°¡ ¾ø´Ù. µðÆúÆ®°¡ TRUEÀ̹ǷΠ¼³Ä¡ ´ëÈ»óÀÚ¿¡¼ ¿É¼Ç ºñ¼±Åýà FALSE·Î ¹Ù²Ùµµ·Ï Äڵ带 ¼öÁ¤ÇÑ´Ù. ¼³Á¤ ´ëÈ»óÀÚ¿¡¼ Æ˾÷ ¿É¼ÇÀ» ²ø ¶§¸¸ Æ˾÷ ¸Þ´º¸¦ ´ÞÁö ¾Ê´Â´Ù.
BOOL CALLBACK SetupDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
....
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
case IDCANCEL:
if (IsDlgButtonChecked(hDlg,IDC_IS_POPUP)==BST_CHECKED) {
RegisterPopup(TRUE);
Option.bExplorerPopup=TRUE;
} else {
Option.bExplorerPopup=FALSE;
}
MRU´Â ±âº» 20°³·Î ´Ã·È´Âµ¥ ¸¹¾Æ¼ ³ª»Ü °Ç ¾øÀ¸¹Ç·Î Á» ¿©À¯ÀÖ°Ô Çß´Ù. ÆÄÀÏâÀº ±âº»ÀûÀ¸·Î Ç¥½ÃÇÏ°í ±Û²ÃÀº ±¼¸² 10Æ÷ÀÎÆ®·Î ¸ÂÃß¾ú´Ù. ½Ã½ºÅÛ ±Û²ÃÀº º°·Î ¿¹»ÚÁöµµ ¾Ê°í ÁÁÁö ¾Ê¾Æ °¡Àå ¹«³ÇÑ ±Û²ÃÀ» ¼±ÅÃÇߴµ¥ ÀÌ·¸°Ô ±Û²ÃÀ» °íÁ¤ÇØ ¹ö¸®¸é ±¹Á¦È¿¡´Â ºÒ¸®ÇÏ´Ù. ApiEdit¿¡ ±Û²ÃÀ» Àû¿ëÇÏ´Â SetSetting ÇÔ¼ö¸¦ ¼öÁ¤ÇÑ´Ù.
void SetSetting(CApiEdit &Ae)
{
....
if (Option.logfont.lfHeight != 0) {
tFont=Option.logfont;
hdc=GetDC(NULL);
tFont.lfHeight=Option.logfont.lfHeight*GetDeviceCaps(hdc,LOGPIXELSY)/72;
tFont.lfWidth=0;
ReleaseDC(NULL,hdc);
Ae.SetFont(&tFont);
}
³ôÀÌ°¡ 0ÀÌ ¾Æ´Ï¸é, Áï ½Ã½ºÅÛ ÆùÆ®°¡ ¾Æ´Ï¸é ¹«Á¶°Ç ÆùÆ®¸¦ Àû¿ëÇØ¾ß ÇÑ´Ù. ÀÚµ¿ °³ÇàÀº ¾Æ¹«·¡µµ óÀ½ºÎÅÍ Àû¿ëÇÏ´Â °ÍÀÌ ÁÁÀ» °Í °°°í bUseLineEnd´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù. ¾Æ¹«·¡µµ ºÎÀÚ¿¬½º·¯¿ö º¸ÀδÙ. ÀÌ µÎ ¿É¼ÇÀº ÄÁÆ®·ÑÀÇ µðÆúÆ®µµ ¼öÁ¤ÇÑ´Ù.
void CApiEditText::SetDefaultSetting()
{
if (pLine) {
SetLineRatio(120);
SetWrap(2);
SetTabWidth(4);
SetShowState(SHOWMARGIN,TRUE);
} else {
LineRatio=120;
nWrap=2;
TabWidth=4;
MarginWidth=25;
}
CApiEdit::CApiEdit()
{
....
bUseLineEnd=FALSE;
C ±¸¹® ºÐ¼®±âÀÇ µðÆúÆ® »ö»óµµ Á¶±Ý ¼öÁ¤ÇÑ´Ù. ´ç±Ù 1.0Àº ¼ýÀÚ¸¦ ÆĶõ»öÀ¸·Î Å°¿öµå¸¦ »¡°£»öÀ¸·Î Ç¥½ÃÇϴµ¥ ´«¿¡ ´õ Àß ¶ç´Â ÆĶõ»öÀ» ºóµµ°¡ ³ôÀº Å°¿öµå Ç¥½Ã¿¡ »ç¿ëÇÏ´Â °ÍÀÌ ´õ ÁÁÀ» °Í °°´Ù. ¹°·Ð »ç¿ëÀÚ°¡ ¾ðÁ¦µçÁö ÆíÁýÇÒ ¼ö ÀÖ´Â ´ë»óÀ̱â´Â ÇÏÁö¸¸ µðÆúÆ®¸¦ ¹«³ÇÏ°Ô ¼³Á¤ÇÏ¿© ÆíÁýÇÏÁö ¾Ê°íµµ ¹Ù·Î ¾µ ¼ö ÀÖ´Â °ÍÀÌ ´õ ÁÁ´Ù. CParseCpp Ŭ·¡½º »ý¼ºÀÚÀÇ Ãʱ⠻ö»ó¸¸ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¸é µÈ´Ù.
CParseCpp::CParseCpp()
{
....
lstrcpy(arStyle[4].name,"¼ýÀÚ");
arStyle[4].fore=RGB(255,0,0);
lstrcpy(arStyle[5].name,"Å°¿öµå");
arStyle[5].fore=RGB(0,0,255);
lstrcpy(arStyle[6].name,"Àü󸮱â");
arStyle[6].fore=RGB(255,0,255);
}
ÃÖÃÊ ½ÇÇà½Ã ÆÄÀÏâ, »ó¿ë±¸ âÀÌ ´Ù º¸À̴µ¥ ¾Æ¹« °Íµµ Ç¥½ÃµÇÁö ¾Ê´Â °ÍÀº È¥¶õÀ» ÁÙ ¼ö ÀÖ´Ù. ƯÈ÷ »ó¿ë±¸ âÀº óÀ½ ½ÇÇàÇÏ¸é ¸Ö°Ç Èò À©µµ¿ì¸¸ º¸¿©, Àú°Ô Æ®¸®ºäÀÎÁö, ¸®½ºÆ® ¹Ú½ºÀÎÁöµµ ±¸ºÐÀÌ ¾ÈµÇ¸ç ¿ëµµ¸¦ ÁüÀÛÇϱ⵵ ¾î·Æ´Ù. ±×·¡¼ ÃÖÃÊ ½ÇÇà½Ã »ùÇà ÆÄÀÏÀ» ¿¬´Ù. OnTimer¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÑ´Ù.
void OnTimer(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
TCHAR Drive[_MAX_DRIVE];
TCHAR Dir[_MAX_DIR];
switch (wParam) {
....
case 100:
....
// óÀ½ ½ÇÇàÇÒ ¶§ »ùÇà ÇÁ·ÎÁ§Æ®¿Í »ó¿ë±¸¸¦ ¿¬´Ù
if (SHRegReadInt(SHCU,KEY"Project","Num",101092)==101092) {
SHRegReadString(SHCU,KEY"Setting","InstPath","",Path,MAX_PATH);
_splitpath(Path,Drive,Dir,NULL,NULL);
wsprintf(Path,"%s%sSample.dgp",Drive,Dir);
if (_access(Path,0)==0) {
LoadProject(Path,FALSE);
}
wsprintf(Path,"%s%sSample.dgc",Drive,Dir);
if (_access(Path,0)==0) {
LoadClipFile(Path,FALSE);
}
}
Option.bMaxFirstChild=bOldMaxFirstChild;
SHRegReadString(SHCU,KEY"Setting","LastFolder","",Path,MAX_PATH);
GotoFolderInTree(Path);
break;
}
}
óÀ½ ½ÇÇàÇßÀ¸¸é ·¹Áö½ºÆ®¸®¿¡´Â InstPath Å°¸¸ ÀÖ°í ¾ÆÁ÷ ¾Æ¹« Å°µµ ¾ø´Ù. Project ¼ºêÅ°ÀÇ NumÀ» ÀÐ¾î º¸µÇ µðÆúÆ®¸¦ 101092·Î ÁÖ°í ÀÌ °ªÀÌ ±×´ë·Î ¸®ÅϵǸé óÀ½ ½ÇÇàÇÑ °ÍÀ¸·Î ÆÇ´ÜÇÒ ¼ö ÀÖ´Ù. óÀ½ ½ÇÇàÇßÀ¸¸é ¼³Ä¡ Æú´õ¿¡ ÀÖ´Â Sample.dgp, Sample.dgc¸¦ ¿¬´Ù. ÀÌ ±â´ÉÀÌ Á¦´ë·Î µ¿ÀÛÇÏ·Á¸é ¹èÆ÷ÇÒ ¶§ Dangeun.exe¿Í »ùÇà ÆÄÀϵéÀ» °°ÀÌ ¹èÆ÷ÇØ¾ß ÇÑ´Ù. ¹°·Ð Çʼö ÆÄÀÏÀº ¾Æ´Ï´Ù. ¸¸¾à ´©±º°¡°¡ Dangeun.exe¸¸ º¹»çÇؼ ½ÇÇàÇß´õ¶óµµ »ùÇà ÆÄÀÏÀÌ ¿¸®Áö ¾ÊÀ» »ÓÀÌÁö µ¿ÀÛ¿¡´Â ¾Æ¹« ¹®Á¦°¡ ¾ø¾î¾ß ÇÑ´Ù. ÆÄÀÏÀÇ Á¸Àç ¿©ºÎ¸¦ ¸ÕÀú Á¶»çÇÏ¿© ¿¡·¯ ¸Þ½ÃÁöÁ¶Â÷µµ Ãâ·ÂÇÏÁö ¾Ê¾Ò´Ù. ¾øÀ¸¸é ¾ø´Â´ë·Î ±×³É Á¶¿ëÈ÷ ½ÇÇàµÇ¾î¾ß ÇÑ´Ù.
¸¶Áö¸·À¸·Î Á¤È®ÇÑ ¹öÀüÀ» Ç¥½ÃÇÑ´Ù. ÇÁ·Î±×·¥ÀÇ ¹öÀüÀº ¿©·¯ ±ºµ¥ Ç¥½ÃµÇ´Âµ¥ ´ç±ÙÀÇ °æ¿ì ÇÁ·Î±×·¥ ¼Ò°³ ´ëÈ»óÀÚ¿Í ¸ÞÀÎ À©µµ¿ì¿¡ Ç¥½ÃµÈ´Ù. About ´ëÈ»óÀÚ¿¡ ÇöÀç ¾ËÆÄ 5¶ó°í µÇ¾î Àִµ¥ º£Å¸ 1·Î ¼öÁ¤ÇÑ´Ù. ±×¸®°í ¸ÞÀÎ À©µµ¿ìÀÇ Å¸ÀÌƲ ¹ÙÀÇ ¹®ÀÚ¿µµ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
...
hWnd=CreateWindow(lpszClass,"´ç±Ù Beta1",WS_OVERLAPPEDWINDOW | WS_VISIBLE |
WS_CLIPCHILDREN,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
¿©±â¼ ¸±¸®ÁîÇÏ´Â ¹öÀüÀº º£Å¸ 1ÀÌ´Ù. ±× ÀÌÀü¿¡µµ ¾ËÆÄ1, 2, 3, 4, 5¸¦ °³¹ßÇß¾ú´Âµ¥ ¾ËÆÄ ¹öÀüÀÇ ¼öÁ¤ »çÇ×µéÀº ¸ðµÎ ¾ÕÂÊ ½Ç½À °úÁ¤¿¡ ¹Ì¸® ¹Ý¿µÇØ µÎ¾ú´Ù. °³¹ßÀÚ ³»ºÎ ¹öÀüÀ̹ǷΠ¾ÆÁ÷±îÁö ¹ö±×°¡ ¸¹ÀÌ ³²¾Æ Àִµ¥ Àá½Ã ÈÄ ¿¬ÀÌ¾î º£Å¸ 2¸¦ ÀÛ¼ºÇÒ °ÍÀÌ´Ù. º£Å¸ ¹öÀüºÎÅÍ´Â ÀÌ¹Ì ¿Ï·áµÈ ½Ç½À ¹®¼´Â ±×´ë·Î À¯ÁöÇÏ°í µû·Î ¹ö±×¸¦ ¼öÁ¤ÇÒ °ÍÀÌ´Ù. ÇÁ·ÎÁ§Æ® Àüü¸¦ Ç® ºôµåÇÏ¸é ¸±¸®Áî°¡ ¿Ï·áµÈ´Ù.
VC 6.0À¸·Î ÄÄÆÄÀÏÇϸé 612K, VC 8.0À¸·Î ÄÄÆÄÀÏÇϸé 632KÀÇ Å©±â·Î ºôµåµÈ´Ù. DgCmd.dll°ú »ùÇà ºñÆ®¸Ê µîÀÌ Æ÷ÇÔµÇ¾î ½ÇÇà ÆÄÀÏ Å©±â°¡ ´Ù¼Ò Å©´Ù. º¯°æµÈ ÃÊ±â ¿É¼Ç Àû¿ëÀ» À§Çؼ´Â ¼³Ä¡ ÇØÁ¦ ÈÄ ´Ù½Ã ½ÇÇàÇØ¾ß ÇÑ´Ù.