SetWindowPos

¿øÇü

BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags);

Àμö

¢º hWnd : À̵¿ ´ë»ó À©µµ¿ìÀÇ ÇÚµé

¢º hWndInsertAfter : À©µµ¿ìÀÇ Z¼ø¼­¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ Àμö°¡ ÁöÁ¤ÇÏ´Â À©µµ¿ì ¾Õ¿¡ hWnd°¡ ¹èÄ¡µÇ´Âµ¥ ´Ü hWnd°¡ ¾×Ƽºê »óÅÂÀÏ °æ¿ì ÀÌ Àμö°¡ ÁöÁ¤ÇÏ´Â À©µµ¿ì ÇÚµéÀº ¹«½ÃµÈ´Ù. ¶Ç´Â ´ÙÀ½°ú °°ÀÌ Z¼ø¼­¸¦ ÁöÁ¤ÇÏ´Â °ªµéÀÌ ¿Ã ¼ö ÀÖ´Ù.

°ª ¼³¸í
HWND_BOTTOM

hWndÀ©µµ¿ì¸¦ Z¼ø¼­ÀÇ Á¦ÀÏ ¹Ù´ÚÀ¸·Î º¸³½´Ù. ¸¸¾à ÀÌ À©µµ¿ì°¡ Ç×»ó À§(Top Most)¼Ó¼ºÀ» °¡Áö°í ÀÖ¾ú´Ù¸é ÀÌ ¼Ó¼ºÀº ÇØÁ¦µÇ°í ¸ðµç À©µµ¿ìÀÇ Á¦ÀÏ ¾Æ·¡ÂÊ¿¡ ¹èÄ¡µÈ´Ù.

HWND_NOTOPMOST

Ç×»ó À§ ¼Ó¼ºÀ» °¡ÁöÁö ¾ÊÀº À©µµ¿ì Áß Á¦ÀÏ À§ÂÊ¿¡ ¹èÄ¡µÈ´Ù. Áï, Ç×»ó À§ ¼Ó¼ºÀ» °¡Áø À©µµ¿ì ¹Ù·Î ¾Æ·¡¿¡ ¹èÄ¡µÈ´Ù. ÀÌ ¿É¼ÇÀº Ç×»ó À§ ¼Ó¼ºÀ» ÇØÁ¦ÇÒ ¶§ »ç¿ëµÈ´Ù. ¸¸¾à Ç×»ó À§ ¿É¼ÇÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù¸é ÀÌ ¿É¼ÇÀº ¾Æ¹«·± È¿°úµµ °¡ÁöÁö ¾Ê´Â´Ù.

HWND_TOPMOST

Ç×»ó À§ ¼Ó¼ºÀ» ¼³Á¤ÇÑ´Ù. Ç×»ó À§ ¼Ó¼ºÀ» °¡ÁöÁö ¾Ê´Â À©µµ¿ìµéº¸´Ù À§ÂÊ¿¡ ¹èÄ¡µÈ´Ù.

HWND_TOP

Z¼ø¼­»óÀÇ Á¦ÀÏ À§ÂÊ¿¡ ¹èÄ¡ÇÑ´Ù.

¢ºX,Y : À©µµ¿ìÀÇ »õ·Î¿î Á»ó´Ü ÁÂÇ¥¸¦ ÁöÁ¤ÇÑ´Ù. Çȼ¿ ´ÜÀ§ÀÌ´Ù.

¢ºcx, cy : À©µµ¿ìÀÇ »õ·Î¿î Æø°ú ³ôÀ̸¦ ÁöÁ¤ÇÑ´Ù. Çȼ¿ ´ÜÀ§ÀÌ´Ù.

¢ºuFlags : À§Ä¡¿Í Å©±â º¯°æ¿¡ ´ëÇÑ ¿©·¯ °¡Áö ¿É¼ÇµéÀ̸ç Ç÷¡±×µéÀ» Á¶ÇÕÇÏ¿© ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

Ç÷¡±× ¼³¸í
SWP_ASYNCWINDOWPOS

ÀÌ ÇÔ¼ö¸¦ ºÎ¸¥ ½º·¹µå¿Í À©µµ¿ì¸¦ ¼ÒÀ¯ÇÑ ½º·¹µå°¡ ´Ù¸¥ ÀԷ ť¸¦ »ç¿ëÇÒ °æ¿ì ½Ã½ºÅÛÀº À©µµ¿ì¸¦ ¼ÒÀ¯ÇÑ ½º·¹µå¿¡°Ô ¿ä±¸¸¦ Æ÷½ºÆÃÇϱ⸸ ÇÑ´Ù. À̴ ȣÃâ ½º·¹µå°¡ ´Ù¸¥ ½º·¹µå°¡ ¿ä±¸¸¦ ó¸®ÇÏ´Â µ¿¾È ºí·°µÇ´Â °ÍÀ» ¹æÁöÇÑ´Ù.

SWP_DEFERERASE

WM_SYNCPAINT ¸Þ½ÃÁö ¹ß»ýÀ» ±ÝÁöÇÑ´Ù.

SWP_DRAWFRAME

À©µµ¿ì ÁÖº¯¿¡ ÇÁ·¹ÀÓÀ» ±×¸°´Ù.

SWP_FRAMECHANGED

SetWindowLongÀ¸·Î °æ°è¼± ½ºÅ¸ÀÏÀ» º¯°æÇßÀ» °æ¿ì »õ ½ºÅ¸ÀÏÀ» Àû¿ëÇÑ´Ù. ÀÌ Ç÷¡±×°¡ ÁöÁ¤µÇ¸é Å©±â°¡ º¯°æµÇÁö ¾Ê¾Æµµ WM_NCCALCSIZE ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù.

SWP_HIDEWINDOW

À©µµ¿ì¸¦ ¼û±ä´Ù. ÀÌ °æ¿ì À̵¿°ú Å©±â º¯°æÀº ¹«½ÃµÈ´Ù.

SWP_NOACTIVATE

Å©±â º¯°æ ÈÄ À©µµ¿ì¸¦ È°¼ºÈ­½ÃÅ°Áö ¾Ê´Â´Ù.

SWP_NOCOPYBITS

ÀÌ Ç÷¡±×°¡ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é ÀÛ¾÷¿µ¿ªÀÇ ³»¿ëÀÌ ÀúÀåµÇ¾ú´Ù°¡ Å©±â³ª À§Ä¡º¯°æ ÈÄ ´Ù½Ã ÀÛ¾÷¿µ¿ªÀ¸·Î º¹»çµÈ´Ù. ÀÌ Ç÷¡±×°¡ ÁöÁ¤µÇ¸é ÀÌ·± ÀúÀåÀ» ÇÏÁö ¾Ê´Â´Ù.

SWP_NOMOVE

À§Ä¡´Â À̵¿ÇÏÁö ¾Ê°í Å©±â¸¸ º¯°æÇÑ´Ù. X,YÀμö°¡ ¹«½ÃµÈ´Ù.

SWP_NOOWNERZORDER

¼ÒÀ¯ÀÚÀÇ Z¼ø¼­¸¦ º¯°æÇÏÁö ¾Ê´Â´Ù.

SWP_NOREDRAW

Å©±â, À§Ä¡¸¦ ¹Ù²Û ÈÄ ±×¸®±â¸¦ ÇÏÁö ¾Ê´Â´Ù. ÇØ´ç À©µµ¿ì´Â ¹°·ÐÀÌ°í ÀÌ À©µµ¿ì¿¡ ÀÇÇØ ´Ù½Ã µå·¯³ª´Â À©µµ¿ìµµ ´Ù½Ã ±×¸®±â¸¦ ÇÏÁö ¾Ê´Â´Ù. ÀÌ Ç÷¡±×¸¦ ÁÖ¾úÀ» °æ¿ì ÇÁ·Î±×·¥Àº ÇÊ¿äÇÑ ºÎºÐÀ» Áï½Ã ¹«È¿È­½ÃÄÑ ´Ù½Ã ±×¸®µµ·Ï ÇØ ÁÖ¾î¾ß ÇÑ´Ù.

SWP_NOREPOSITION

=SWP_NOOWNERZORDER

SWP_NOSENDCHANGING

À©µµ¿ì¿¡°Ô WM_WINDOWPOSCHANGING ¸Þ½ÃÁö¸¦ º¸³»Áö ¾Ê´Â´Ù.

SWP_NOSIZE

Å©±â´Â º¯°æÇÏÁö ¾Ê°í À§Ä¡¸¸ À̵¿ÇÑ´Ù. cx, cy Àμö°¡ ¹«½ÃµÈ´Ù.

SWP_NOZORDER

ÇöÀçÀÇ Z¼ø¼­¸¦ ±×´ë·Î À¯ÁöÇÑ´Ù. hWndInsertAfter Àμö¸¦ ¹«½ÃÇÑ´Ù.

SWP_SHOWWINDOW

À©µµ¿ì¸¦ º¸ÀδÙ. ÀÌ °æ¿ì À̵¿°ú Å©±â º¯°æÀº ¹«½ÃµÈ´Ù.

 

¸®ÅÏ

¼º°øÇϸé 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÏ¸ç ¿¡·¯ ¹ß»ý½Ã 0À» ¸®ÅÏÇÑ´Ù.

¼³¸í

ÀÌ ÇÔ¼ö´Â À©µµ¿ìÀÇ À§Ä¡, Å©±â, Z¼ø¼­¸¦ µ¿½Ã¿¡ ¶Ç´Â ÀϺθ¸ º¯°æÇÒ ¶§ »ç¿ëµÈ´Ù. ¿¹¸¦ µé¾î Å©±â´Â ±×´ë·Î µÎ°í À§Ä¡¸¸ º¯°æÇÏ°íÀÚ ÇѴٰųª À§Ä¡¿Í Å©±â´Â ±×´ë·Î µÎ°í Z¼ø¼­¸¸ º¯°æÇÏ°íÀÚ ÇÒ ¶§ »ç¿ëÇÑ´Ù. MoveWindow ÇÔ¼ö´Â Å©±â¿Í À§Ä¡¸¦ Ç×»ó °°ÀÌ º¯°æÇÏÁö¸¸ ÀÌ ÇÔ¼ö´Â SWP_NOSIZE, SWP_NOMOVE Ç÷¡±×·Î À§Ä¡¿Í Å©±â¸¦ °³º°ÀûÀ¸·Î º¯°æÇÒ ¼ö ÀÖ´Ù.

¶ÇÇÑ ÀÌ ÇÔ¼ö´Â Z¼ø¼­¸¦ º¯°æÇϱâ À§ÇÑ ¸ñÀûÀ¸·Î, ƯÈ÷ Ç×»ó À§(Top Most) ¼Ó¼ºÀ» Åä±ÛÇϱâ À§ÇÑ ¿ëµµ·Îµµ ¸¹ÀÌ »ç¿ëµÇ´Âµ¥ µÎ¹ø° Àμö¿¡ HWND_(NO)TOPMOST¸¦ ÁÜÀ¸·Î½á ÀÌ ¼Ó¼ºÀ» Åä±ÛÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö·Î Ç×»ó À§ ¼Ó¼ºÀ» ¼³Á¤Çϸé ÀÌ À©µµ¿ì¿¡ ¼ÒÀ¯µÈ À©µµ¿ìµµ Ç×»ó À§ ¼Ó¼ºÀ» °°ÀÌ °¡Áö°Ô µÈ´Ù. ±×·¯³ª ÀÌ À©µµ¿ì¸¦ ¼ÒÀ¯ÇÑ À©µµ¿ì´Â ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù. ¹Ý´ë·Î ÀÌ ÇÔ¼ö·Î Ç×»ó À§ ¼Ó¼ºÀ» ÇØÁ¦Çϸé ÀÌ À©µµ¿ì¿¡ ¼ÒÀ¯µÈ À©µµ¿ì¿Í ÀÌ À©µµ¿ì¸¦ ¼ÒÀ¯ÇÑ À©µµ¿ìÀÇ Ç×»ó À§ ¼Ó¼ºÀÌ ¸ðµÎ ÇØÁ¦µÈ´Ù.

ÀϹÝÀûÀ¸·Î Ç×»ó À§ ¼Ó¼ºÀ» °¡ÁöÁö ¾ÊÀº À©µµ¿ì°¡ Ç×»ó À§ ¼Ó¼ºÀ» °¡Áø À©µµ¿ì¸¦ ¼ÒÀ¯ÇÒ ¼ö´Â ÀÖÁö¸¸ ¹Ý´ë´Â ºÒ°¡´ÉÇÏ´Ù. ¿Ö³ÄÇÏ¸é ¼ÒÀ¯µÈ À©µµ¿ì´Â ¼ÒÀ¯ÇÑ À©µµ¿ìº¸´Ù Z¼ø¼­ÀÇ À§ÂÊ¿¡ ÀÖ¾î¾ß ÇϹǷΠ¼ÒÀ¯ÇÑ À©µµ¿ì¸¸ Ç×»ó À§ ¿É¼ÇÀ» °¡Áú ¼ö´Â ¾ø±â ¶§¹®ÀÌ´Ù. ÀÌ·¸°Ô µÇ¸é Ç×»ó À§ ¿É¼ÇÀ» °¡Áö´Â À©µµ¿ìÀÇ Â÷Àϵå·Î ¿­·Á ÀÖ´Â ´ëÈ­»óÀÚ°¡ ¹ØÀ¸·Î ¼û¾î ¹ö¸®´Â Çö»óÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. SetWindowPos ÇÔ¼ö´Â ÀÌ ¸ðµç 󸮸¦ ´Ù ÇØ ÁֹǷΠÇ×»ó À§ ½ºÅ¸ÀÏÀ» Åä±Û ÇÒ ¶§´Â SetWindowLongÀ¸·Î SWL_EXSTYLEÀ» Á¶ÀÛÇÏÁö ¸»°í ¹Ýµå½Ã ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â SetWindowPos ÇÔ¼ö·Î À©µµ¿ìÀÇ À§Ä¡¸¸ º¯°æÇÏ´Â ¹æ¹ý°ú Ç×»ó À§ ½ºÅ¸ÀÏÀ» Åä±ÛÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	char Mes[]="¿ÞÂÊ=À§Ä¡ º¯°æ, ¿À¸¥ÂÊ=Ç×»ó À§ ¿É¼Ç º¯°æ";
	static BOOL bTopMost=FALSE;

	switch(iMessage) {
	case WM_LBUTTONDOWN:
		SetWindowPos(hWnd, HWND_NOTOPMOST,
			rand()%640, rand()%480, 0, 0, SWP_NOSIZE);
		return 0;
	case WM_RBUTTONDOWN:
		if (bTopMost) {
			SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
		} else {
			SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
		}
		bTopMost=~bTopMost;
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,10,10,Mes,lstrlen(Mes));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

¿ÞÂÊ ¹öÆ°À» ´©¸£¸é ³­¼ö·Î Á¤ÇÑ »õ À§Ä¡·Î À©µµ¿ì¸¦ ¿Å±âµÇ SWP_NOSIZE Ç÷¡±×¸¦ ÁÖ¾î Å©±â´Â º¯°æÇÏÁö ¾Êµµ·Ï ÇÏ¿´´Ù. ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é Ç×»ó À§ ¿É¼ÇÀ» Åä±Û½ÃŲ´Ù.

Âü°íÇÔ¼ö

MoveWindow : À©µµ¿ìÀÇ À§Ä¡¿Í Å©±â¸¦ µ¿½Ã¿¡ º¯°æÇÑ´Ù.

Ç÷¿Æû

95ÀÌ»ó

º»¹®ÂüÁ¶

 


written by http://www.winapi.co.kr