¼³Á¤ ´ëÈ»óÀÚ¿¡¼ ÁöÁ¤ÇÑ ¿É¼ÇÀº ÀÌ¹Ì ¸¸µé¾îÁø Â÷Àϵå´Â ¹°·ÐÀÌ°í ¾ÕÀ¸·Î ¸¸µé¾îÁú â¿¡ ´ëÇؼµµ Àû¿ëµÈ´Ù. Áï ÀÌ ´ëÈ»óÀÚ¿¡¼ º¯°æÇÑ ¿É¼ÇÀº ¸ðµç Â÷Àϵ尡 °øÅëÀûÀ¸·Î »ç¿ëÇÏ´Â ¿É¼ÇÀÌ´Ù. ¿©±â¼ ÁÙ°£À» 150À¸·Î ¹Ù²Ù¸é ¸ðµç âÀÇ ÁÙ°£ÀÌ °°ÀÌ 150À¸·Î ¹Ù²î¸ç ±Û²ÃÀ» ¹Ù²Ù¸é ¸ðµÎ ÇѲ¨¹ø¿¡ ¹Ù²ï´Ù. ÅؽºÆ® ÆíÁýâÀº ¸ðµÎ ÅؽºÆ® ÆíÁýÀ̶ó´Â °°Àº ¸ñÀûÀ¸·Î ¸¸µé¾îÁö¹Ç·Î ¸ðµç ¿É¼ÇÀÌ °°ÀÌ Àû¿ëµÇ´Â °ÍÀÌ ¸¶¶¥ÇÏ´Ù.
ÇÏÁö¸¸ ¼³Á¤ ´ëÈ»óÀÚ´Â ¸Å¹ø ¿¾ú´Ù ´Ý±â°¡ ¹ø°Å·Î¿ì¹Ç·Î ÀϺΠÀÚÁÖ »ç¿ëÇÏ´Â ¸î °³ÀÇ ¿É¼ÇÀº °³º° â¿¡ ´ëÇؼ¸¸ ½Å¼ÓÇÏ°Ô º¯°æÇÒ ¼ö ÀÖ´Â ÀåÄ¡°¡ ÀÖ´Ù¸é Æí¸®ÇÒ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î ÀÚµ¿°³Çà ¿É¼ÇÀº ¹®¼ÀÇ ¼º°Ý¿¡ µû¶ó ´Ù¸£°Ô Àû¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î °¢ âÀÇ °³Çà ¿É¼ÇÀº µû·Î º¯°æÇÒ ¼ö ÀÖ¾î¾ß ÇÏ¸ç ±×°Íµµ ¼ö½Ã·Î ºü¸¥ ¼Óµµ·Î ¹Ù²Ü ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ·± ¸ñÀûÀ¸·Î ÇöÀç È°¼ºÈµÈ Â÷Àϵå Çϳª¿¡ ´ëÇؼ¸¸ ¿É¼ÇÀ» º¯°æÇÒ ¼ö ÀÖµµ·Ï Çغ¸ÀÚ.
º¸±â ¸Þ´º¿¡´Â ÀÌ¹Ì °ü·Ã ¸Þ´ºÇ׸ñÀÌ ¸¸µé¾îÁ® ÀÖÀ¸¸ç º¯°æ ´ë»óÀº ÀÚµ¿°³Çà, Á¦¾îÄÚµå º¸±â, ÁÙ°£, ±Û²Ã µîÀÌ¸ç ¾ÆÁ÷ ±â´ÉÀº ¾øÁö¸¸ ¹®¹ýµµ ¹®¼¿¡ µû¶ó ´Ù¸£°Ô Àû¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÒ °ÍÀÌ´Ù. ±Û²ÃÀº ¿øÄ¢ÀûÀ¸·Î ÆùÆ® ¼±Åà ´ëÈ»óÀÚ¿¡¼ ¼±ÅÃÇØ¾ß ÇÏÁö¸¸ ½Å¼ÓÇÏ°Ô ±Û²ÃÀ» ¹Ù²Ù±â¿¡´Â ºÎÀûÇÕÇϹǷΠ¹Ì¸® Á¤ÀÇµÈ ±Û²Ã ¼¼Æ® 10°³¸¦ ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.
LOGFONT arCustomFont[10]={
{0,0,0,0,0,0,0,0,0,0,0,0,0,""},
{10,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±¼¸²"},
{12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±¼¸²"},
{10,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±¼¸²Ã¼"},
{12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±¼¸²Ã¼"},
{12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±Ã¼"},
{15,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±Ã¼"},
{20,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±Ã¼"},
{12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"¹ÙÅÁ"},
{15,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"¹ÙÅÁ"}
};
º¸±â/È°¼ºÃ¢ÀÇ ±Û²Ã ¾Æ·¡¿¡ ÀÖ´Â ¸Þ´ºÇ׸ñÀ» ¼±ÅÃÇϸé È°¼ºÃ¢ÀÇ ±Û²ÃÀ» ÀÌ ±¸Á¶Ã¼ÀÇ ±Û²Ã·Î º¯°æÇÒ °ÍÀÌ´Ù. ÀÌ ±¸Á¶Ã¼ ¹è¿ÀÇ lfHeight´Â Æ÷ÀÎÆ® ´ÜÀ§Àε¥ ½ÇÁ¦·Î ÆùÆ®¸¦ »ý¼ºÇÒ ¶§ ÀÌ °ªÀº Çȼ¿·Î 󸮵ǹǷΠÆ÷ÀÎÆ® ´ÜÀ§¸¦ Çȼ¿°ªÀ¸·Î º¯°æÇØ¾ß ÇÑ´Ù. OnCreate¿¡¼ ÀÌ °ªÀ» Çػ󵵿¡ ¸Â°Ô º¯°æÇÑ´Ù.
int OnCreate(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
int i;
HDC hdc;
....
hdc=GetDC(NULL);
for (i=1;i<10;i++) {
arCustomFont[i].lfHeight=arCustomFont[i].lfHeight*GetDeviceCaps(hdc,LOGPIXELSY)/72;
}
ReleaseDC(NULL,hdc);
DragAcceptFiles(hWnd,TRUE);
return 0;
}
È°¼ºÃ¢ÀÇ ¿É¼Ç º¯°æÀº OnCommand¿¡¼ ó¸®ÇÑ´Ù. °¢ ¸Þ´ºÇ׸ñ¿¡ ´ëÀÀµÇ´Â ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¾ÆÁÖ ´Ü¼øÇÑ ¸í·ÉÀÇ ³ª¿µéÀÌ´Ù.
void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
CHOOSEFONT CFT;
LOGFONT lf;
....
case IDM_VIEW_WORDWRAP:
pSi->Ae.SetWrap(pSi->Ae.GetWrap()==0 ? Option.nWrap:0);
break;
case IDM_VIEW_CODE:
if (pSi->Ae.GetShowState(SHOWENTER)) {
pSi->Ae.SetShowState(SHOWENTER,FALSE);
pSi->Ae.SetShowState(SHOWTAB,FALSE);
pSi->Ae.SetShowState(SHOWSPACE,FALSE);
} else {
pSi->Ae.SetShowState(SHOWENTER,TRUE);
pSi->Ae.SetShowState(SHOWTAB,TRUE);
pSi->Ae.SetShowState(SHOWSPACE,TRUE);
}
break;
case IDM_FONT_1:
pSi->Ae.SetFont(&arCustomFont[0]);
break;
case IDM_FONT_2:
pSi->Ae.SetFont(&arCustomFont[1]);
break;
case IDM_FONT_3:
pSi->Ae.SetFont(&arCustomFont[2]);
break;
case IDM_FONT_4:
pSi->Ae.SetFont(&arCustomFont[3]);
break;
case IDM_FONT_5:
pSi->Ae.SetFont(&arCustomFont[4]);
break;
case IDM_FONT_6:
pSi->Ae.SetFont(&arCustomFont[5]);
break;
case IDM_FONT_7:
pSi->Ae.SetFont(&arCustomFont[6]);
break;
case IDM_FONT_8:
pSi->Ae.SetFont(&arCustomFont[7]);
break;
case IDM_FONT_9:
pSi->Ae.SetFont(&arCustomFont[8]);
break;
case IDM_FONT_10:
pSi->Ae.SetFont(&arCustomFont[9]);
break;
case IDM_FONT_11:
memset(&CFT, 0, sizeof(CHOOSEFONT));
CFT.lStructSize = sizeof(CHOOSEFONT);
CFT.hwndOwner=hWnd;
pSi->Ae.GetFont(&lf);
CFT.lpLogFont=&lf;
CFT.Flags=CF_EFFECTS | CF_SCREENFONTS;
if (ChooseFont(&CFT)) {
pSi->Ae.SetFont(&lf);
}
break;
case IDM_LINE_1:
pSi->Ae.SetLineRatio(100);
break;
case IDM_LINE_2:
pSi->Ae.SetLineRatio(120);
break;
case IDM_LINE_3:
pSi->Ae.SetLineRatio(150);
break;
case IDM_LINE_4:
pSi->Ae.SetLineRatio(200);
break;
case IDM_LINE_5:
pSi->Ae.SetLineRatio(300);
break;
....
ÀÚµ¿°³ÇàÀº 0°ú Option.nWrap »çÀ̸¦ Åä±ÛÇÑ´Ù. Á¦¾îÄÚµå´Â ¼¼ °¡Áö Á¾·ù°¡ ÀÖÁö¸¸ °¢ Äڵ带 °³º°ÀûÀ¸·Î Åä±ÛÇÏ·Á¸é ¸Þ´ºÇ׸ñÀ̳ª ´ÜÃàÅ°°¡ ¸¹¾ÆÁ® ¿ÀÈ÷·Á ¹ø°Å·Î¿ì¹Ç·Î ¼¼ °¡Áö Äڵ带 ÇѲ¨¹ø¿¡ Åä±ÛÇϵµ·Ï Çß´Ù. ±Û²ÃÀº ±Û²Ã ¼±Åà Ç׸ñ¸¸ Á¦¿ÜÇÏ°í arCustomFont ±¸Á¶Ã¼ ¹è¿¿¡ ¹Ì¸® Á¤ÀÇµÈ ±Û²Ã·Î SetFont ÇÔ¼ö¸¦ È£ÃâÇÏ¿´°í ÁÙ°£Àº ¹Ì¸® Á¤ÀÇµÈ °ªÀ¸·Î SetLineRatio¸¦ È£ÃâÇÏ¿´´Ù. ÀÌÁ¦ º¸±â ¸Þ´º¸¦ »ç¿ëÇϸé È°¼ºÃ¢¿¡ ´ëÇÑ ¿É¼ÇÀº °£´ÜÇÏ°Ô º¯°æÇÒ ¼ö ÀÖÀ¸¸ç ´ÜÃàÅ°°¡ Áö¿øµÇ´Â ÀÚµ¿°³Çà, Á¦¾îÄÚµå º¸±â´Â <Ctrl+W>, <Ctrl+E>·Î °£´ÜÇÏ°Ô Åä±ÛÇÒ ¼ö ÀÖ´Ù.
¸Þ´º·Î ¼³Á¤»óŸ¦ ½Å¼ÓÇÏ°Ô º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇßÀ¸¹Ç·Î ¸Þ´º¿¡ ÇöÀç ¼³Á¤»óŸ¦ º¸¿©ÁÖ¾î¾ß ÇÑ´Ù. OnInitMenu ÇÔ¼ö¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÑ´Ù.
void OnInitMenu(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
if (hActive) {
....
if (pSi->Ae.GetWrap() != 0) {
CheckMenuItem(hMenu, IDM_VIEW_WORDWRAP, MF_BYCOMMAND | MF_CHECKED);
} else {
CheckMenuItem(hMenu, IDM_VIEW_WORDWRAP, MF_BYCOMMAND | MF_UNCHECKED);
}
if (pSi->Ae.GetShowState(SHOWENTER)) {
CheckMenuItem(hMenu, IDM_VIEW_CODE, MF_BYCOMMAND | MF_CHECKED);
} else {
CheckMenuItem(hMenu, IDM_VIEW_CODE, MF_BYCOMMAND | MF_UNCHECKED);
}
for (s=IDM_LINE_1;s<=IDM_LINE_5;s++) {
CheckMenuItem(hMenu,s,MF_BYCOMMAND | MF_UNCHECKED);
}
switch (pSi->Ae.GetLineRatio())
{
case 100:CheckMenuItem(hMenu,IDM_LINE_1,MF_BYCOMMAND | MF_CHECKED);break;
case 120:CheckMenuItem(hMenu,IDM_LINE_2,MF_BYCOMMAND | MF_CHECKED);break;
case 150:CheckMenuItem(hMenu,IDM_LINE_3,MF_BYCOMMAND | MF_CHECKED);break;
case 200:CheckMenuItem(hMenu,IDM_LINE_4,MF_BYCOMMAND | MF_CHECKED);break;
case 300:CheckMenuItem(hMenu,IDM_LINE_5,MF_BYCOMMAND | MF_CHECKED);break;
}
}
}
ÇöÀç ¼±ÅÃµÈ ¿É¼Ç¿¡ ´ëÇØ ¸Þ´º ¿·¿¡ üũ Ç¥½Ã¸¦ ºÙ¿©ÁÖ¾ú´Ù. ´Ü, ±Û²ÃÀº Á¤È®ÇÏ°Ô ºñ±³ÇϱⰡ ¾î·Á¿ì¹Ç·Î üũ Ç¥½Ã¸¦ ºÙÀÌÁö ¾Ê¾Ò´Ù.