¾Æ. »óŶõ

Åø¹Ù´Â À©µµ¿ìÀÇ »ó´Ü¿¡ ¹ÐÂøµÇ´Âµ¥ ºñÇØ »óŶõÀº º¸Åë À©µµ¿ìÀÇ ÇÏ´Ü¿¡ ¹ÐÂøµÇ¾î ³ªÅ¸³­´Ù. ÇÁ·Î±×·¥ÀÇ ÇöÀç »óųª Å°º¸µå »óÅ µî »ç¿ëÀÚ°¡ ÇÁ·Î±×·¥ »ç¿ëÁß¿¡ Âü°íÇÒ ¸¸ÇÑ Á¤º¸¸¦ º¸¿©ÁÖ¸ç ¶ÇÇÑ °£´ÜÇÑ µµ¿ò¸»À» Ãâ·ÂÇÏ´Â ¿ëµµ·Îµµ »ç¿ëµÈ´Ù. »óŶõµµ ´ëºÎºÐÀÇ ÇÁ·Î±×·¥¿¡¼­ ä¿ëÇÏ´Â Ãß¼¼ÀÌ´Ù. º¹ÀâÇØ º¸ÀÌÁö¸¸ ¾Ë°íº¸¸é º¸±âº¸´Ù´Â ÈξÀ ´õ °£´ÜÇÏ´Ù. ¸ÞÀÎ À©µµ¿ì¿¡¼­ »óŶõÀ» Á¶ÀÛÇϱ⸸ ÇÒ »Ó »óŶõ¿¡¼­ ¸ÞÀÎ À©µµ¿ì·Î º¸³»Áö´Â ÅëÁö ¸Þ½ÃÁö°¡ ¾ø´Â ÀϹæÇâÀÇ Åë½ÅÀ» Çϱ⠶§¹®ÀÌ´Ù. ¹°·Ð Ŭ¸¯À̳ª ´õºí Ŭ¸¯ µîÀÇ ¸Þ½ÃÁö¸¦ º¸³»±â´Â ÇÏÁö¸¸ ´Ù¸¥ ÄÁÆ®·Ñ¿¡ ºñÇØ ²À ó¸®ÇØ¾ß ÇÒ ÅëÁö ¸Þ½ÃÁö´Â ¾ø´Â ¼ÀÀÌ´Ù.

»óŶõµµ À©µµ¿ìÀ̹ǷΠCreateWindow(Ex) ÇÔ¼ö·Î ¸¸µé ¼ö ÀÖ´Ù. À©µµ¿ì Ŭ·¡½º·Î STATUSCLASSNAMEÀ» ÁÖ¸é »óŶõ ÄÁÆ®·ÑÀÌ ¸¸µé¾îÁö¸ç À̶§ À§Ä¡³ª Å©±â¸¦ ÁöÁ¤ÇÏ´Â °ÍÀº Àǹ̰¡ ¾ø´Ù. °£´ÜÇÑ ÄÁÆ®·ÑÀ̹ǷΠCreateWindow ÇÔ¼öº¸´Ù´Â ´ÙÀ½ ÇÔ¼ö·Î ¸¸µå´Â °ÍÀÌ º¸ÅëÀÌ´Ù.

 

HWND CreateStatusWindow( LONG style, LPCTSTR lpszText, HWND hwndParent, UINT wID );

 

º¸´Ù½ÃÇÇ Àμö°¡ °íÀÛ 4°³»ÓÀÌ´Ù. styleÀº »óŶõÀÇ ½ºÅ¸ÀÏÀ» ÁöÁ¤Çϴµ¥ ÀÌ °ªÀº ÁÖ·Î WS_CHILD | WS_VISIBLE·Î ÁÖ°Ô µÈ´Ù. ÀÌ¿Ü ´õ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ½ºÅ¸ÀÏÀº SBT_TOOLTIPS¶ó´Â ½ºÅ¸ÀÏÀÌ Àִµ¥ »óŶõ¿¡ ÅøÆÁÀ» »ç¿ëÇÒ ¶§ ÁöÁ¤ÇÑ´Ù. lpszText´Â »óŶõ¿¡ ³ªÅ¸³¾ Ãʱ⠹®ÀÚ¿­ÀÌ´Ù. hwndParent´Â ºÎ¸ð À©µµ¿ìÀÇ ÇÚµéÀ̸ç wID´Â »óŶõÀÇ IDÀÌ´Ù. ÀÌ ÇÔ¼ö¸¸ È£ÃâÇØ ÁÖ¸é ÆÄÆ® Çϳª¸¸ °¡Áö´Â ¹Ô¹ÔÇÑ »óŶõÀÌ ¸¸µé¾îÁø´Ù.

 

hState=CreateStatusWindow(WS_CHILD | WS_VISIBLE, "Status Line", hWnd,0);

 

¸®ÅϵǴ °ªÀº ¹°·Ð »óŶõÀÇ À©µµ¿ì ÇÚµéÀÌ´Ù. WM_CREATE¿¡¼­ À§¿Í °°ÀÌ »óŶõÀ» ¸¸µé¸é °á°ú´Â ´ÙÀ½°ú °°´Ù.

¾Æ·¡ÂÊ¿¡ Status LineÀ̶ó´Â ¹®ÀÚ¿­À» °¡Áö´Â »óŶõÀÌ ¸¸µé¾îÁø´Ù. ±×·±µ¥ »óŶõÀº º¸Åë ÀÌ·¸°Ô Åë°·Î »ç¿ëÇÏ´Â °æ¿ìº¸´Ù Ä­À» ³ª´©¾î ¿©·¯ °¡Áö Á¤º¸¸¦ º¸¿©ÁÖ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù. ´ÙÀ½Àº ¿öµå¿Í ºñÁÖ¾ó ½ºÆ©µð¿ÀÀÇ »óŶõÀÌ´Ù.

»óŶõÀ» Å丷 Å丷 Àß¶ó¼­ ¾Ë¶ãÇÏ°Ô »ç¿ëÇÏ°í ÀÖ´Ù. À̶§ »óŶõÀÇ °¢ Á¶°¢À» ÆÄÆ®(Part)¶ó°í Çϸç ÃÖ´ë 256°³±îÁö ¿øÇÏ´Â °³¼ö¸¸Å­ ¿øÇÏ´Â Æø´ë·Î ¸¸µé ¼ö ÀÖ´Ù. »óŶõÀÇ ¸Þ½ÃÁö´Â ´ÙÀ½°ú °°´Ù. SB_SETPARTS, SB_SETTEXT Á¤µµ°¡ ¾Ë¾ÆµÑ ¸¸ÇÑ ¸Þ½ÃÁöÀÌ´Ù.

 

¸Þ½ÃÁö

¼³¸í

SB_GETTEXT

wParamÀ¸·Î ÁöÁ¤ÇÑ ÆÄÆ®ÀÇ ÅؽºÆ®¸¦ ±¸ÇÑ´Ù. lParamÀ¸·Î ÅؽºÆ®¸¦ µ¹·Á¹Þ±â À§ÇÑ ¹öÆÛ ¹øÁö¸¦ ³Ñ°ÜÁØ´Ù.

SB_SETTEXT

wParamÀ¸·Î ÁöÁ¤ÇÑ ÆÄÆ®ÀÇ ÅؽºÆ®¸¦ ¼³Á¤ÇÑ´Ù. lParamÀ¸·Î ¹®ÀÚ¿­À» ³Ñ°ÜÁØ´Ù. wParamÀÌ 255ÀÏ °æ¿ì ÆÄÆ®°¡ Çϳª»ÓÀÎ °ÍÀ¸·Î °£ÁÖÇϸç ÆÄÆ®ÀÇ Å¸ÀÔÀ» OR ¿¬»êÀÚ·Î ¹­¾î¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

SB_GETTEXTLENGTH

wParamÀ¸·Î ÁöÁ¤ÇÑ ÆÄÆ®ÀÇ ¹®ÀÚ¿­ ±æÀ̸¦ ±¸ÇÑ´Ù. ¸®ÅÏ°ªÀÇ ÇÏÀ§ ¿öµå¸¦ ÀÐÀ¸¸é ±æÀ̸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. ¸®ÅÏ°ªÀÇ »óÀ§ ¿öµå´Â ÆÄÆ®ÀÇ Å¸ÀÔÀÌ ¼³Á¤µÈ´Ù.

SB_SETPARTS

ÆÄÆ®¸¦ ¼³Á¤ÇÑ´Ù. wParamÀ¸·Î ÆÄÆ®ÀÇ °³¼ö¸¦ ÁÖ¸ç lParam¿¡ °¢ ÆÄÆ®ÀÇ ¿À¸¥ÂÊ ³¡ ÁÂÇ¥¸¦ °¡Áø Á¤¼öÇü ¹è¿­À» ÁØ´Ù.

SB_GETPARTS

ÇöÀç ¼³Á¤µÈ ÆÄÆ®ÀÇ °³¼ö¿Í °¢ ÆÄÆ®ÀÇ ¿À¸¥ÂÊ ÁÂÇ¥¸¦ ±¸ÇÑ´Ù. wParamÀ¸·Î ¾ò°íÀÚ ÇÏ´Â ÆÄÆ®ÀÇ °³¼ö¸¦ ÁöÁ¤ÇÑ´Ù. lParamÀº ÁÂÇ¥°ªÀ» µ¹·Á¹Þ±â À§ÇÑ Á¤¼öÇü ¹è¿­ÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇ쵂 ¹è¿­ÀÇ Å©±â´Â wParam°ú °°¾Æ¾ß ÇÑ´Ù.

SB_GETBORDERS

»óŶõÀÇ °æ°è¼± µÎ²²¸¦ ¾ò´Â´Ù. lParamÀ¸·Î Å©±â 3ÀÇ Á¤¼öÇü ¹è¿­À» ³Ñ°ÜÁÖ¸é ù ¹ø° ¿ä¼Ò¿¡ ¼öÆò °æ°è¼±ÀÇ µÎ²², µÎ ¹ø° ¿ä¼Ò¿¡ ¼öÁ÷ °æ°è¼±ÀÇ µÎ²², ¼¼ ¹ø° ¿ä¼Ò¿¡ °¢ ÆÄÆ® »çÀÌÀÇ °æ°è¼± µÎ²²¸¦ ä¿öÁØ´Ù.

SB_SETMINHEIGHT

»óŶõÀÇ ±×¸®±â ¿µ¿ªÀÇ ÃÖ¼Ò ³ôÀ̸¦ wParamÀ¸·Î ¼³Á¤ÇÑ´Ù. ³ôÀÌ´Â Çȼ¿´ÜÀ§·Î ¼³Á¤Çϸç ÀÌ ³ôÀÌ¿¡´Â °æ°è¼±ÀÌ Á¦¿ÜµÈ´Ù.

SB_SIMPLE

wParamÀÌ TRUEÀ̸é ÆÄÆ® ±¸ºÐÀ» ¹«½ÃÇÏ°í ÇϳªÀÇ ÆÄÆ®¸¸ °¡Áø »óŶõÀ» ¸¸µé°í FALSEÀ̸é SB_SETPARTS·Î ±¸ºÐÇÑ ÆÄÆ®¸¦ À¯ÁöÇÑ´Ù.

SB_GETRECT

wParamÀ¸·Î ÁöÁ¤ÇÑ ÆÄÆ®ÀÇ ¿µ¿ªÀ» ±¸ÇÑ´Ù. lParamÀ¸·Î RECT ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ÁÖ¸é ÀÌ ±¸Á¶Ã¼¿¡ ¿µ¿ª ÁÂÇ¥¸¦ ä¿öÁØ´Ù.

SB_ISSIMPLE

ÆÄÆ®°¡ Çϳª»ÓÀÎ »óŶõÀÎÁö Á¶»çÇÑ´Ù.

SB_GETICON

wParamÀ¸·Î Àü´ÞµÈ ÆÄÆ®ÀÇ ¾ÆÀÌÄÜÀÇ ÇÚµéÀ» Á¶»çÇÑ´Ù. ¾ÆÀÌÄÜÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é NULLÀÌ ¸®ÅϵȴÙ.

SB_SETICON

ÆÄÆ®¿¡ ¾ÆÀÌÄÜÀ» ÁöÁ¤ÇÑ´Ù. wParamÀ¸·Î ÆÄÆ® ¹øÈ£, lParamÀ¸·Î ¾ÆÀÌÄÜÀÇ ÇÚµéÀ» ÁÖµÇ lParamÀÌ NULLÀÌ¸é ¾ÆÀÌÄÜÀÌ »èÁ¦µÈ´Ù. ÀÌ·¸°Ô Ãß°¡µÈ ¾ÆÀÌÄÜÀº Á÷Á¢ »èÁ¦ÇØ ÁÖ¾î¾ß ÇÑ´Ù.

SB_GETTIPTEXT

ÆÄÆ®ÀÇ ÅøÆÁÀ» ±¸ÇÑ´Ù. wParamÀÇ ÇÏÀ§ ¿öµå¿¡ ÆÄÆ® ¹øÈ£ »óÀ§ ¿öµå¿¡ ¹öÆÛÀÇ Å©±â¸¦ ÁÖ°í lParamÀ¸·Î ¹®ÀÚ¿­À» ´ëÀÔ¹ÞÀ» ¹öÆÛÀÇ Æ÷ÀÎÅ͸¦ ÁØ´Ù.

SB_SETTIPTEXT

wParamÀ¸·Î Àü´ÞµÈ ÆÄÆ®¿¡ ÅøÆÁ ÅؽºÆ®¸¦ ÁöÁ¤ÇÑ´Ù. ÅøÆÁÀ» ¾²±â À§Çؼ­´Â SBT_TOOLTIPS ½ºÅ¸ÀÏÀ» °¡Á®¾ß ÇÑ´Ù. ÅøÆÁÀº ÆÄÆ®¿¡ ¾ÆÀÌÄܸ¸ Àְųª ¹®ÀÚ¿­ÀÇ ÀϺΰ¡ Àß·Á¼­ º¸ÀÏ ¶§¸¸ ³ªÅ¸³­´Ù.

SB_GETUNICODEFORMAT

ÄÁÆ®·ÑÀÇ ¹®ÀÚ¿­ÀÌ À¯´ÏÄÚµå Æ÷¸ËÀ̸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇϸç ANSI Æ÷¸ËÀ̸é 0À» ¸®ÅÏÇÑ´Ù.

SB_SETBKCOLOR

»óŶõÀÇ ¹è°æ»öÀ» ÁöÁ¤ÇÑ´Ù. lParamÀ¸·Î ¹è°æ»ö»óÀ» Àü´ÞÇ쵂 CLR_DEFAULTÀÌ¸é µðÆúÆ® ¹è°æ»öÀ» »ç¿ëÇÑ´Ù.

 

±×·³ ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ. »óŶõÀ» 4µîºÐÇؼ­ °¢ ÆÄÆ®¿¡ À©µµ¿ìÀÇ ÇöÀç À§Ä¡¿Í Å©±â¸¦ º¸¿©ÁÖµµ·Ï ¸¸µé¾î º¸¾Ò´Ù.

 

Status1

#include <Commctrl.h>

HWND hState;

 

void SetStatusText(HWND hWnd)

{

   RECT wrt;

   char str[128];

 

   GetWindowRect(hWnd, &wrt);

   wsprintf(str, "Left : %d", wrt.left);

   SendMessage(hState, SB_SETTEXT, 0, (LPARAM)str);

   wsprintf(str, "Top : %d", wrt.top);

   SendMessage(hState, SB_SETTEXT, 1, (LPARAM)str);

   wsprintf(str, "Right : %d", wrt.right);

   SendMessage(hState, SB_SETTEXT, 2, (LPARAM)str);

   wsprintf(str, "Bottom : %d", wrt.bottom);

   SendMessage(hState, SB_SETTEXT, 3, (LPARAM)str);

}

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

   int SBPart[4],i;

 

   switch(iMessage) {

   case WM_CREATE:

      InitCommonControls();

      hState=CreateStatusWindow(WS_CHILD | WS_VISIBLE, "", hWnd,0);

      return 0;

   case WM_SIZE:

      SendMessage(hState, WM_SIZE, wParam, lParam);

 

      for (i=0;i<4;i++) {

          SBPart[i]=LOWORD(lParam)/4*(i+1);

      }

      SendMessage(hState, SB_SETPARTS, 4, (LPARAM)SBPart);

 

      SetStatusText(hWnd);

      return 0;

   case WM_MOVE:

      SetStatusText(hWnd);

      return 0;

   case WM_DESTROY:

      PostQuitMessage(0);

      return 0;

   }

   return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

½ÇÇà½ÃÄÑ º¸ÀÚ. ¸ÞÀÎ À©µµ¿ìÀÇ ÇÏ´Ü¿¡ »óŶõÀÌ ³ªÅ¸³ª¸ç À©µµ¿ì Å©±â³ª À§Ä¡°¡ º¯°æµÇ¸é »óŶõÀÇ Á¤º¸µµ °°ÀÌ º¯°æµÈ´Ù.

WM_CREATE¿¡¼­ »óŶõÀ» ÀÏ´Ü ¸¸µç´Ù. À©µµ¿ì Æø¿¡ µû¶ó °¢ ÆÄÆ®ÀÇ Æøµµ ´Þ¶óÁ®¾ß ÇϹǷΠÆÄÆ®¸¦ ³ª´©´Â ÀÏÀº WM_SIZE¿¡¼­ ÇÏ°í ÀÖ´Ù. ÀÏ´Ü ¸ÞÀÎ À©µµ¿ìÀÇ Å©±â°¡ º¯°æµÇ¸é »óŶõµµ º¯°æµÈ Å©±â¿¡ ¸ÂÃß¾îÁ®¾ß ÇϹǷΠWM_SIZE ¸Þ½ÃÁö¸¦ ±×´ë·Î »óŶõÀ¸·Î º¸³»ÁØ´Ù. »óŶõÀº ±âº»ÀûÀ¸·Î ºÎ¸ð À©µµ¿ìÀÇ ÇÏ´Ü¿¡ ³ªÅ¸³ª¸ç WM_SIZE ¸Þ½ÃÁö¸¦ ¹ÞÀ» ¶§¸¶´Ù ºÎ¸ð À©µµ¿ìÀÇ ¾Æ·¡ÂÊ¿¡ ÀÛ¾÷ ¿µ¿ª ÆøÀÇ Å©±â·Î ÀÚµ¿ ¹èÄ¡µÈ´Ù. À̶§ »óŶõÀ¸·Î º¸³»´Â WM_SIZE ¸Þ½ÃÁö´Â Å©±â¿Í À§Ä¡¸¦ Àç°è»êÇ϶ó´Â ´Ü¼øÇÑ ½ÅÈ£À̹ǷΠwParam, lParamÀº ¸ðµÎ 0À¸·Î ÁØ´Ù.

»óŶõÀÇ À§Ä¡¿Í Å©±â¸¦ Àç°è»êÇϵµ·Ï ÇÑ ÈÄ ºÎ¸ð À©µµ¿ìÀÇ ÆøÀ» 4µîºÐÇÏ¿© 4°³ÀÇ ÆÄÆ®¸¦ ¸¸µç´Ù. °¢ ÆÄÆ®ÀÇ ¿À¸¥ÂÊ ³¡À» ÁöÁ¤Çϱâ À§ÇØ SB_SETPARTS ¸Þ½ÃÁö¸¦ º¸³½´Ù. wParam¿¡´Â ÆÄÆ®ÀÇ °³¼öÀÎ 4¸¦ ÁÖ°í lParam¿¡´Â °¢ ÆÄÆ®ÀÇ ¿À¸¥ÂÊ ÁÂÇ¥¸¦ ´ãÀº Á¤¼öÇü ¹è¿­À» Àü´ÞÇØ ÁÖ¸é µÈ´Ù. »óŶõÀº lParamÀ¸·Î Àü´ÞµÈ ¹è¿­·ÎºÎÅÍ ÁÂÇ¥¸¦ ²¨³» °¢ ÆÄÆ®ÀÇ Å©±â¸¦ Á¶Á¤ÇÑ´Ù.

Ư¼öÇÑ °æ¿ì·Î ¿À¸¥ÂÊ ³¡ ÆÄÆ®ÀÇ ÆøÀÌ -1·Î ÁöÁ¤µÇ¸é ³ª¸ÓÁö ³²Àº ¿µ¿ª Àüü¸¦ ä¿î´Ù. ¸¸¾à Á¦ÀÏ ¿ÞÂÊ ÆÄÆ®°¡ ³ª¸ÓÁö ÆøÀ» ´Ù »ç¿ëÇϵµ·Ï ÇÏ°í ½Í´Ù¸é Á÷Á¢ ºÎ¸ð À©µµ¿ìÀÇ ÆøÀ¸·ÎºÎÅÍ ÆÄÆ®ÀÇ ÆøÀ» °è»êÇØ ÁÖ¾î¾ß ÇÑ´Ù.

»óŶõ¿¡ ÅؽºÆ®¸¦ Ãâ·ÂÇÒ ¶§´Â SB_SETTEXT ¸Þ½ÃÁö¸¦ º¸³½´Ù. ¿¹Á¦¿¡¼­´Â ÀÌ ÀÏÀ» SetStateText ÇÔ¼ö°¡ ¼öÇàÇÏ°í ÀÖ´Ù. wParamÀ¸·Î ÅؽºÆ®¸¦ ¼³Á¤ÇÒ ÆÄÆ® ¹øÈ£¸¦ ÁÖ°í lParamÀ¸·Î ¹®ÀÚ¿­À» ÁÖµÇ wParam¿¡ ´ÙÀ½°ú °°Àº ÆÄÆ®ÀÇ Å¸ÀÔÀ» OR ¿¬»êÀÚ·Î ÆÄÆ® ¹øÈ£¿Í ÇÔ²² Á¤ÇØÁÙ ¼ö ÀÖ´Ù.

 

ŸÀÔ

¼³¸í

SBT_NOBORDERS

°æ°è¼±À» ±×¸®Áö ¾Ê´Â´Ù.

SBT_OWNERDRAW

ºÎ¸ð À©µµ¿ì°¡ ÅؽºÆ®¸¦ Á÷Á¢ ±×¸®µµ·Ï ÇÑ´Ù.

SBT_POPOUT

¾ç°¢ÀÇ °æ°è¼± ¾È¿¡ ÅؽºÆ®¸¦ Ãâ·ÂÇÑ´Ù.

SBT_RTLREADING

¿À¸¥ÂÊ¿¡¼­ ¿ÞÂÊÀ¸·Î ¹®ÀÚ¿­À» Ãâ·ÂÇÑ´Ù.

0

¾Æ¹« ŸÀÔÀ» ÁÖÁö ¾ÊÀ¸¸é À½°¢ÀÇ °æ°è¼± ¾È¿¡ ÅؽºÆ®¸¦ Ãâ·ÂÇÑ´Ù.

 

¿¹¸¦ µé¾î ¾ç°¢ÀÇ °æ°è¼±À» ±×¸®·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.

 

SendMessage(hState, SB_SETTEXT, 1 | SBT_POPOUT, (LPARAM)str);

 

1¹ø ÆÄÆ®¸¸ ¾ç°¢ °æ°è¼±À¸·Î ÁöÁ¤ÇØ º¸¾Ò´Ù. À½°¢ °æ°è¼±Àº ¾¦ µé¾î°£ ¸ð¾çÀÌÁö¸¸ ¾ç°¢ °æ°è¼±Àº Æ¢¾î ³ª¿Í ÀÖ´Â ¸ð¾çÀÌ µÈ´Ù.