CToolBarCtrl: »ç¿ëÀÚ ÁöÁ¤ ¾Ë¸² ó¸®

Windows µµ±¸ ¸ðÀ½ °ø¿ë ÄÁÆ®·ÑÀº ±âº» Á¦°ø »ç¿ëÀÚ ÁöÁ¤ ±â´É, »ç¿ëÀÚ°¡ »ðÀÔÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛ Á¤ÀÇ »ç¿ëÀÚ ÁöÁ¤ ´ëÈ­ »óÀÚ¸¦ Æ÷ÇÔ ÇÏ ¿© »èÁ¦ ¶Ç´Â µµ±¸ ¸ðÀ½ ´ÜÃ߸¦ ´Ù½Ã Á¤·Ä ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ »ç¿ëÀÚ ÁöÁ¤ ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù ¹× ¸Þ½ÃÁö »ç¿ëÀÚ »ç¿ëÀÚ µµ±¸ ¸ðÀ½À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Â Á¤µµ Á¦¾î ¿©ºÎ¸¦ °áÁ¤ ÇÕ´Ï´Ù.

»ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù ÀÌ·¯ÇÑ »ç¿ëÀÚ ÁöÁ¤ ±â´ÉÀº »ç¿ëÀÚ¿¡ °Ô CCS_ADJUSTABLE ½ºÅ¸ÀÏ µµ±¸ ¸ðÀ½À» Á¦°ø ÇÔÀ¸·Î½á. »ç¿ëÀÚ ÁöÁ¤ ±â´É ´ÜÃ߸¦ »õ À§Ä¡·Î µå·¡±× Çϰųª µµ±¸ ¸ðÀ½¿¡¼­ ²ø¾î ´ÜÃ߸¦ Á¦°Å ÇÏ·Á¸é »ç¿ëÀÚ¸¦ Çã¿ë ÇÕ´Ï´Ù. ¶ÇÇÑ, »ç¿ëÀÚ »ç¿ëÀÚ°¡ Ãß°¡, »èÁ¦ ¹× µµ±¸ ¸ðÀ½ ´ÜÃ߸¦ ´Ù½Ã Á¤·ÄÇÒ ¼ö ÀÖ´Â µµ±¸ ¸ðÀ½ »ç¿ëÀÚ ÁöÁ¤ ´ëÈ­ »óÀÚ¸¦ Ç¥½Ã ÇÏ·Á¸é µµ±¸ ¸ðÀ½À» µÎ ¹ø Ŭ¸¯ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ »ç¿ëÀÚ ÁöÁ¤ ¸â¹ö ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© ´ëÈ­ »óÀÚ¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

µµ±¸ ¸ðÀ½ ÄÁÆ®·ÑÀº »ç¿ëÀÚ ÁöÁ¤ ÇÁ·Î¼¼½ºÀÇ °¢ ´Ü°è¿¡¼­ ºÎ¸ð â¿¡ ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. »ç¿ëÀÚ°¡ SHIFT ۸¦ º¸À¯ ÇÏ °í ´ÜÃ߸¦ ²ø¾î ½ÃÀÛ ÇÏ´Â °æ¿ì µµ±¸ ¸ðÀ½ ²ø±â ÀÛ¾÷À» ÀÚµ¿À¸·Î ó¸® ÇÕ´Ï´Ù. µµ±¸ ¸ðÀ½ ´ÜÃ߸¦ »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù ¿©ºÎ¸¦ °áÁ¤ ÇÏ·Á¸é ºÎ¸ð â¿¡ TBN_QUERYDELETE ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. ²ø±â ÀÛ¾÷ÀÌ ºÎ¸ð â FALSE¸¦ ¹Ýȯ ÇÏ´Â °æ¿ì Á¾·á µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, µµ±¸ ¸ðÀ½ ¸¶¿ì½º ÀԷ ĸó ¹× »ç¿ëÀÚ°¡ ¸¶¿ì½º ´ÜÃ߸¦ ³õÀ» ¶§±îÁö ±â´Ù¸³´Ï´Ù.

¸¶¿ì½º ´ÜÃ߸¦ ³õÀ», toolbar ÄÁÆ®·Ñ ¸¶¿ì½º Ä¿¼­ÀÇ À§Ä¡¸¦ °áÁ¤ ÇÕ´Ï´Ù. Ä¿¼­°¡ µµ±¸ ¸ðÀ½ ¹ÛÀ¸·Î ´ÜÃ߸¦ »èÁ¦ µË´Ï´Ù. Ä¿¼­°¡ ´Ù¸¥ µµ±¸ ¸ðÀ½ ´ÜÃß, µµ±¸ ¸ðÀ½ ´ÜÃß ÁÖ¾îÁøµÈ ¹öưÀÇ ¿ÞÂÊ¿¡ »ðÀÔ µÉ ¼ö ÀÖ½À´Ï´Ù È®ÀÎ ÇÏ·Á¸é ºÎ¸ð â¿¡ TBN_QUERYINSERT ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. ºÎ¸ð âÀÌ TRUE; ¹Ýȯ ÇÏ´Â °æ¿ì ´ÜÃß »ðÀÔ ±×·¸Áö ¾ÊÀ¸¸é, ±×°Í ÀºÀÔ´Ï´Ù. µµ±¸ ¸ðÀ½ ²ø±â ÀÛ¾÷ÀÇ ³¡À» ½ÅÈ£¸¦ TBN_TOOLBARCHANGE ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù.

»ç¿ëÀÚ°¡ SHIFT ۸¦ ´©¸¥ ä ¾Ê°í ²ø±â ÀÛ¾÷À» ½ÃÀÛ, µµ±¸ ¸ðÀ½ ÄÁÆ®·Ñ ¼ÒÀ¯ÀÚ Ã¢À¸·Î TBN_BEGINDRAG ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. °íÀ¯ÇÑ ´ÜÃß ²ø±â Äڵ带 ±¸Çö ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥À» ²ø±â ÀÛ¾÷À» ½ÃÀÛ ½ÅÈ£·ÎÀÌ ¸Þ½ÃÁö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. µµ±¸ ¸ðÀ½ ²ø±â ÀÛ¾÷ÀÇ ³¡À» ½ÅÈ£¸¦ TBN_ENDDRAG ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù.

µµ±¸ ¸ðÀ½ ÄÁÆ®·Ñ »ç¿ëÀÚ´Â µµ±¸ ¸ðÀ½ »ç¿ëÀÚ ÁöÁ¤ ´ëÈ­ »óÀÚ¸¦ »ç¿ë ÇÏ ¿© µµ±¸ ¸ðÀ½À» »ç¿ëÀÚ ÁöÁ¤ ÇÏ´Â °æ¿ì ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. µµ±¸ ¸ðÀ½ µµ±¸ ¸ðÀ½À» µÎ ¹ø Ŭ¸¯ÇÒ ÇÏÁö¸¸ Àü¿¡ ´ëÈ­ »óÀÚ°¡ »ý¼º ÈÄ TBN_BEGINADJUST ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. ±×·± ´ÙÀ½, µµ±¸ ¸ðÀ½ ÀÏ·ÃÀÇ µµ±¸ ¸ðÀ½ ´ÜÃ߸¦ »ðÀÔÇÒ ¼ö ÀÖ´ÂÁö ¿©ºÎ¸¦ È®ÀÎ ÇÏ·Á¸é TBN_QUERYINSERT ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³»±â ½ÃÀÛ ÇÕ´Ï´Ù. ºÎ¸ð âÀÌ TRUE¸¦ ¹Ýȯ ÇÏ´Â °æ¿ì µµ±¸ ¸ðÀ½ TBN_QUERYINSERT ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³»´Â °ÍÀ» ÁßÁö ÇÕ´Ï´Ù. µµ±¸ ¸ðÀ½ ´ëÈ­ »óÀÚ¸¦ ÆÄ±« ºÎ¸ð âÀÇ ¸ðµç ´ÜÃß¿¡ ´ë ÇÑ TRUE ¹Ýȯ ÇÏÁö ¾ÊÀ¸¸é,¡£

±×·± ´ÙÀ½, µµ±¸ ¸ðÀ½ ÄÁÆ®·Ñ µµ±¸ ¸ðÀ½¿¡¼­ µµ±¸ ¸ðÀ½¿¡ °¢ ´ÜÃß¿¡ ´ë ÇÑ TBN_QUERYDELETE ¾Ë¸² ¸Þ½ÃÁö¸¦ Àü¼Û ÇÏ ¿© ¾î¶² ´ÜÃß °æ¿ì »èÁ¦ µÉ ¼ö ÀÖ½À´Ï´Ù °áÁ¤ ÇÕ´Ï´Ù. ºÎ¸ð âÀÌ ¹Ýȯ TRUE ´Â ´ÜÃß »èÁ¦ µÉ ¼ö ÀÖ½À´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, ±×°ÍÀº FALSE¸¦ ¹ÝȯÇÕ´Ï´Ù. µµ±¸ ¸ðÀ½ ´ëÈ­ »óÀÚ¿¡ ¸ðµç µµ±¸ ¸ðÀ½ ´ÜÃ߸¦ Ãß°¡ ÇÏÁö¸¸ »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù ±× ȸ»ö¡£

Toolbar ÄÁÆ®·Ñ¿¡ µµ±¸ ¸ðÀ½ »ç¿ëÀÚ ÁöÁ¤ ´ëÈ­ »óÀÚ¿¡¼­ ´ÜÃß¿¡ ´ë ÇÑ Á¤º¸°¡ ÇÊ¿ä ÇÏ´Â ¶§¸¶´Ù ´ÜÃß Á¤º¸¸¦ ÇÊ¿ä·Î ±×°ÍÀÇ À妽º ¹× TBNOTIFY ±¸Á¶Ã¼ÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤ Çϸé TBN_GETBUTTONINFO ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. ºÎ¸ð â ±¸Á¶ °ü·Ã Á¤º¸·Î ä¿ö¾ß ÇÕ´Ï´Ù.

µµ±¸ ¸ðÀ½ »ç¿ëÀÚ ÁöÁ¤ ´ëÈ­ »óÀÚ¿¡ µµ¿ò¸» ´ÜÃß¿Í ¸®¼Â ´ÜÃß Æ÷ÇÔ µÇ¾î ÀÖ½À´Ï´Ù. µµ¿ò¸» ´ÜÃ߸¦ ¼±Åà ÇÏ¸é µµ±¸ ¸ðÀ½ ÄÁÆ®·Ñ TBN_CUSTHELP ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. ºÎ¸ð â µµ¿ò¸» Á¤º¸¸¦ Ç¥½Ã ÇÏ ¿© ÀÀ´ä ÇØ¾ß ÇÕ´Ï´Ù. ¸®¼Â ¹öưÀ» ¼±Åà ÇÏ¸é ´ëÈ­ »óÀÚ´Â TBN_RESET ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. µµ±¸ ¸ðÀ½ ´ëÈ­ »óÀÚ¸¦ ÃʱâÈ­ ÇÏ´ÂÀÌ ¸Þ½ÃÁö ½ÅÈ£¡£

ÀÌ·¯ÇÑ ¸Þ½ÃÁö´Â ¸ðµç WM_NOTIFY ¸Þ½ÃÁö ±×¸®°í ¼ÒÀ¯ÀÚ Ã¢¿¡¼­ ¼ÒÀ¯ÀÚ Ã¢ÀÇ ¸Þ½ÃÁö ¸Ê¿¡ ´ÙÀ½ Çü½ÄÀÇ ¸Þ½ÃÁö ¸Ê Ç׸ñÀ» Ãß°¡ ÇÏ ¿© ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.:

ON_NOTIFY ( wNotifyCode, idControl, memberFxn )

wNotifyCode

TBN_BEGINADJUST ¿Í °°Àº ¾Ë¸² ¸Þ½ÃÁö ½Äº°ÀÚ Äڵ塣

idControl

¾Ë¸²À» º¸³»´Â ÄÁÆ®·ÑÀÇ ½Äº°ÀÚ¡£

memberFxn

ÀÌ ¾Ë¸²À» ¹ÞÀ¸¸é È£Ãâ µÉ ¸â¹ö ÇÔ¼ö¡£

¸â¹ö ÇÔ¼ö ´ÙÀ½ ÇÁ·ÎÅä ŸÀÔÀ¸·Î ¼±¾ðÇÒ °Í À̶ó°í:

afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * °á°ú );

¾Ë¸² ¸Þ½ÃÁö 󸮱â´Â °ªÀ» ¹Ýȯ ÇÏ´Â °æ¿ì ±×°ÍÀº °á°ú ÀÇÇØ °¡¸®Å°´Â LRESULT ¿¡ ³Ö¾î ÇØ¾ß¡£

°¢ ¸Þ½ÃÁö¿¡ ´ë ÇÑ pNotifyStruct NMHDR ±¸Á¶ ¶Ç´Â TBNOTIFY ±¸Á¶Ã¼¸¦ °¡¸®Åµ´Ï´Ù. ÀÌ·¯ÇÑ ±¸Á¶´Â ¾Æ·¡¿¡¼­ ¼³¸í:

NMHDR ±¸Á¶´Â ´ÙÀ½°ú °°Àº ±¸¼º¿øÀÌ Æ÷ÇÔ µÇ¾î ÀÖ½À´Ï´Ù.:

typedef struct tagNMHDR {
HWND hwndFrom; nbsp; / / ÄÁÆ®·ÑÀÇ ÇÚµé ¸Þ½ÃÁö º¸³»±â
UINT idFrom; / / ¸Þ½ÃÁö¸¦ º¸³»´Â ÄÁÆ®·ÑÀÇ ½Äº°ÀÚ
UINT ÄÚµå;? / / ¾Ë¸² ÄÚµå; ¾Æ·¡ ÂüÁ¶
} NMHDR(&N)

hwndFrom

¾Ë¸²À» º¸³»´Â ÄÁÆ®·ÑÀÇ Ã¢ ÇÚµéÀÔ´Ï´Ù. CWnd::FromHandle ¸¦ »ç¿ë ÇÏ ¿©ÀÌ ÇÚµé CWnd Æ÷ÀÎÅ͸¦ º¯È¯ ÇÏ·Á¸é¡£

idFrom

¾Ë¸²À» º¸³»´Â ÄÁÆ®·ÑÀÇ ½Äº°ÀÚ¡£

ÄÚµå

¾Ë¸² ÄÚµåÀÔ´Ï´Ù. ÀÌ ¸â¹ö TTN_NEEDTEXT, TBN_BEGINADJUST µîÀÇ ÄÁÆ®·Ñ Çü½Ä¿¡ ƯÁ¤ °ªÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â ±×°ÍÀº ¾Æ·¡ ³ª¿­ µÈ ÀϹÝÀûÀÎ ¾Ë¸² °ª Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.:

´ÙÀ½°ú °°Àº ¸â¹ö¸¦ Æ÷ÇÔ ÇÏ´Â TBNOTIFY ±¸Á¶:

typedef struct {
NMHDR hdr; / / ¸ðµç WM_NOTIFY ¸Þ½ÃÁö¿¡ ÀϹÝÀûÀÎ Á¤º¸
int iItem; / / ¾Ë¸² ¿¬°ü µÈ ´ÜÃßÀÇ À妽º
TBBUTTON tbButton; / / ¿¬°ü µÈ ¾Ë¸² ´ÜÃß¿¡ ´ë ÇÑ Á¤º¸
int cchText; nbsp;? / / ´ÜÃß ÅØ½ºÆ®¿¡ ÀÖ´Â ¹®ÀÚÀÇ °³¼ö
LPSTR lpszText; / / ÁÖ¼Ò ´ÜÃß ÅØ½ºÆ®
}±îÁö TBNOTIFY * LPTBNOTIFY(&N)

hdr

¸ðµç WM_NOTIFY ¸Þ½ÃÁö¿¡ ÀϹÝÀûÀÎ Á¤º¸¡£

iItem

¿¬°ü µÈ ¾Ë¸² ´ÜÃßÀÇ À妽º¡£

tbButton

ÅëÁö¿Í °ü·Ã µÈ µµ±¸ ¸ðÀ½ ´ÜÃß¿¡ ´ë ÇÑ Á¤º¸°¡ µé¾î ÀÖ´Â TBBUTTON ±¸Á¶Ã¼¡£

cchText

´ÜÃß ÅØ½ºÆ®ÀÇ ¹®ÀÚ ¼ö¡£

lpszText

´ÜÃß ÅØ½ºÆ®¿¡ ´ë ÇÑ Æ÷ÀÎÅÍ¡£

µµ±¸ ¸ðÀ½ º¸³»´Â ¾Ë¸² ´ÙÀ½°ú °°½À´Ï´Ù.:

Index