´Ù. ¹öÆ°ÀÇ »óÅ°ü¸®

¸ÞÀθ޴ºÀÇ Ç׸ñµéÀº ÇÁ·Î±×·¥ÀÇ ÇöÀç »óȲÀ» Á¤È®ÇÏ°Ô º¸¿©ÁØ´Ù. ¿¹¸¦ µé¾î º¸±â/ÀÚµ¿°³Çà Ç׸ñÀº ÇöÀç È°¼ºÃ¢ÀÌ ÀÚµ¿°³ÇàÀ» ÇÏ°í ÀÖ´ÂÁö¸¦ º¸¿©ÁÖ¸ç ÆíÁý/Ãë¼Ò Ç׸ñÀº Ãë¼Ò°¡ °¡´ÉÇÑÁö¸¦ º¸¿©ÁØ´Ù. ÀÌó·³ ¸Þ´ºÀÇ »óŸ¦ °ü¸®ÇϵíÀÌ Åø¹ÙÀÇ »óŵµ °ü¸®ÇØ¾ß ÇÑ´Ù. Áï ¼±Åÿµ¿ªÀÌ ÀÖ¾î¾ß º¹»ç, À߶󳻱Ⱑ °¡´ÉÇÏ°í È°¼ºÃ¢ÀÌ ÀÖ¾î¾ß ÀúÀå, °Ë»öÀÌ °¡´ÉÇÏ´Ù. ÀÏ´Ü Åø¹ÙÀÇ »óŸ¦ °ü¸®ÇÏ´Â ´ÙÀ½ ÇÔ¼öºÎÅÍ ÀÛ¼ºÇÏÀÚ.

 

void OnIdle()

{

     HWND hActive;

     SInfo *pSi;

     int s,e;

 

     hActive=(HWND)SendMessage(g_hMDIClient,WM_MDIGETACTIVE,0,NULL);

     if (hActive) {

          pSi=(SInfo *)GetWindowLong(hActive,0);

          SendMessage(hToolBar,TB_SETSTATE,IDM_FILE_SAVE,MAKELONG(TBSTATE_ENABLED,0));

 

          pSi->Ae.GetSelect(s,e);

          if (s == e) {

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_CUT,MAKELONG(0,0));

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_COPY,MAKELONG(0,0));

          } else {

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_CUT,MAKELONG(TBSTATE_ENABLED,0));

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_COPY,MAKELONG(TBSTATE_ENABLED,0));

          }

 

          if (IsClipboardFormatAvailable(CF_TEXT)==FALSE) {

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_PASTE,MAKELONG(0,0));

          } else {

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_PASTE,MAKELONG(TBSTATE_ENABLED,0));

          }

 

          if (pSi->Ae.GetWrap() == 2) {

              SendMessage(hToolBar,TB_SETSTATE,IDM_VIEW_WORDWRAP,

                   MAKELONG(TBSTATE_ENABLED | TBSTATE_CHECKED,0));

          } else {

              SendMessage(hToolBar,TB_SETSTATE,IDM_VIEW_WORDWRAP,MAKELONG(TBSTATE_ENABLED,0));

          }

 

          if (pSi->Ae.CanUndo()) {

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_UNDO,MAKELONG(TBSTATE_ENABLED,0));

          } else {

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_UNDO,MAKELONG(0,0));

          }

          if (pSi->Ae.CanRedo()) {

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_REDO,MAKELONG(TBSTATE_ENABLED,0));

          } else {

              SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_REDO,MAKELONG(0,0));

          }

 

          SendMessage(hToolBar,TB_SETSTATE,IDM_SEARCH_FIND,MAKELONG(TBSTATE_ENABLED,0));

     } else {

          SendMessage(hToolBar,TB_SETSTATE,IDM_FILE_SAVE,MAKELONG(0,0));

          SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_CUT,MAKELONG(0,0));

          SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_COPY,MAKELONG(0,0));

          SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_PASTE,MAKELONG(0,0));

          SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_UNDO,MAKELONG(0,0));

          SendMessage(hToolBar,TB_SETSTATE,IDM_EDIT_REDO,MAKELONG(0,0));

          SendMessage(hToolBar,TB_SETSTATE,IDM_VIEW_WORDWRAP,MAKELONG(0,0));

          SendMessage(hToolBar,TB_SETSTATE,IDM_SEARCH_FIND,MAKELONG(0,0));

     }

}

 

È°¼ºÃ¢ÀÌ ¾øÀ¸¸é ÀúÀå, Ŭ¸³º¸µå ¾×¼Ç, Ãë¼Ò, °³Çà, °Ë»ö ¹öÆ°Àº ¸ðµÎ »ç¿ë ºÒ°¡ »óÅ°¡ µÈ´Ù. È°¼ºÃ¢ÀÌ ÀÖÀ» °æ¿ì »óȲ¿¡ µû¶ó ÀÌ ¹öÆ°µéÀÇ »ç¿ë °¡´É ¿©ºÎ°¡ °áÁ¤µÈ´Ù. ÀÌ ÇÔ¼öÀÇ if Á¶°ÇµéÀº OnInitMenu¿¡¼­ ¸Þ´ºÀÇ »óŸ¦ °ü¸®ÇÏ´Â Á¶°Ç°ú °ÅÀÇ µ¿ÀÏÇϹǷΠ½±°Ô ÀÌÇØ°¡ µÉ °ÍÀÌ´Ù. ´Ù¸¸ Á¶Á¤ÀÇ ´ë»óÀÌ ¸Þ´º°¡ ¾Æ´Ï¹Ç·Î EnableMenuItem ´ë½Å TB_SETSTATE ¸Þ½ÃÁö¸¦ »ç¿ëÇÑ´Ù´Â °Í¸¸ ´Ù¸¦ »ÓÀÌ´Ù.