¹Ù. »ö»ó

»ö»óµµ º¸±â¿Í ¸¶Âù°¡Áö·Î ÇÁ·Î±×·¥ÀÇ ¿ÜÇüÀ» °áÁ¤ÇÏ´Â Áß¿äÇÑ ¿ä¼ÒÀÌ´Ù. È­¸éÀÇ °÷°÷¿¡ ´ëÇØ »ç¿ëÀÚ°¡ »ö»óÀ» Á¤ÀÇÇÒ ¼ö ÀÖµµ·Ï Çصξú´Ù. ÀÔ·Â¹Þ¾Æ¾ß ÇÒ »ö»ó°ªÀÌ ¸¹°í »ö»óÀ» ÀԷ¹޴ ¹æ¹ýÀÌ µ¿ÀÏÇϹǷΠº°µµÀÇ ÆäÀÌÁö¸¦ µû·Î ¸¸µé¾ú´Ù.

»ö»ó°ªµéÀº ¸ðµÎ ¿À³Ê µå·Î¿ì ÄÞº¸¹Ú½º·Î º¸¿©ÁÖ°í ÀԷ¹޴´Ù. »ö»ó°ªÀ» ÀԷ¹޴ ¹æ¹ý¿¡´Â ¿©·¯ °¡Áö ´Ù¾çÇÑ ¹æ¹ýÀÌ ÀÖ´Ù. ¹ÙÅÁ È­¸éó·³ ¹Ì¸® º¸±â¸¦ º¸¿©ÁÖ°í º¯°æÇÒ ´ë»óÀ» Ŭ¸¯ÇÏ¿© °í¸¥ ÈÄ »ö»óÀ» ¼±Åà ¶Ç´Â ÀÔ·ÂÇÏ´Â ¹æ¹ýµµ ÀÖ°í »ö»ó À̸§À» ³ª¿­ÇÏ°í ±× ¿·¿¡ ÆÈ·¹Æ®¸¦ ±×·Á µÎ¾î ´ë»óÀ» ¸ÕÀú ¼±ÅÃÇÑ ÈÄ »ö»óÀ» °í¸£µµ·Ï ÇÏ´Â ¹æ¹ýµµ »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù.

¿À³Ê µå·Î¿ì ÄÞº¸¹Ú½º´Â Á÷°üÀûÀÎ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇϱâ´Â ÇÏÁö¸¸ ±×´ÙÁö ¿¹»Û ¸ð¾çÀº ¾Æ´Ï¸ç ´Ù¾çÇÑ »ö»óÀ» °í¸£±â¿¡µµ Á» ºÒÆíÇÑ ¸éÀÌ ÀÖ´Ù. ±×·³¿¡µµ ºÒ±¸ÇÏ°í ¿À³Ê µå·Î¿ì ÄÞº¸¹Ú½º¸¦ ¼±ÅÃÇÑ ÀÌÀ¯´Â ÅÍÄ¡¼ö°¡ ³·±â ¶§¹®ÀÌ´Ù. ÀÌ ±¸Á¶¿¡¼­´Â ÄÞº¸¹Ú½º ¿¬´Ù, »ö»ó °í¸¥´Ù ¹æ½ÄÀÇ ÅõÅÍÄ¡(Two Touch)¸¸À¸·Î ½Å¼ÓÇÏ°Ô »ö»óÀ» ¹Ù²Ü ¼ö ÀÖ´Ù. º¯°æ ´ë»óÀ» ¸ÕÀú ¼±ÅÃÇÏ°í RGB°ªÀ» °¢°¢ ÀÔ·Â ¶Ç´Â ¼±ÅÃÇÏ°í º¯°æ ¹öÆ°À» Ŭ¸¯ÇÏ´Â ¹ø°Å·Î¿î ¹æ½ÄÀ» ½È¾îÇÏ´Â ¼º°ÝÀ̶ó ÀÌ·± ´Ü¼øÇÑ ¹æ¹ýÀ» ¼±ÅÃÇߴµ¥ °³¹ßÀÚÀÇ ÃëÇâ¿¡ µû¶ó ´Ù¾çÇÑ º¯È­¸¦ ÁÙ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

´ç±ÙÀº µÎ ¹øÀÇ Å¬¸¯À¸·Î »ö»óÀ» ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ »ö»ó°ªÀ» Á» Ư¼öÇÑ ¹æ½ÄÀ¸·Î ´Ù·ç°í ÀÖ´Ù. »ö»óÀ̶õ RGB ¼¼ ¿ä¼ÒÀÇ °­µµ Á¶ÇÕÀ¸·Î Ç¥ÇöµÇ´Âµ¥ °¢ ¿ä¼Ò¸¦ °³º°ÀûÀ¸·Î Á÷Á¢ ÀÔ·Â ¶Ç´Â ¼±ÅÃÇÏ¿© ¿øÇÏ´Â »ö»óÀ» ¸¸µé¾î ³»´Â ¹æ½ÄÀº ºñ·Ï ÀÚÀ¯·Î¿î ¼±ÅÃÀ» °¡´ÉÇÏ°Ô ÇÏÁö¸¸ ¹«Ã´ ¹ø°Å·Î¿î ÀÏÀÌ´Ù. ±×·¡¼­ ÀÌ·± Á÷Á¢ ¼±Åà ¹æ½Äº¸´Ù´Â ¹Ì¸® Á¤ÀÇµÈ »ö»óÇ¥¸¦ Á¦°øÇÏ°í ÀÌ Áß Çϳª¸¦ °í¸£´Â ¹æ½ÄÀ» À¯µµÇÏ¿´´Ù.

¹°·Ð »ö»ó¼±Åà ´ëÈ­»óÀÚ¸¦ È£ÃâÇÏ¿© Á÷Á¢ ¿øÇÏ´Â »ö»óÀ» °í¸£´Â ¹æ¹ýµµ °°ÀÌ Á¦°øÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ±¸Á¶Ã¼´Â ¹Ì¸® Á¤ÀÇµÈ »ö»óÇ¥ ±¸Á¶Ã¼¿Í ±âº»»ö»ó°ªÀ» °¡Áö´Â ¹è¿­ÀÌ´Ù. Dangeun.cppÀÇ ¼±µÎ¿¡ ´ÙÀ½ ±¸Á¶Ã¼¸¦ ¼±¾ð ¹× ÃʱâÈ­Çϵµ·Ï ÇÏÀÚ. ÀÌ ±¸Á¶Ã¼´Â Â÷ÈÄ¿¡ ¹®¹ý Á¤ÀÇ¿¡µµ »ç¿ëµÈ´Ù.

 

struct arColor

{

     TCHAR Name[16];

     COLORREF Color;

};

 

arColor arPreColor[]={

     {"±âº»»ö",RGB(0,0,0)},

     {"»ç¿ëÀÚ ¼±Åûö",RGB(0,0,0)},

     {"»ç¿ëÀÚ ¼±ÅÃ...",RGB(0,0,0)},

     {"°ËÁ¤",RGB(0,0,0)},

     {"Èò»ö",RGB(255,255,255)},

     {"»¡°­",RGB(255,0,0)},

     {"ÃÊ·Ï",RGB(0,255,0)},

     {"ÆĶû",RGB(0,0,255)},

     {"³ë¶û",RGB(255,255,0)},

     {"ºÐÈ«",RGB(255,0,255)},

     {"Çϴûö",RGB(0,255,255)},

     {"°íµ¿»ö",RGB(128,0,0)},

     {"ÁøÃÊ·Ï",RGB(0,128,0)},

     {"³²»ö",RGB(0,0,128)},

     {"º¸¶ó»ö",RGB(180,84,233)},

     {"ȸ»ö1(32)",RGB(32,32,32)},

     {"ȸ»ö2(64)",RGB(64,64,64)},

     {"ȸ»ö3(96)",RGB(96,96,96)},

     {"ȸ»ö4(128)",RGB(128,128,128)},

     {"ȸ»ö5(160)",RGB(160,160,160)},

     {"ȸ»ö6(192)",RGB(192,192,192)},

     {"ȸ»ö7(220)",RGB(220,220,220)},

     {"¿¬³ë¶û",RGB(255,249,157)},

     {"°³³ª¸®»ö",RGB(255,209,87)},

     {"ȲÅä»ö",RGB(207,182,80)},

     {"¿¬ÆĶû",RGB(141,207,244)},

     {"°¨»ö",RGB(177,202,147)},

     {"È帰ºÐÈ«",RGB(182,99,105)},

     {"¿¬µÎ»ö",RGB(169,212,109)}

};

 

COLORREF arSysColor[10]={0,0,0,0,RGB(192,192,192),RGB(160,160,160),RGB(255,255,0),

     RGB(128,128,128),RGB(255,255,0),RGB(0,0,0)};

 

arColor ±¸Á¶Ã¼´Â »ç¿ëÀÚ°¡ ¼±ÅÃÇÒ ¼ö ÀÖ´Â »ö»óÀÇ ¸ñ·ÏÀ» Á¤ÀÇÇϴµ¥ »ö»óÀÇ À̸§ÀÎ Name°ú ½ÇÁ¦ »ö»óÀÎ Color·Î ±¸¼ºµÈ´Ù. arPreColor´Â ¹Ì¸® Á¤ÀÇµÈ »ö»óÀÇ ¹è¿­, Áï »ö»óÇ¥ÀÌ´Ù. ÷ÀÚ 0Àº ±âº»»ö, 1´Â »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ »ö»óÀ» ³ªÅ¸³»¸ç ÷ÀÚ 2´Â »ö»óÀÌ ¾Æ´Ï¶ó »ö»ó¼±Åà ´ëÈ­»óÀÚ¸¦ ¿©´Â ¸í·ÉÀ¸·Î »ç¿ëµÈ´Ù. ÷ÀÚ 3 ÀÌÈÄ°¡ ¹Ì¸® Á¤ÀÇµÈ »ö»ó°ªÀ̸ç ÀÚÁÖ ¼±ÅõǴ ¸î °¡Áö »ö»ó¿¡ ´ëÇÑ RGB°ªÀ» °¡Áö°í ÀÖ´Ù.

arSysColor´Â SOption¿¡ Á¤ÀÇµÈ »ö»ó º¯¼öµéÀÇ ±âº»°ªÀ» Á¤ÀÇÇÑ´Ù. ¿É¼ÇÀ» ¹Ù²Û »óÅ¿¡¼­µµ ±âº»°ªÀ¸·Î µ¹¾Æ°¥ ¼ö ÀÖ¾î¾ß ÇϹǷΠÀÌ Á¤º¸´Â µû·Î °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. »ö»óÇ¥¿¡¼­ 0¹ø, Áï ±âº»»öÀ» ´©¸¦ ¶§ ÀÌ ¹è¿­À» ÂüÁ¶ÇÏ¿© ¿ø·¡ »öÀ¸·Î µ¹¾Æ°¡°Ô µÈ´Ù. ¾ÕÂÊÀÇ 4°¡Áö ¿É¼Ç¿¡ ´ëÇÑ ±âº»»öÀº ½Ã½ºÅÛ »ö»óÀ̱⠶§¹®¿¡ »ó¼ö·Î ¹Ì¸® Á¤ÇÒ ¼ö ¾øÀ¸¸ç ÀÏ´Ü 0À¸·Î ÃʱâÈ­Çسõ°í GetSysColor ÇÔ¼ö·Î ½ÇÁ¦ »ö»óÀ» Á¶»çÇØ¾ß ÇÑ´Ù. ÀÌ »ö»óÀ» ÃʱâÈ­ÇÏ´Â InitSysColor¶ó´Â ÇÔ¼ö¸¦ ¸¸µé°í Config ÇÔ¼ö¿¡¼­ È£ÃâÇÏ¿´´Ù.

cFore, cSelBack, NumColor µî SOptionÀÇ »ö»ó º¯¼öµéÀº Á÷Á¢ »ö»ó°ªÀ» °¡Áö´Â °ÍÀÌ ¾Æ´Ï¶ó ÃÖ»óÀ§ ¹ÙÀÌÆ®¿¡ arPreColor ¹è¿­ÀÇ Ã·ÀÚ¸¦ °¡Áø´Ù. ÀÌ Ã·ÀÚ°¡ 0ÀÌ¸é ±âº»»öÀÌ°í 1 ÀÌ»óÀÌ¸é µÚÀÇ 3¹ÙÀÌÆ®¿¡¼­ »ö»ó°ªÀ» ÃßÃâÇÑ´Ù. ±×·¡¼­ SOption::Init¿¡¼­´Â »ö»ó º¯¼öµéÀ» Á÷Á¢ ÃʱâÈ­ÇÏÁö ¾Ê°í ¸ðµÎ 0À¸·Î ÃʱâÈ­ÇÏ¿© ±âº»°ªÀ» °¡Áöµµ·Ï ÇÏ¿´´Ù. »ö»óÀÇ ±âº»°ª¿¡ ´ëÇÑ Á¤º¸´Â SOptionÀÌ °¡ÁöÁö ¾ÊÀ¸¸ç arSysColor ¹è¿­ÀÌ µû·Î °¡Áö°í ÀÖ´Ù.

»ö»ó ¿É¼ÇÀ» ¾î¶»°Ô °ü¸®ÇÏ°í ´Ù·ç´ÂÁö´Â »ö»ó ÆäÀÌÁöÀÇ ´ëÈ­»óÀÚ ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇϸ鼭 Á» ´õ ¿¬±¸Çغ¸µµ·Ï ÇÏÀÚ.

 

COLORREF& GetColorFromID(int ID)

{

     switch (ID) {

     case IDC_CFORE:

          return NewOption.cFore;

     case IDC_CBACK:

          return NewOption.cBack;

     case IDC_CSELFORE:

          return NewOption.cSelFore;

     case IDC_CSELBACK:

          return NewOption.cSelBack;

     case IDC_MARCOLOR1:

          return NewOption.MarColor1;

     case IDC_MARCOLOR2:

          return NewOption.MarColor2;

     case IDC_MARKCOLOR:

          return NewOption.MarkColor;

     case IDC_CODECOLOR:

          return NewOption.CodeColor;

     case IDC_CURCOLOR:

          return NewOption.CurColor;

     default:

     case IDC_NUMCOLOR:

          return NewOption.NumColor;

     }

}

 

void InitSysColor()

{

     arSysColor[0]=GetSysColor(COLOR_WINDOWTEXT);

     arSysColor[1]=GetSysColor(COLOR_WINDOW);

     arSysColor[2]=GetSysColor(COLOR_HIGHLIGHTTEXT);

     arSysColor[3]=GetSysColor(COLOR_HIGHLIGHT);

}

 

BOOL CALLBACK ColorDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     int i,idx;

     LPMEASUREITEMSTRUCT lpmis;

     LPDRAWITEMSTRUCT lpdis;

     HBRUSH bkBrush, Brush, OldBrush;

     int OldMode;

     CHOOSECOLOR COL;

     static COLORREF crTemp[16];

     COLORREF Color;

 

     switch(iMessage)

     {

     case WM_INITDIALOG:

          for (idx=IDC_CFORE;idx<=IDC_NUMCOLOR;idx++) {

              for (i=0;i<sizeof(arPreColor)/sizeof(arPreColor[0]);i++) {

                   SendDlgItemMessage(hDlg,idx,CB_ADDSTRING,0,0);

              }

          }

          return TRUE;

     case WM_MEASUREITEM:

          lpmis=(LPMEASUREITEMSTRUCT)lParam;

          lpmis->itemHeight=16;

          return TRUE;

          break;

     case WM_DRAWITEM:

          Color=GetColorFromID(wParam);

          lpdis=(LPDRAWITEMSTRUCT)lParam;

 

          if (lpdis->itemState & ODS_SELECTED) {

              bkBrush=CreateSolidBrush(RGB(0,0,255));

          }

          else {

              bkBrush=CreateSolidBrush(RGB(255,255,255));

          }

          FillRect(lpdis->hDC, &lpdis->rcItem, bkBrush);

 

          switch (lpdis->itemID) {

          case 0:

              Brush=CreateSolidBrush(arSysColor[wParam-IDC_CFORE]);

              break;

          case 1:

              Brush=CreateSolidBrush(Color & 0xffffff);

              break;

          default:

              Brush=CreateSolidBrush(arPreColor[lpdis->itemID].Color);

              break;

          }

          OldBrush=(HBRUSH)SelectObject(lpdis->hDC, Brush);

          if (lpdis->itemID != 2) {

              Rectangle(lpdis->hDC,lpdis->rcItem.left+2,lpdis->rcItem.top+1,

                   lpdis->rcItem.left+20, lpdis->rcItem.bottom-1);

          }

 

          OldMode=SetBkMode(lpdis->hDC,TRANSPARENT);

          TextOut(lpdis->hDC,lpdis->rcItem.left+25,lpdis->rcItem.top+2,

              arPreColor[lpdis->itemID].Name,lstrlen(arPreColor[lpdis->itemID].Name));

 

          SetBkMode(lpdis->hDC,OldMode);

          SelectObject(lpdis->hDC, OldBrush);

          DeleteObject(bkBrush);

          DeleteObject(Brush);

          return TRUE;

          break;

     case WM_COMMAND:

          switch (HIWORD(wParam)) {

          case CBN_SELCHANGE:

              idx=SendDlgItemMessage(hDlg,LOWORD(wParam),CB_GETCURSEL,0,0);

              if (idx==2) {

                   memset(&COL, 0, sizeof(CHOOSECOLOR));

                   COL.lStructSize = sizeof(CHOOSECOLOR);

                   COL.hwndOwner=hDlg;

                   COL.lpCustColors=crTemp;

                   if (ChooseColor(&COL)!=0) {

                        GetColorFromID(LOWORD(wParam))=COL.rgbResult | 0x01000000;

                        InvalidateRect(GetDlgItem(hDlg,LOWORD(wParam)),NULL,TRUE);

                   }

                   SendDlgItemMessage(hDlg,LOWORD(wParam),CB_SETCURSEL,1,0);

              } else {

                   GetColorFromID(LOWORD(wParam))=idx << 24 | arPreColor[idx].Color;

              }

              PropSheet_Changed(GetParent(hDlg),hDlg);

              break;

          }

          return TRUE;

     case WM_NOTIFY:

          switch (((LPNMHDR)lParam)->code) {

          case PSN_SETACTIVE:

              g_StartPage=2;

              for (idx=IDC_CFORE;idx<=IDC_NUMCOLOR;idx++) {

                   SendDlgItemMessage(hDlg,idx,CB_SETCURSEL,GetColorFromID(idx) >> 24,0);

              }

              return TRUE;

          case PSN_APPLY:

              ApplyNow();

              return TRUE;

          case PSN_KILLACTIVE:

              return TRUE;

          }

          break;

     }

     return FALSE;

}

 

GetColorFromIDÇÔ¼ö´Â »ö»óÀ» Ç¥ÇöÇÏ´Â ÄÞº¸¹Ú½ºÀÇ ID·ÎºÎÅÍ ¿É¼Ç ±¸Á¶Ã¼ÀÇ ´ëÀÀµÇ´Â ¸â¹ö¸¦ ±¸ÇÑ´Ù. °ªÀ» ±¸ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó º¯¼öÀÇ ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϹǷΠÀÌ ÇÔ¼öÀÇ ¸®ÅÏ°ªÀ» Àаųª º¯°æÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Àü°æ»öÀ» °ü¸®ÇÏ´Â IDC_CFORE ÄÞº¸¹Ú½ºÀÇ ID¸¦ Àμö·Î Àü´ÞÇϸé ÀÌ ÇÔ¼ö´Â ÀÌ ÄÁÆ®·Ñ°ú ´ëÀÀµÇ´Â NewOption.cFore º¯¼ö ÀÚü¸¦ ¸®ÅÏÇÑ´Ù. ÇÔ¼öÀÇ ¸®ÅÏ°ª¿¡ °ªÀ» ´ëÀÔÇÏ´Â Çü½ÄÀÎ func()=value;´Â C++¿¡¼­¸¸ °¡´ÉÇÑ ¹æ¹ýÀε¥ ÈçÈ÷ ¾²´Â ¹®¹ýÀº ¾Æ´ÏÁö¸¸ »ç¿ëÇغ¸¸é Æí¸®ÇÏ´Ù.

ColorDlgProc ÇÔ¼ö´Â ´Ù¸¥ ÆäÀÌÁö¿Í´Â ´Þ¸® ¿À³Ê µå·Î¿ì ÄÞº¸¹Ú½º¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ÀüüÀûÀÎ ¸ð¾çÀ̳ª ó¸®ÇÏ´Â ¸Þ½ÃÁöÀÇ Á¾·ù°¡ Á» ´Ù¸£´Ù. WM_INITDIALOG¿¡¼­´Â ¸ðµç ÄÞº¸¹Ú½º¿¡ »ö»óÇ¥¸¸Å­ÀÇ Ç׸ñÀ» Ãß°¡ÇÑ´Ù. Ç׸ñ ÀÚü´Â WM_DRAWITEM¿¡¼­ ±×·ÁÁö¹Ç·Î ¹®ÀÚ¿­À» ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ µÇ¸ç ºó Ç׸ñÀÌ¶óµµ ÀÏ´Ü Ãß°¡Çسõ±â¸¸ ÇÏ¸é µÈ´Ù.

¿À³Ê µå·Î¿ì ÄÞº¸¹Ú½º´Â WM_MEASUREITEM, WM_DRAWITEM ¸Þ½ÃÁö¿¡¼­ ±×·ÁÁö´Âµ¥ ÀϹÝÀûÀÎ ÄÚµåÀ̹ǷΠ±¸Ã¼ÀûÀÎ ºÐ¼®Àº ÇÏÁö ¾Ê±â·Î ÇÑ´Ù. ¿À³Ê µå·Î¿ì¿¡ ´ëÇÑ ÀÚ·á´Â ¸¹ÀÌ °ø°³µÇ¾î ÀÖÀ¸¹Ç·Î Âü°íÀڷḦ ã¾Æ º¸±â ¹Ù¶õ´Ù. »ö»ó°ª Ç׸ñµéÀÇ ³ôÀÌ´Â ¸ðµÎ 16Çȼ¿·Î °íÁ¤µÇ¾î ÀÖÀ¸¸ç Ç׸ñ À妽º¿Í ¼±Åà ¿©ºÎ¿¡ µû¶ó Á¶±Ý¾¿ ´Ù¸£°Ô ±×·ÁÁø´Ù. ¼±ÅÃµÈ Ç׸ñÀº ¹è°æÀ» ÆĶõ»öÀ¸·Î ±×¸®¸ç ³ª¸ÓÁö Ç׸ñÀº Èò»ö ¹è°æÀ» °¡Áø´Ù.

ÇöÀç Ç׸ñ À妽º°¡ 0À̸é Áï, ±âº»»öÀ̸é arSysColor ¹è¿­¿¡¼­ ±âº»»öÀ» ±¸ÇÏ°í »ç¿ëÀÚÁ¤ÀÇ»ö(1)À̸é NewOptionÀÇ ´ëÀÀµÇ´Â »ö»ó º¯¼ö¿¡¼­ ÃÖ»óÀ§ ¹ÙÀÌÆ®¸¦ 0À¸·Î ¸¸µç RGB°ªÀ» ±¸Çϸç 3ÀÌ»óÀÎ °æ¿ì´Â arPreColor »ö»óÇ¥¿¡¼­ »ö»óÀ» ±¸ÇÑ´Ù. 2¹ø À妽º´Â »ö»óÀÌ ¾Æ´Ï¶ó »ö»ó ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ¶ó´Â ¸í·ÉÀ̱⠶§¹®¿¡ ÄÞº¸¹Ú½º°¡ ÀÌ À妽º¸¦ °¡Áö´Â °æ¿ì´Â ¾ø´Ù.

WM_COMMAND¿¡¼­´Â 2¹ø Ç׸ñ, Áï »ç¿ëÀÚ ¼±Åà Ç׸ñÀ» ¼±ÅÃÇßÀ» ¶§ »ö»ó¼±Åà ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ°í ÀÌ ´ëÈ­»óÀÚ¿¡¼­ »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ »ö»óÀ» ´ëÀÀµÇ´Â »ö»ó º¯¼ö¿¡ ´ëÀÔÇÑ´Ù. ±âº»»öÀ̳ª »ö»óÇ¥ÀÇ ÇÑ »ö»óÀ» ¼±ÅÃÇßÀ¸¸é »ö»ó º¯¼öÀÇ »óÀ§ ¹ÙÀÌÆ®¿¡ À妽º¸¦ ³Ö°í ÇÏÀ§ 3¹ÙÀÌÆ®¿¡ ½ÇÁ¦ »ö»óÀ» ³Ö´Â´Ù. »ö»ó Áß Çϳª¶óµµ º¯°æµÇ¾úÀ¸¸é Àû¿ë ¹öÆ°À» È°¼ºÈ­½ÃÄÑ¾ß ÇÑ´Ù.

PSN_SETACTIVE¿¡¼­´Â ¸ðµç »ö»ó ÄÞº¸¹Ú½º¿¡ ÇöÀç ¼±ÅÃµÈ »ö»óÀ» ´ëÀÔÇÏ¿´´Ù. »ö»ó°ªÀÌ ¹Ù²î´Â Áï½Ã NewOptionÀÇ »ö»ó º¯¼ö¸¦ º¯°æÇÏ°í Àֱ⠶§¹®¿¡ PSN_KILLACTIVE¿¡¼­´Â ¾Æ¹« °Íµµ ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.