¹ö±× ¼öÁ¤°ú ¼Ò½º Á¤¸®´Â ´ëÃæ ¸¶¹«¸®µÇ¾ú°í ÀÌÁ¦ºÎÅÍ 1.2¹öÀüÀ» ¸¸µé¾î º¸ÀÚ. ½ºÆÑÀÌ ¸¹ÀÌ È®ÀåµÉ °ÍÀ̹ǷΠ¹öÀüÀ» ¹Ù²ÙµÇ ´Ü¼øÈ÷ ¾çÀûÀ¸·Î ±â´ÉÀÌ ´Ã¾î³¯ »ÓÀÌÁö ±Ùº»ÀûÀÎ ±¸Á¶»óÀÇ º¯È°¡ ÀÖ´Â °ÍÀº ¾Æ´Ï¹Ç·Î ¾ÆÁ÷µµ ¸ÞÀÌÀú ¹öÀüÀº 1ÀÌ´Ù. 1.0 ´ÙÀ½Àº 1.1ÀÌ µÇ¾î¾ß°ÚÁö¸¸ Ãß°¡µÈ ±â´ÉÀÌ ¸¹À¸¹Ç·Î 1.1Àº °Ç³Ê¶Ù¾ú´Ù. ¾îÂ÷ÇÇ ¹öÀü ¹øÈ£´Â °³¹ßÀÚ°¡ ÁÖ°üÀûÀ¸·Î ºÙÀÌ´Â °ÍÀÌ´Ù. ¹öÀüÀ» º¯°æÇϱâ À§ÇØ global.h¿¡ ÀÖ´Â KEY ¸ÅÅ©·Î »ó¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ°í ARSIZE ¸ÅÅ©·Î ÇÔ¼öµµ Á¤ÀÇÇÑ´Ù.
#define KEY "Software\\Miyoungsoft\\Dangeun\\1.2\\"
#define GAP 3
#define ARSIZE(ar) (sizeof(ar)/sizeof(ar[0]))
¸¶ÀÌÅ©·Î¼ÒÇÁÆ®´Â °°Àº ÇÁ·Î±×·¥ÀÌ¶óµµ ¹öÀüÀÌ ´Ù¸£¸é ·¹Áö½ºÆ®¸®¸¦ µû·Î ¾²±â¸¦ ±Ç°íÇϴµ¥ ÀÌ ±Ç°í´ë·Î ·¹Áö½ºÆ®¸® ·çƮ۸¦ 1.0¿¡¼ 1.2·Î º¯°æÇÏ¿´´Ù. 1.0¹öÀü°ú ·¹Áö½ºÆ®¸® À§Ä¡°¡ ´Ù¸£±â ¶§¹®¿¡ 1.0À» »ç¿ëÁßÀÎ ½Ã½ºÅÛ¿¡¼ 1.2¹öÀüÀ» óÀ½ ½ÇÇàÇϸé Ãʱ⠼³Ä¡ ´ëÈ»óÀÚ°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù. Áï, ´ç±Ù 1.0°ú ´ç±Ù 1.2´Â °íÀ¯ÀÇ ¼³Á¤ »óŸ¦ °¡Áö´Â ¿ÏÀüÈ÷ ´Ù¸¥ ÇÁ·Î±×·¥À¸·Î ÀνĵȴÙ.
ARSIZE ¸ÅÅ©·Î´Â ¹è¿ÀÇ Å©±â¸¦ °è»êÇÑ´Ù. ´ç±ÙÀº ƯÈ÷ ¹è¿À» ¸¹ÀÌ »ç¿ëÇϹǷΠÁ¤Àû ¹è¿ÀÇ Å©±â¸¦ ±¸ÇÏ´Â °æ¿ì°¡ ¸¹À¸¸ç ÀÌ·² ¶§´Â sizeof ¿¬»êÀÚ·Î ÄÄÆÄÀϽÿ¡ ¹è¿ Å©±â¸¦ °è»êÇÏ´Â ¹æ¹ýÀÌ ¸¹ÀÌ »ç¿ëµÈ´Ù. ¿¹¸¦ µé¾î Dangeun.cppÀÇ TestNeedActive ÇÔ¼öÀÇ Äڵ带 º¸¸é ´ÙÀ½°ú °°´Ù.
for (i=0;i<sizeof(IDs)/sizeof(IDs[0]);i++) {
....
}
IDs ¹è¿ÀÇ ³¡±îÁö ·çÇÁ¸¦ µ¹±â À§ÇØ ¹è¿ Å©±â¸¦ °è»êÇÏ°í Àִµ¥ IDs ¹è¿ Àüü Å©±â¸¦ ù¹ø° ¹è¿ ¿ä¼Ò Å©±â·Î ³ª´©¸é µÈ´Ù. CApiEdit::DisplayTab¿¡µµ ºñ½ÁÇÑ Äڵ尡 ÀÖ°í Config.cpp¿¡¼ ÇÁ·ÎÆÛƼ ÆäÀÌÁö °³¼ö¸¦ ¼¿ ¶§µµ µ¿ÀÏÇÑ ¿¬»ê½ÄÀ» »ç¿ëÇÑ´Ù. ¾ÕÀ¸·Îµµ ÀÌ·± ¹è¿ Å©±â °è»êÀÌ ¸¹ÀÌ »ç¿ëµÇ±â ¶§¹®¿¡ ¾Æ¿¹ Àü¿ª ¸ÅÅ©·Î·Î Á¤ÀÇÇØ µÎ¾ú´Ù. sizeof ¿¬»êÀÚ¸¦ µÎ ¹ø ¾²´Â °Íº¸´Ù´Â ARSIZE ¸ÅÅ©·Î¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÈξÀ ´õ °£´ÜÇÏ°í Äڵ带 Àб⿡µµ Æí¸®ÇÏ´Ù.
´Ü, ÀÌ¹Ì sizeof ¿¬»êÀÚ¸¦ »ç¿ëÇÏ°í ÀÖ´Â ¼Ò½º´Â ½Ç½ÀÀÇ ÆíÀÇ»ó ±»ÀÌ ARSIZE·Î ¹Ù²ÙÁö ¾Ê±â·Î ÇÑ´Ù. ÀÌ ¸ÅÅ©·Î´Â ¾îµð±îÁö³ª ¼Ò½ºÀÇ °¡µ¶¼ºÀ» ³ôÀ̱â À§ÇØ ¸¸µç °ÍÀÏ »ÓÀÌÁö ¾îÂ÷ÇÇ Ä¡È¯µÇ¸é °á°ú´Â ¶È°°¾ÆÁö¹Ç·Î ±»ÀÌ ±âÁ¸ ¼Ò½º±îÁö ¹Ù²Ü ÇÊ¿ä´Â ¾ø´Ù. ¹°·Ð ÀÏ°ü¼ºÀ» À§Çؼ´Â ÁÁÁö ¾ÊÁö¸¸ ÀÌ·± ġȯ ÀÛ¾÷Àº Â÷ÈÄ ¼Ò½º Á¤¸®¸¦ ÇÒ ¶§ Çصµ ´ÊÁö ¾Ê´Ù.
¹öÀü ¹øÈ£¸¦ ³ôÀÌ°í ARSIZE ¸ÅÅ©·Î¸¦ Á¤ÀÇÇÏ´Â °ÍÀ¸·Î ÀÌ Ã¥ÀÇ ½Ç½ÀÀÌ ½ÃÀ۵Ǵµ¥ ¿¹ºñ µ¿ÀÛÀ» Çϳª ´õ ÃëÇØ ³õµµ·Ï ÇÏÀÚ. 1±Ç¿¡¼¿Í ¸¶Âù°¡Áö·Î ÀÌ Ã¥¿¡¼µµ ¸®¼Ò½º´Â ½Ç½À ´ë»ó¿¡¼ Á¦¿ÜÇÑ´Ù. ¸®¼Ò½º¿¡ Ưº°ÇÑ ³í¸®°¡ ¼û¾î ÀÖ´Â °ÍÀÌ ¾Æ´Ï¸ç ¶ÇÇÑ ½Ç½À °úÁ¤ÀÌ ¹ø°Å·Ó±â ¶§¹®¿¡ ¸®¼Ò½º ÀÛ¼º °úÁ¤±îÁö °°ÀÌ ½Ç½ÀÇÒ ÇÊ¿ä´Â ¾ø´Ù. µ¥ÀÌÅÍ µ¢¾î¸®¿¡ ºÒ°úÇϹǷΠÁ¦ÀÛÀÚ°¡ ¸¸µé¾î ³õÀº ÃÖÁ¾ ¸®¼Ò½º¸¦ »ç¿ëÇϱ⸸ ÇÏ¸é µÈ´Ù.
¹èÆ÷ CD-ROMÀÇ Dangeun13 µð·ºÅ丮¿¡¼ ¸®¼Ò½º¸¦ º¹»çÇÏ¿© Áö±Ý ½Ç½ÀÁßÀÎ Dangeun13 µð·ºÅ丮¿¡ ºÙ¿© ³Ö´Â´Ù. Dangeun.rc¿Í resource.h´Â ¹°·ÐÀÌ°í res µð·ºÅ丮µµ Åë°·Î º¹»çÇØ¾ß ÇÑ´Ù. ´ç¿¬ÇÑ ¾ê±â°ÚÁö¸¸ º¹»çÇÒ ¶§´Â ÇÁ·ÎÁ§Æ®¸¦ Àá½Ã ´Ý¾Æ¾ß ÇÏ¸ç ¸®¼Ò½º¸¦ ±³Ã¼ÇÑ ÈÄ ÀçÄÄÆÄÀÏÀ» ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÀÌ ÆÄÀϵéÀ» º¹»çÇÔÀ¸·Î½á ´ç±Ù 1.2ÀÇ ¸®¼Ò½º ÀÛ¾÷Àº ¸ðµÎ ¿Ï·áµÇ´Â °ÍÀÌ´Ù. ¸®¼Ò½º ºä¿¡¼ ¸Þ´º³ª ´ëÈ»óÀÚ µîÀÇ ¸®¼Ò½º¸¦ »ìÆì º¸¸é ¾ÕÀ¸·Î ¾î¶² ±â´ÉÀÌ Ãß°¡µÇ´ÂÁö ÇÑ´«¿¡ ¾Ë ¼ö ÀÖ´Ù.
ÀÌ Ã¥ÀÇ ³¡±îÁö ½Ç½ÀÀÌ ÁøÇàµÇ´Âµ¿¾È ¸®¼Ò½º´Â °è¼Ó Àбâ Àü¿ëÀÌ´Ù. ½Ç½À¿¡ ÇÊ¿äÇÑ ¸ðµç ¸®¼Ò½º°¡ ÀÌ¹Ì ÀÛ¼ºµÇ¾î ÀÖÀ¸¹Ç·Î »ç¿ëÇϱ⸸ ÇÏ¸é µÈ´Ù. Ãß°¡µÈ ¸®¼Ò½º¿Ü¿¡ º¯°æµÈ ºÎºÐµµ ÀÖÁö¸¸ »èÁ¦µÈ °ÍÀº ¾øÀ¸¹Ç·Î ¸®¼Ò½º ±³Ã¼ ÈÄ ¹Ù·Î ÄÄÆÄÀÏÇصµ ¿¡·¯´Â ³ªÁö ¾Ê´Â´Ù. º°µµÀÇ ´ÜÃàÅ° °ËÃâ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÒ °èȹÀ̹ǷΠ¾×¼¿·¯·¹ÀÌÅÍ´Â ÃÖÁ¾ ¹öÀü¿¡¼ ÇÊ¿ä¾øÁö¸¸ ½Ç½À Áß°£ ÇÁ·ÎÁ§Æ®¿¡´Â °è¼Ó ÇÊ¿äÇϹǷΠÀÏ´Ü »èÁ¦ÇÏÁö´Â ¾Ê¾Ò´Ù.
¸®¼Ò½º¸¦ ¹Ì¸® ÀÛ¼ºÇØ ³õ¾Ò´Ù ÇÏ´õ¶óµµ »ç¿ëµÇÁö ¾ÊÀº ¸®¼Ò½º´Â ±×³É Á¸ÀçÇϱ⸸ ÇÒ »ÓÀ̹ǷΠÄÚµå±îÁö ¹Ì¸® ¼öÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù. ÇÏÁö¸¸ ¼öÁ¤µÈ ¸®¼Ò½º¿¡ ´ëÇؼ´Â Äڵ忡¼µµ ¾à°£ÀÇ Á¶Á¤ÀÌ ÇÊ¿äÇϹǷΠÀÌ ÀÛ¾÷À» ¸ÕÀú ÇØ ³õµµ·Ï ÇÏÀÚ. Åø¹Ù ¸®¼Ò½º°¡ ¼öÁ¤µÇ¾úÀ¸¹Ç·Î Åø¹ÙÀÇ À̹ÌÁö°¡ Á¦´ë·Î º¸À̵µ·Ï ToolBar.cppÀÇ CreateToolBar ÇÔ¼ö¸¦ ¼öÁ¤ÇÑ´Ù. ±»ÀÌ ÀÌ ÀÛ¾÷À» ¹Ì¸® ÇÏÁö ¾Ê¾Æµµ »ó°ü¾ø±â´Â ÇÏÁö¸¸ ¾îÂ÷ÇÇ ÇØ¾ß ÇÒ ÀÛ¾÷ÀÌ´Ù.
void CreateToolBar(BOOL bText, BOOL bBig)
{
TBBUTTON ToolBtn[]={
{0,IDM_FILE_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0},
{1,IDM_FILE_OPEN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,1},
{2,IDM_FILE_SAVE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,2},
{4,0,0,TBSTYLE_SEP,0,0},
{3,IDM_EDIT_CUT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,3},
{4,IDM_EDIT_COPY,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,4},
{5,IDM_EDIT_PASTE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,5},
{4,0,0,TBSTYLE_SEP,0,0},
{6,IDM_EDIT_UNDO,TBSTATE_ENABLED,TBSTYLE_DROPDOWN,0,0,0,6},
{7,IDM_EDIT_REDO,TBSTATE_ENABLED,TBSTYLE_DROPDOWN,0,0,0,7},
{4,0,0,TBSTYLE_SEP,0,0},
{8,IDM_VIEW_WORDWRAP,TBSTATE_ENABLED,TBSTYLE_CHECK,0,0,0,8},
{9,IDM_VIEW_HEXA,TBSTATE_ENABLED,TBSTYLE_CHECK,0,0,0,9},
{10,IDM_EDIT_COLUMN,TBSTATE_ENABLED,TBSTYLE_CHECK,0,0,0,10},
{11,IDM_EDIT_COMMODE,TBSTATE_ENABLED,TBSTYLE_CHECK,0,0,0,11},
{12,IDM_SEARCH_FIND,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,12},
};
TCHAR *szToolText="»õÆÄÀÏ\0¿±â\0ÀúÀå\0ÀÚ¸£±â\0º¹»ç\0ºÙÀ̱â\0Ãë¼Ò\0Àç½ÇÇà"
"\0°³Çà\0Çí»çºä\0¿¸ðµå\0¸í·É\0ã±â\0";
int bx,by;
UINT_PTR wID;
if (hToolBar) {
DestroyWindow(hToolBar);
}
if (bBig) {
wID=IDB_TOOLBARBIG;
bx=24;
by=22;
} else {
wID=IDB_TOOLBAR;
bx=16;
by=15;
}
hToolBar=CreateToolbarEx(g_hFrameWnd, WS_CHILD | WS_VISIBLE
| TBSTYLE_TOOLTIPS | TBSTYLE_FLAT ,
99, 13, g_hInst, wID, ToolBtn, 16,
bx,by,bx,by,sizeof(TBBUTTON));
if (bText) {
SendMessage(hToolBar,TB_ADDSTRING,NULL,(LPARAM)szToolText);
}
SendMessage(hToolBar,TB_AUTOSIZE,0,0);
SendMessage(hToolBar,TB_SETEXTENDEDSTYLE,0,(LPARAM)TBSTYLE_EX_DRAWDDARROWS);
}
±â´ÉÀÌ ´Ã¾î³ª´Â¸¸Å Åø¹Ù¿¡µµ Çí»çºä¿Í ¿¸ðµå, ¸í·É¸ðµå ¹öÆ°ÀÌ ¼¼ °³ ´õ »ý¼ºµÇ¾ú°í Ãë¼Ò, Àç½ÇÇà ¹öÆ°Àº µå·Ó ´Ù¿î ½ºÅ¸ÀÏ·Î º¯°æµÇ¾ú´Ù. Ãë¼Ò ¹öÆ°À» ´©¸£¸é ÃÖ±Ù ÆíÁý µ¿ÀÛÀ» º¸¿© ÁÖ°í ÇѲ¨¹ø¿¡ Ãë¼ÒÇÒ ¼ö ÀÖ°Ô ÇÒ °ÍÀÌ´Ù. ToolBtn ¹è¿¿¡ Ãß°¡µÈ ¹öÆ°ÀÇ Á¤º¸¸¦ Ãß°¡·Î ÀÛ¼ºÇÏ°í szToolText¿¡µµ »õ·Î Ãß°¡µÈ ¹öÆ°ÀÇ ÅؽºÆ®¸¦ ÀÛ¼ºÇÏ¿´´Ù. Åø¹Ù ÀÚü¿¡´Â DRAWDDARROWS È®Àå ½ºÅ¸ÀÏÀ» ÁÖ¾î µå·Ó ´Ù¿î ¹öÆ°À» ´©¸£¸é ÅëÁö ¸Þ½ÃÁö¸¦ º¸³»µµ·Ï ÇÏ¿´´Ù. Åø¹ÙÀÇ ÅøÆÁÀ» Ãâ·ÂÇÏ´Â OnNotify ÇÔ¼ö¿¡µµ »õ·Î Ãß°¡µÈ ¹öÆ°ÀÇ ÅøÆÁÀ» ÀÛ¼ºÇÑ´Ù.
void OnNotify(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
switch (hdr->code) {
case TTN_GETDISPINFO:
switch (wParam) {
....
case IDM_VIEW_HEXA:
disp->lpszText="Çí»çºä(Ctrl+H)";
break;
case IDM_EDIT_COLUMN:
disp->lpszText="¿¸ðµå(Alt+C)";
break;
case IDM_EDIT_COMMODE:
disp->lpszText="¸í·É¸ðµå(Alt+X)";
break;
case IDM_SEARCH_FIND:
disp->lpszText="ã±â(Ctrl+F)";
break;
}
break;
}
}
Åø¹Ù ºñÆ®¸ÊÀÇ ¸®¼Ò½º°¡ ÀÌ¹Ì ÀÛ¼ºµÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ »óÅ¿¡¼ ÄÄÆÄÀÏÇØ º¸¸é »õ·Î Ãß°¡µÈ Åø ¹öÆ°ÀÌ ³ªÅ¸³¯ °ÍÀÌ´Ù.
¹°·Ð ¾ÆÁ÷ Ãß°¡µÈ ¹öÆ°¿¡ ´ëÇÑ Äڵ带 ÀÛ¼ºÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡ µ¿ÀÛÇÏÁö´Â ¾Ê´Â´Ù. °¢ ¹öÆ°ÀÇ ÄÚµå´Â °ü·Ã ±â´ÉÀ» ÀÛ¼ºÇÒ ¶§ ±¸ÇöÇÒ °ÍÀÌ´Ù.
ÆíÁý±âÀÇ ±â´ÉÀÌ ´ëÆø È®ÀåµÊÀ¸·Î½á »ç¿ëÀÚ°¡ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¼³Á¤°ªµéµµ ¸¹ÀÌ ´Ã¾î³µÀ¸¸ç ±×·¡¼ ±âº» ¼³Á¤ ´ëÈ»óÀÚµµ ´Ã¾î³ ¿É¼ÇÀº Æ÷ÇÔÇϱâ À§ÇØ ÆäÀÌÁö¸¦ ´õ ¸¹ÀÌ ¸¸µé¾î¾ß ÇÑ´Ù. ´ÙÀ½Àº 1.2ÀÇ ÃÖÁ¾ ¼³Á¤ ´ëÈ»óÀÚÀÌ´Ù.
1.0¿¡¼´Â ¿©¼¸ °³ÀÇ ÆäÀÌÁö°¡ ÀÖ¾ú´Âµ¥ ´Ù¼¸ °³°¡ ´õ ´Ã¾î¼ 11°³°¡ µÇ¾ú´Ù. ¿ÏÀüÈ÷ »õ·Î Ãß°¡µÈ ¿É¼Çµµ ÀÖÁö¸¸ ±âÁ¸ÀÇ ¿É¼ÇµéÀÌ ´Ù¸¥ ÆäÀÌÁö·Î À̵¿Çϱ⵵ Çß´Ù. ÁÖ·Î º¸±â ÆäÀÌÁöÀÇ ¿É¼ÇµéÀÌ ¸¹ÀÌ À̵¿µÇ¾ú´Ù.
À̵¿µÈ ÆäÀÌÁö |
¿É¼Ç |
¸ð¾ç |
¸¶Áø ¿µ¿ª Ç¥½Ã ÁÙ¹øÈ£ º¸±â °³Çà ÄÚµå Ç¥½Ã °ø¹é ÄÚµå Ç¥½Ã |
Åø¹Ù |
Åø¹Ù¿¡ Å« ¾ÆÀÌÄÜ »ç¿ë Åø¹Ù¿¡ ¼³¸í Ç¥½Ã |
µ¿ÀÛ |
»õ·Î ¿¸®´Â âÀº ÀÚµ¿ °³Çà »óÅ·Π½ÃÀÛÇϱ⠻õ·Î ¿¸®´Â âÀº ÇÑ±Û ÀÔ·Â »óÅ·Π½ÃÀÛÇϱâ |
»õ·Î Ãß°¡µÈ ÆäÀÌÁöµéÀ» ÇÁ·ÎÆÛƼ ½ÃÆ®¿¡ Æ÷ÇÔ½ÃÅ°±â À§ÇØ Config ÇÔ¼ö¸¦ ¼öÁ¤ÇÑ´Ù.
void Config()
{
PROPSHEETPAGE psp[11];
PROPSHEETHEADER psh;
NewOption=Option;
psp[0].dwSize=sizeof(PROPSHEETPAGE);
psp[0].dwFlags=PSP_DEFAULT;
psp[0].hInstance=g_hInst;
psp[0].pszTemplate=MAKEINTRESOURCE(IDD_GENERAL);
psp[0].pfnDlgProc=(DLGPROC)GeneralDlgProc;
psp[0].lParam=0;
psp[1].dwSize=sizeof(PROPSHEETPAGE);
psp[1].dwFlags=PSP_DEFAULT;
psp[1].hInstance=g_hInst;
psp[1].pszTemplate=MAKEINTRESOURCE(IDD_VIEW);
psp[1].pfnDlgProc=(DLGPROC)ViewDlgProc;
psp[1].lParam=0;
psp[2].dwSize=sizeof(PROPSHEETPAGE);
psp[2].dwFlags=PSP_DEFAULT;
psp[2].hInstance=g_hInst;
psp[2].pszTemplate=MAKEINTRESOURCE(IDD_SHAPE);
psp[2].pfnDlgProc=(DLGPROC)ShapeDlgProc;
psp[2].lParam=0;
psp[3].dwSize=sizeof(PROPSHEETPAGE);
psp[3].dwFlags=PSP_DEFAULT;
psp[3].hInstance=g_hInst;
psp[3].pszTemplate=MAKEINTRESOURCE(IDD_TOOLBAR);
psp[3].pfnDlgProc=(DLGPROC)ToolBarDlgProc;
psp[3].lParam=0;
psp[4].dwSize=sizeof(PROPSHEETPAGE);
psp[4].dwFlags=PSP_DEFAULT;
psp[4].hInstance=g_hInst;
psp[4].pszTemplate=MAKEINTRESOURCE(IDD_COLOR);
psp[4].pfnDlgProc=(DLGPROC)ColorDlgProc;
psp[4].lParam=0;
psp[5].dwSize=sizeof(PROPSHEETPAGE);
psp[5].dwFlags=PSP_DEFAULT;
psp[5].hInstance=g_hInst;
psp[5].pszTemplate=MAKEINTRESOURCE(IDD_EDIT);
psp[5].pfnDlgProc=(DLGPROC)EditDlgProc;
psp[5].lParam=0;
psp[6].dwSize=sizeof(PROPSHEETPAGE);
psp[6].dwFlags=PSP_DEFAULT;
psp[6].hInstance=g_hInst;
psp[6].pszTemplate=MAKEINTRESOURCE(IDD_SYNTAX);
psp[6].pfnDlgProc=(DLGPROC)SyntaxDlgProc;
psp[6].lParam=0;
psp[7].dwSize=sizeof(PROPSHEETPAGE);
psp[7].dwFlags=PSP_DEFAULT;
psp[7].hInstance=g_hInst;
psp[7].pszTemplate=MAKEINTRESOURCE(IDD_PRINT);
psp[7].pfnDlgProc=(DLGPROC)PrintDlgProc;
psp[7].lParam=0;
psp[8].dwSize=sizeof(PROPSHEETPAGE);
psp[8].dwFlags=PSP_DEFAULT;
psp[8].hInstance=g_hInst;
psp[8].pszTemplate=MAKEINTRESOURCE(IDD_FILE);
psp[8].pfnDlgProc=(DLGPROC)FileDlgProc;
psp[8].lParam=0;
psp[9].dwSize=sizeof(PROPSHEETPAGE);
psp[9].dwFlags=PSP_DEFAULT;
psp[9].hInstance=g_hInst;
psp[9].pszTemplate=MAKEINTRESOURCE(IDD_ASSOCIATE);
psp[9].pfnDlgProc=(DLGPROC)AssociateDlgProc;
psp[9].lParam=0;
psp[10].dwSize=sizeof(PROPSHEETPAGE);
psp[10].dwFlags=PSP_DEFAULT;
psp[10].hInstance=g_hInst;
psp[10].pszTemplate=MAKEINTRESOURCE(IDD_OPERATION);
psp[10].pfnDlgProc=(DLGPROC)OperationDlgProc;
psp[10].lParam=0;
psh.dwSize=sizeof(PROPSHEETHEADER);
psh.dwFlags=PSH_PROPSHEETPAGE | PSH_USECALLBACK;
psh.hwndParent=g_hFrameWnd;
psh.pszCaption="¼³Á¤";
psh.nPages=sizeof(psp)/sizeof(psp[0]);
psh.nStartPage=g_StartPage;
psh.ppsp=(LPCPROPSHEETPAGE)&psp;
psh.pfnCallback=ConfigProc;
if (arFont==NULL) {
DgEnumFonts();
}
InitSysColor();
PropertySheet(&psh);
return;
}
»õ·Î Ãß°¡µÈ ÆäÀÌÁö·Î ÀÎÇØ ±âÁ¸ ÆäÀÌÁöÀÇ ¼ø¼¿¡µµ º¯È°¡ »ý°å´Ù. Config.h¿¡´Â Ãß°¡µÈ ÆäÀÌÁöÀÇ ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú ¿øÇüÀ» ¼±¾ðÇÑ´Ù.
BOOL CALLBACK ShapeDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);
BOOL CALLBACK ToolBarDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);
BOOL CALLBACK FileDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);
BOOL CALLBACK AssociateDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);
BOOL CALLBACK OperationDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);
°¢ ÆäÀÌÁöÀÇ ´ëÈ»óÀÚ ÇÁ·Î½ÃÀúµµ ¹Ì¸® ÀÛ¼ºÇØ µÐ´Ù. ¸ð¾ç ÆäÀÌÁö¿¡¼ ¸¶Áø º¸±â ÀÌÇÏ ´Ù¼¸ °³ÀÇ ¿É¼ÇÀ» ó¸®Çϸç Åø¹Ù ÆäÀÌÁö¿¡¼´Â Åø¹Ù °ü·Ã ¿É¼Ç µÎ°¡Áö¸¦ ó¸®ÇÑ´Ù. µ¿ÀÛ ÆäÀÌÁö¿¡´Â ÀÚµ¿ °³Çà ¹× Çѱ۷Π½ÃÀÛ ¿É¼ÇÀ» ó¸®Çϸç ÆÄÀÏ, ¿¬°á ÆäÀÌÁö´Â ¿ÏÀüÈ÷ ºñ¾î ÀÖ´Ù. À̵¿ÇÑ ¿É¼Çµé ¿Ü¿¡´Â ²®µ¥±â¸¸ ¸¸µé¾î µÐ ¼ÀÀÌ´Ù.
BOOL CALLBACK ShapeDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage) {
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_MARGIN:
AdjustDlgUI(2,hDlg);
case IDC_LINENUM:
case IDC_SHOWENTER:
case IDC_SHOWTAB:
case IDC_SHOWSPACE:
PropSheet_Changed(GetParent(hDlg),hDlg);
return TRUE;
}
break;
case WM_NOTIFY:
LPNMHDR hdr;
hdr=(LPNMHDR)lParam;
switch (hdr->code) {
case PSN_SETACTIVE:
g_StartPage=2;
CheckDlgButton(hDlg,IDC_MARGIN,NewOption.bShowMargin);
CheckDlgButton(hDlg,IDC_LINENUM,NewOption.bShowLineNum);
CheckDlgButton(hDlg,IDC_SHOWENTER,NewOption.bShowEnter);
CheckDlgButton(hDlg,IDC_SHOWTAB,NewOption.bShowTab);
CheckDlgButton(hDlg,IDC_SHOWSPACE,NewOption.bShowSpace);
AdjustDlgUI(2,hDlg);
return TRUE;
case PSN_APPLY:
ApplyNow();
return TRUE;
case PSN_KILLACTIVE:
NewOption.bShowMargin=IsDlgButtonChecked(hDlg,IDC_MARGIN);
NewOption.bShowLineNum=IsDlgButtonChecked(hDlg,IDC_LINENUM);
NewOption.bShowEnter=IsDlgButtonChecked(hDlg,IDC_SHOWENTER);
NewOption.bShowTab=IsDlgButtonChecked(hDlg,IDC_SHOWTAB);
NewOption.bShowSpace=IsDlgButtonChecked(hDlg,IDC_SHOWSPACE);
return TRUE;
}
break;
}
return FALSE;
}
BOOL CALLBACK ToolBarDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage) {
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_TOOLBARBIG:
case IDC_TOOLBARTEXT:
PropSheet_Changed(GetParent(hDlg),hDlg);
return TRUE;
}
break;
case WM_NOTIFY:
LPNMHDR hdr;
hdr=(LPNMHDR)lParam;
switch (hdr->code) {
case PSN_SETACTIVE:
g_StartPage=3;
CheckDlgButton(hDlg,IDC_TOOLBARBIG,NewOption.bToolBarBig);
CheckDlgButton(hDlg,IDC_TOOLBARTEXT,NewOption.bToolBarText);
return TRUE;
case PSN_APPLY:
ApplyNow();
return TRUE;
case PSN_KILLACTIVE:
NewOption.bToolBarBig=IsDlgButtonChecked(hDlg,IDC_TOOLBARBIG);
NewOption.bToolBarText=IsDlgButtonChecked(hDlg,IDC_TOOLBARTEXT);
return TRUE;
}
break;
}
return FALSE;
}
BOOL CALLBACK FileDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage) {
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
return TRUE;
case WM_NOTIFY:
LPNMHDR hdr;
hdr=(LPNMHDR)lParam;
switch (hdr->code) {
case PSN_SETACTIVE:
g_StartPage=8;
return TRUE;
case PSN_APPLY:
ApplyNow();
return TRUE;
case PSN_KILLACTIVE:
return TRUE;
}
break;
}
return FALSE;
}
BOOL CALLBACK AssociateDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage) {
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
return TRUE;
case WM_NOTIFY:
LPNMHDR hdr;
hdr=(LPNMHDR)lParam;
switch (hdr->code) {
case PSN_SETACTIVE:
g_StartPage=9;
return TRUE;
case PSN_APPLY:
ApplyNow();
return TRUE;
case PSN_KILLACTIVE:
return TRUE;
}
break;
}
return FALSE;
}
BOOL CALLBACK OperationDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage) {
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_WORDWRAP:
case IDC_HANGUL:
PropSheet_Changed(GetParent(hDlg),hDlg);
break;
}
return TRUE;
case WM_NOTIFY:
LPNMHDR hdr;
hdr=(LPNMHDR)lParam;
switch (hdr->code) {
case PSN_SETACTIVE:
g_StartPage=10;
CheckDlgButton(hDlg,IDC_WORDWRAP,NewOption.bWrap);
CheckDlgButton(hDlg,IDC_HANGUL,NewOption.Hangul);
return TRUE;
case PSN_APPLY:
ApplyNow();
return TRUE;
case PSN_KILLACTIVE:
NewOption.bWrap=IsDlgButtonChecked(hDlg,IDC_WORDWRAP);
NewOption.Hangul=IsDlgButtonChecked(hDlg,IDC_HANGUL);
return TRUE;
}
break;
}
return FALSE;
}
º¸±â ÆäÀÌÁö¿¡ ÀÖ´ø ¿É¼ÇµéÀÌ °¢°¢ÀÇ ÆäÀÌÁö·Î À̻簬À¸¹Ç·Î º¸±â ÆäÀÌÁöÀÎ ViewDlgProc¿¡´Â À̻簣 ¿É¼Çµé¿¡ ´ëÇÑ Äڵ带 Á¦°ÅÇØ¾ß ÇÑ´Ù. ´ÙÀ½ 9°³ ÄÁÆ®·ÑÀÇ °ü·Ã Äڵ带 WM_COMMAND, PSN_SETACTIVE, PSN_KILLACTIVE¿¡¼ »èÁ¦ÇÑ´Ù.
IDC_MARGIN
IDC_LINENUM
IDC_WORDWRAP
IDC_HANGUL
IDC_SHOWENTER
IDC_SHOWTAB
IDC_SHOWSPACE
IDC_TOOLBARBIG
IDC_TOOLBARTEXT
»ö»ó ÆäÀÌÁö ÀÌÀü¿¡ ¸ð¾ç, Åø¹Ù ÆäÀÌÁö°¡ »ðÀԵǾúÀ¸¹Ç·Î »ö»ó, ÆíÁý, ¹®¹ý, Àμâ ÆäÀÌÁöÀÇ PSN_SETACTIVE¿¡ ÀÖ´Â g_StartPage¸¦ °¢°¢ 2¾¿ ´õÇØ¾ß ÇÑ´Ù. 2, 3, 4, 5 ÆäÀÌÁö¿´´ø °ÍÀ» 4, 5, 6, 7·Î º¯°æÇÑ´Ù. AdjustDlgUI ÇÔ¼öÀÇ ÆäÀÌÁö ¹øÈ£µµ ¼öÁ¤ÇÑ´Ù.
void AdjustDlgUI(int Page,HWND hDlg)
{
switch (Page) {
case 0:
if (IsDlgButtonChecked(hDlg,IDC_WATCHCHANGE) == BST_CHECKED) {
EnableWindow(GetDlgItem(hDlg,IDC_RELOADNOASK),TRUE);
} else {
EnableWindow(GetDlgItem(hDlg,IDC_RELOADNOASK),FALSE);
}
break;
case 1:
if (SendDlgItemMessage(hDlg,IDC_FONTFACE,CB_GETCURSEL,0,0)==0) {
EnableWindow(GetDlgItem(hDlg,IDC_FONTSIZE),FALSE);
} else {
EnableWindow(GetDlgItem(hDlg,IDC_FONTSIZE),TRUE);
}
break;
case 2:
if (IsDlgButtonChecked(hDlg,IDC_MARGIN) == BST_CHECKED) {
EnableWindow(GetDlgItem(hDlg,IDC_LINENUM),TRUE);
} else {
EnableWindow(GetDlgItem(hDlg,IDC_LINENUM),FALSE);
}
break;
case 7:
if (IsDlgButtonChecked(hDlg,IDC_PRTFONTSCREEN) == BST_CHECKED) {
....
¸¶Áø º¸±â ¿É¼ÇÀÌ 2¹ø ÆäÀÌÁö·Î À̻縦 °¬À¸¹Ç·Î case 1:ÀÇ Áß°£À» break·Î ÀÚ¸£°í case 2:À» Ãß°¡ÇÑ´Ù. Àμ⠴ëÈ»óÀÚ´Â 5¹ø¿¡¼ 7¹øÀ¸·Î ¹øÈ£°¡ º¯°æµÇ¾úÀ¸¹Ç·Î caseÀÇ »ó¼ö¸¸ º¯°æÇÏ¸é µÈ´Ù. °¢ ÆäÀÌÁö¿¡¼ ÀÌ ÇÔ¼ö¸¦ ºÎ¸£´Â °÷µµ ¼öÁ¤µÇ¾î¾ß Çϴµ¥ PrintDlgProc¸¸ ¼öÁ¤ÇÏ¸é µÈ´Ù. AdjustDlgUI(5,hDlg);¸¦ AdjustDlgUI(7,hDlg);·Î¸¸ ¼öÁ¤Ç쵂 ¼¼ ±ºµ¥ ¸ðµÎ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. ±âÁ¸ ¿¹Á¦¸¦ ¶â¾î °íÄ¡´Ù º¸´Ï Á¤¸» ÀܼÕÀÌ ¸¹ÀÌ °£´Ù. ÀÌ ÀÛ¾÷À» Á÷Á¢ ÇÑ´Ù¸é »ç½Ç ¹«Ã´ °£´ÜÇѵ¥ Áö¸éÀÇ ¼³¸í´ë·Î ¶È°°ÀÌ µû¶óÇϱâ´Â ¹«Ã´ ÇÇ°ïÇÑ ÀÛ¾÷ÀÌ´Ù.
¿©±â±îÁö ÀÛ¾÷ÇÑ ÈÄ ½ÇÇàÇØ º¸¸é »õ·Î Ãß°¡µÈ ¿É¼Ç¿¡ ´ëÇؼ´Â ¾ÆÁ÷ Äڵ尡 ÀÛ¼ºµÇÁö ¾Ê¾ÒÀ¸¹Ç·Î ÄÁÆ®·ÑÀÌ ¾Æ¹« ¹ÝÀÀÀ» º¸ÀÌÁö ¾ÊÁö¸¸ 1.0¿¡ ¸¸µé¾îÁ® ÀÖ´ø ¿É¼ÇµéÀº Á¦´ë·Î Á¶Á¤µÉ °ÍÀÌ´Ù. ±×·±µ¥ º¸±â ÆäÀÌÁö¿¡ ÀÖ´Â ºñÈ°¼ºÈ½Ã ¼±Åÿµ¿ª°ú ÇöÀçÇà °Á¶ ÄÞº¸ ¹Ú½º°¡ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Âµ¥ ÀÌ ÄÞº¸ÀÇ ½ºÅ¸ÀÏÀÌ ¿À³Ê µå·Î¿ì·Î º¯°æµÇ¾ú±â ¶§¹®ÀÌ´Ù. ±×·¡¼ Äڵ忡¼ Á÷Á¢ ÀÌ ¿É¼ÇÀ» ±×·Á¾ß ÇÑ´Ù. ºñÆ®¸Ê Ãâ·ÂÀ» À§ÇØ ´ÙÀ½ ÇÔ¼ö¸¦ Util.cpp¿¡ Ãß°¡ÇÑ´Ù.
void DrawBitmapById(HDC hdc,int x,int y,UINT bitid)
{
HDC MemDC;
HBITMAP hBit,OldBitmap;
int bx,by;
BITMAP bit;
hBit=LoadBitmap(g_hInst,MAKEINTRESOURCE(bitid));
MemDC=CreateCompatibleDC(hdc);
OldBitmap=(HBITMAP)SelectObject(MemDC, hBit);
GetObject(hBit,sizeof(BITMAP),&bit);
bx=bit.bmWidth;
by=bit.bmHeight;
BitBlt(hdc,x,y,bx,by,MemDC,0,0,SRCCOPY);
SelectObject(MemDC,OldBitmap);
DeleteDC(MemDC);
DeleteObject(hBit);
}
ºñÆ®¸ÊÀÇ ¸®¼Ò½º ID¸¦ ÁÖ¸é ÀÌ ºñÆ®¸ÊÀ» Àоî ÁöÁ¤ÇÑ À§Ä¡¿¡ Ãâ·ÂÇÑ´Ù. ¸Þ¸ð¸® DC¸¦ »ý¼ºÇÏ°í ¼±ÅÃ, Å©±â °è»ê, Ãâ·Â, ÇØÁ¦ µîÀ» Á÷Á¢ ÇÏÀÚ¸é ¹ø°Å·Ó±â ¶§¹®¿¡ µû·Î ÇÔ¼ö¸¦ ¸¸µé¾ú´Ù. ÇÔ¼ö ³»ºÎ¿¡¼ LoadBitmapÀ̶ó´Â ´À¸° ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀº º°·Î ÁÁÁö ¾ÊÁö¸¸ ¿À³Ê µå·Î¿ì¿¡ ¾²´Â ºñÆ®¸ÊÀº À۱⠶§¹®¿¡ ¼º´É»óÀÇ ºÒÀÌÀÍÀº ¸¹Áö ¾Ê´Ù. ÇÊ¿äÇÏ´Ù¸é ¹Ì¸® Àоî³õÀº ºñÆ®¸ÊÀ» Ãâ·ÂÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¼öµµ ÀÖ´Ù. º¸±â ÆäÀÌÁö¿¡¼ ÄÞº¸ ¹Ú½º¿¡ ¿É¼ÇÀÇ Àǹ̸¦ Àß ¼³¸íÇÒ ¼ö ÀÖ´Â ºñÆ®¸ÊÀ» Ãâ·ÂÇÑ´Ù. ¹°·Ð ºñÆ®¸Ê ¸®¼Ò½º´Â ÀÌ¹Ì ÀÛ¼ºµÇ¾î ÀÖ´Ù.
BOOL CALLBACK ViewDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HWND hCon;
int i,idx;
int tint;
TCHAR szFace[32];
LPMEASUREITEMSTRUCT lpmis;
LPDRAWITEMSTRUCT lpdis;
RECT rt;
HBRUSH hBrush,OldBrush;
switch(iMessage) {
case WM_INITDIALOG:
....
case WM_MEASUREITEM:
lpmis=(LPMEASUREITEMSTRUCT)lParam;
if (wParam==IDC_SEL) {
lpmis->itemHeight=14;
} else {
lpmis->itemHeight=17;
}
return TRUE;
case WM_DRAWITEM:
lpdis=(LPDRAWITEMSTRUCT)lParam;
rt=lpdis->rcItem;
if (lpdis->itemState & ODS_SELECTED) {
hBrush=CreateSolidBrush(RGB(0,0,255));
OldBrush=(HBRUSH)SelectObject(lpdis->hDC,hBrush);
Ellipse(lpdis->hDC,rt.left+1,rt.top+2,rt.left+12,rt.top+13);
DeleteObject(SelectObject(lpdis->hDC,OldBrush));
} else {
FillRect(lpdis->hDC,&rt,GetSysColorBrush(COLOR_WINDOW));
}
if (wParam==IDC_SEL) {
DrawBitmapById(lpdis->hDC,rt.left+15,rt.top+1,IDB_SEL1+lpdis->itemID);
} else {
DrawBitmapById(lpdis->hDC,rt.left+15,rt.top+1,IDB_CURLINE1+lpdis->itemID);
}
return TRUE;
ºñÈ°¼ºÈ½Ã ¼±Åà ¿µ¿ª Ç¥½Ã ¿É¼ÇÀº ³ôÀÌ 14·Î ÁöÁ¤ÇßÀ¸¸ç ÇöÀçÇà Ç¥½Ã´Â ³ôÀ̸¦ 17·Î ÁöÁ¤Çß´Ù. WM_DRAWITEM¿¡¼´Â ¼±ÅÃµÈ ¿É¼ÇÀÏ ¶§ ¿·¿¡ ÆĶõ»öÀÇ Å¸¿øÀ» ±×¸®°í ºñÆ®¸ÊÀ» Ãâ·ÂÇ쵂 ÄÞº¸ ¹Ú½º¿¡ µî·ÏµÈ ¼ø¼´ë·Î ºñÆ®¸Ê ID¸¦ ¼³Á¤ÇØ µÎ¾úÀ¸¹Ç·Î ¼±µÎ ºñÆ®¸Ê¿¡ Ç׸ñ ID¸¦ ´õÇØ Ãâ·ÂÇÏ¸é µÈ´Ù. µÎ °³ÀÇ ¿É¼ÇÀÌ ºñÆ®¸ÊÀ¸·Î ±×·ÁÁüÀ¸·Î½á ¿É¼ÇÀÇ Àǹ̸¦ Á» ´õ ½±°Ô ÆľÇÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
»ö»ó ¼³Á¤ ´ëÈ»óÀÚÀÇ ÄÞº¸ ¹Ú½º ³ôÀ̸¦ 18Çȼ¿·Î ´Ã¸°´Ù.
BOOL CALLBACK ColorDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
....
case WM_MEASUREITEM:
lpmis=(LPMEASUREITEMSTRUCT)lParam;
lpmis->itemHeight=18;
return TRUE;
break;
¿ø·¡ 16Çȼ¿À̾úÀ¸³ª ½Ã½ºÅÛ ±Û²ÃÀÌ È®´ëµÇ¸é ÀϺΠ¹®ÀÚ¿ÀÌ º¸ÀÌÁö ¾Ê´Â ¹®Á¦°¡ ÀÖ¾î ±Û²ÃÀÌ Á¶±Ý Ä¿Áö´õ¶óµµ º¸ÀÏ ¼ö ÀÖµµ·Ï ¿©À¯ºÐÀ» µÎ¾ú´Ù. »ö»ó ¼³Á¤ ´ëÈ»óÀÚÀÇ WM_MEASURITEM, WM_DRAWITEM ¸Þ½ÃÁöÀÇ ³¡ºÎºÐ¿¡ ¹«ÀǹÌÇÑ break¹®ÀÌ Àִµ¥ »èÁ¦ÇØ ¹ö¸®ÀÚ.
¸Þ´º¿¡µµ ¸¹Àº ¸í·ÉÀÌ Ãß°¡µÇ¾ú´Ù. ¹°·Ð ÄÚµå´Â ¾ÆÁ÷ ÀÛ¼ºµÇÁö ¾Ê¾ÒÀ¸¸ç ½Ç½ÀÀ» ÁøÇàÇÏ´Â Áß¿¡ Çϳª µÑ¾¿ ä¿ö ³ª°¥ °ÍÀÌ´Ù. ¸Þ´º ¸í·Éµé Áß¿¡ È°¼ºÃ¢À» ÇÊ¿ä·Î ÇÏ´Â ¸Þ´º Ç׸ñ¿¡ ´ëÇÑ ¿¡·¯ 󸮴 TestNeedActive¶ó´Â º°µµÀÇ ÇÔ¼ö°¡ ´ã´çÇϹǷΠÀÌ ÇÔ¼ö¿¡ ¸Þ´ºÀÇ ¸ñ·ÏÀ» ¹Ì¸® ÀÛ¼ºÇØ ³õÀÚ.
BOOL TestNeedActive(WORD ID)
{
static WORD IDs[]={ IDM_FILE_NEW,IDM_FILE_OPEN,IDM_FILE_EXIT,IDM_FILE_PROJECT,
IDM_FILE_FTPOPEN, IDM_FILE_HTTPOPEN, IDM_VIEW_OUTPUT,
IDM_VIEW_TOOLBAR,IDM_VIEW_STATUS,IDM_VIEW_FILE,IDM_VIEW_FILETAB,
IDM_VIEW_CLIP, IDM_SEARCH_FILES,IDM_SEARCH_RFILES,IDM_TOOL_CONFIG,
IDM_TOOL_UNINSTALL,IDM_TOOL_MACRO,IDM_TOOL_SHORTCUT,IDM_TOOL_CLIP,
IDM_HELP_ABOUT,IDM_HELP_INDEX,IDM_HELP_HOME };
È°¼ºÃ¢ÀÌ ¾ø¾îµµ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¸í·ÉÀÌ ¸î°¡Áö ´õ Ãß°¡µÇ¾ú´Ù. ¸¶Áö¸·À¸·Î ÀÏ°ýÀûÀÎ ÇÁ·ÎÁ§Æ® °ü¸®¸¦ À§ÇØ ¾ÕÀ¸·Î Ãß°¡ÇÒ ¸ðµâÀ» ¹Ì¸® ¸¸µé¾î ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔÇÑ´Ù. Çì´õ ÆÄÀÏ°ú ±¸Çö ÆÄÀÏ °¢°¢ Çϳª¾¿ ´Ù¼¸ °³ÀÇ ¸ðµâÀ» Ãß°¡ÇÑ´Ù.
ApiEditText.h, ApiEditText.cpp
ApiEditHexa.h, ApiEditHexa.cpp
Macro.h, Macro.cpp
ShortCut.h, ShortCut.cpp
Clip.h, Clip.cpp
°¢ Çì´õ ÆÄÀÏ¿¡´Â ´ÙÀ½°ú °°ÀÌ Áߺ¹ Æ÷ÇÔ ¹æÁö¸¦ À§ÇÑ Á¶°ÇºÎ ÄÄÆÄÀϹ®À» ½á ³Ö´Â´Ù. ¹°·Ð ¸ÅÅ©·Î¸íÀº ÇØ´ç ¸ðµâ¸íÀ¸·Î ÀÛ¼ºÇØ¾ß ÇÑ´Ù.
#ifndef __MACRO_H
#define __MACRO_H
#endif // __MACRO_H
°¢ ±¸Çö ÆÄÀÏ¿¡´Â #include "stdafx.h"¸¸ ½á ³Ö´Â´Ù. ¾ÆÁ÷Àº Äڵ带 °¡ÁöÁö ¾ÊÀ¸¸ç °ü·Ã Àå¿¡¼ Çϳª¾¿ Äڵ带 ÀÛ¼ºÇØ ³ÖÀ» °ÍÀÌ´Ù. stdafx.h¿¡´Â »õ·Î Ãß°¡ÇÑ ¸ðµâµéÀÇ Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÑ´Ù.
#include "ApiEdit.h"
#include "ApiEditText.h"
#include "ApiEditHexa.h"
....
#include "Macro.h"
#include "ShortCut.h"
#include "Clip.h"
#include "global.h"
°¢ ¸ðµâÀÌ Á¤ÀÇÇϴ ŸÀÔÀ̳ª º¯¼ö°¡ Àü¿ªÀÌ µÇ¾î¾ß ÇÒ °æ¿ì°¡ ÀÖÀ¸¹Ç·Î ¸ðµç Çì´õ ÆÄÀÏÀº global.hº¸´Ù´Â ´õ ¾Õ¿¡ Æ÷ÇԵǾî¾ß ÇÑ´Ù. ApiEdit.cpp ¿¡µµ ºñ·Ï ÁÖ¼®ÀÌÁö¸¸ µ¶¸³¼ºÀ» ³ôÀ̱â À§ÇØ ´ÙÀ½ include¹®ÀÌ ÇÊ¿äÇÏ´Ù. ÇÊ¿äÇÑ Çì´õ ÆÄÀÏ ¸ñ·ÏÀ» Á¤¸®ÇØ ³õ¾Æ¾ß ¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ¸¦ ¾²Áö ¾Ê´Â ÇÁ·ÎÁ§Æ®¿¡µµ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù.
//#include "ApiEdit.h"
//#include "ApiEditText.h"
//#include "ApiEditHexa.h"
#include "stdafx.h"
Parse.cpp´Â ±âº» ºä¿¡ ´ëÇؼ¸¸ µ¿ÀÛÇϹǷΠ±âº» ºäÀÇ Å¸ÀÔ¸¸ ¾Ë°í ÀÖÀ¸¸é µÈ´Ù.
//#include "ApiEditText.h"
#include "stdafx.h"
ÇÁ·ÎÁ§Æ® ¼³Á¤ ´ëÈ»óÀÚ¿¡¼ »õ·Î Ãß°¡ÇÑ ¸ðµâ¿¡ ´ëÇؼµµ ¹Ì¸® ÄÄÆÄÀÏµÈ ¿É¼ÇÀ» Àû¿ëÇÑ´Ù. ¸Å¹ø ¸ðµâÀ» ¸¸µé ¶§¸¶´Ù ÇÁ·ÎÁ§Æ® ¼³Á¤À» Á¶Á¤Çϱ⠹ø°Å·Ó±â ¶§¹®¿¡ º»°ÝÀûÀÎ ½Ç½ÀÀ» ½ÃÀÛÇϱâ Àü¿¡ ¹Ì¸® ¸ðµâÀ» ´Ù ¸¸µé¾î ³õ´Â °ÍÀÌ´Ù.
¿©±â±îÁö ÀÛ¾÷ÇÏ¸é ½Ç½À Áغñ°¡ ³¡³´Ù. ÄÄÆÄÀÏÇØ º¸°í º°´Ù¸¥ ¿¡·¯¾øÀÌ ±ò²ûÇÏ°Ô Àß ÄÄÆÄÀϵǴÂÁö Å×½ºÆ®ÇØ º¸ÀÚ. ¸¸¾à ¿¡·¯°¡ ¹ß»ýÇß´Ù¸é ÇÊ¿äÇÑ Ã³¸®¸¦ ´©¶ôÇ߰ųª ¿ÀŸÀÏ È®·üÀÌ ³ôÀ¸¹Ç·Î ¾ÕÂÊÀ¸·Î µ¹¾Æ°¡ õõÈ÷ ´Ù½Ã ½Ç½ÀÇØ º¸ÀÚ. ¸î°¡Áö ¹ö±×¸¦ ¼öÁ¤Çϱâ´Â ÇßÁö¸¸ ¾ÆÁ÷ ±â´ÉÀÌ Ãß°¡µÈ °ÍÀº ¾øÀ¸¹Ç·Î 1.0¿¡ ºñÇؼ °³¼±µÈ Á¡ÀÌ °ÅÀÇ ¾ø´Â ¼ÀÀÌÁö¸¸ ´ÙÀ½ ÀåºÎÅÍ Æí¾ÈÇÑ ½Ç½ÀÀ» ÇÒ Áغñ´Â ´Ù µÈ °ÍÀÌ´Ù.
Dangeun12 ÇÁ·ÎÁ§Æ®ÀÇ »çº»À¸·ÎºÎÅÍ ½ÃÀÛÇÏ¿© ½Ç½À Áغñ¸¸ Çߴµ¥ ±âÁ¸ ÇÁ·ÎÁ§Æ®¸¦ ¶â¾î °íÃÄ »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé´Ù º¸´Ï ¹ø°Å·Ó±âµµ ÇÏ°í Á÷Á¢ ÇÏ·Á¸é ¾îµð¸¦ ¾î¶»°Ô °íÃÄ¾ß ÇÒÁö ¸·¸·Çϱ⸸ ÇÒ °ÍÀÌ´Ù. »Ó¸¸ ¾Æ´Ï¶ó ½Ã°£µµ ¸¹ÀÌ ¼Ò¸ðµÇ¹Ç·Î ¹Ù»Û »ç¶÷µéÀº ÀÌ ½Ç½ÀÀ» »ý·«ÇÏ°í Dangeun13 ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÁ¡À¸·Î È°¿ëÇϱ⠹ٶõ´Ù. ´ÙÀ½ Àå ºÎÅÍ ´ç±Ù 1.2 ÇÁ·ÎÁ§Æ®¸¦ º»°ÝÀûÀ¸·Î Á¦ÀÛÇÒ °ÍÀÌ´Ù.