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