¿Ö? µ¨ÆÄÀÌ·Î ¸¸µç ÇÁ·Î±×·¥Àº ÃÖ¼ÒÈ ¾Ö´Ï¸ÞÀ̼ÇÀÌ ¾ÈµÇ´Â°¡?
ÇѹøÀº ½É½ÉÇؼ ÀÌ ¹®Á¦¸¦ °¡Áö°í VCL¼Ò½º¸¦ º¸¸é¼ ¿¬±¸¸¦ ÇØ º¸¾ÒÁÒ ±×·¡¼ Á¦°¡ ³ª¸§´ë·Î ÁöÀº °á·ÐÀÔ´Ï´Ù. ±×¸®°í ÇØ°á¹æ¹ýµµ Á¦½ÃÇØ º¸ ¾Ò½À´Ï´Ù.
¸ÕÀú ¿Ö ¾ÈµÇ´Â°¡¸¦ µûÁö±â Àü¿¡ À©95´Â ¾ðÁ¦ ¾Ö´Ï¸ÞÀ̼ÇÀÌ ¹ß»ýÇÏ°Ô Çϴ°¡¸¦ µûÁ®º¼ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.
¡Ú À©µµ95´Â ÇÚµéÀÌ ÀÖ´Â À©µµ°¡ Minimize, Maxmize ȤÀº Restore(º¸Åë»óÅÂ) µÉ¶§ ¾Ö´Ï¸ÞÀ̼ÇÀÌ ¹ß»ýÇÏ°Ô ÇÑ´Ù.
º°·Î Ưº°ÇÑ ³»¿ëÀÌ ¾Æ´Ñ°Í °°Áö¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù. ¾Ö´Ï¸ÞÀ̼ÇÀÌ µÇ´Â °ÍÀº ÆûÀÌ ¾Æ´Ï¶ó ÇÚµéÀÌ ÀÖ´Â À©µµ¶ó´Â °ÍÀÔ´Ï´Ù. Áï Æû¿¡ PanelÀ» Çϳª ³õ°í ¹öÆ°µµ Çϳª ³õ°í ¹öÆ°ÀÇ OnClick¿¡ ÀÌ·¸°Ô ÄÚµùÇØ º¸¼¼¿ä ShowWindow( Panel1.Handle, SW_MINIMIZE );
±×·¯¸é Panel1ÀÌ Æû¾È¿¡¼ ÃÖ¼ÒÈ°¡ µÇ¸é¼ ¾Ö´Ï¸ÞÀ̼ÇÀÌ º¸¿©Áý´Ï´Ù. ´Ù½Ã ¸»Çؼ ¾Ö´Ï¸ÞÀ̼ÇÀÌ ¹ß»ýÇϴ°ÍÀº Æû¸¸ÀÌ ¾Æ´Ï¶ó´Â ¾ê±âÀÔ´Ï´Ù.
¡Ú À©µµ95ÀÇ ExplorerÀº °¢ ÇÁ·Î±×·¥ÀÇ ¸ÞÀÎ ÇÚµéÀÌ ÃÖ¼ÒÈ µÉ¶§ ±×°ÍÀ» °¡ ·Îä¾î ÀÚ½ÅÀÌ ¹öÆ°Çü½ÄÀ¸·Î Ç¥ÇöÇÑ´Ù.
¹®Á¦´Â ¿©±â¿¡ ÀÖ½À´Ï´Ù. ÃÖ´ëÈ µÉ¶§´Â Explorer°¡ °ü¸®¸¦ ÇÏÁö ¾ÊÁö¸¸ ÃÖ¼ÒÈ µÉ¶§´Â Explorer°¡ °¨½Ã¸¦ ÇÕ´Ï´Ù. ±×·¡¼ ±×°ÍÀÌ ÇÁ·Î±×·¥ÀÇ ¸ÞÀÎ ÇÚµéÀ̶ó¸é °¡·ÎäÁö¿ä Áï ¸ÞÀÎÇÚµéÀº ³öµÎ°í Æû¸¸ ÃÖ¼ÒÈ°¡ µÇ¸é ±× ÆûÀº Explorer¾ÈÀ¸·Î µé¾î°¡´Â°ÍÀÌ ¾Æ´Ï¶ó ±×³É ¹ÙÅÁȸ鿡 ¹Ø¿¡ ÀÖ½À´Ï´Ù. ±× ·±µ¥ ºñÁÖ¾óC++À̳ª ºñÁÖ¾óº£ÀÌÁ÷À¸·Î ÇÁ·Î±×·¥À» ¸¸µé¸é ¸ÞÀÎÆûÀÇ ÇÚµéÀÌ ¸ÞÀÎÇÚµéÀÌ µÇ´Âµ¥ ¿ì¸®ÀÇ µ¨ÆÄÀÌ´Â ±×·¸Áö°¡ ¾Ê½À´Ï´Ù. ¸ÞÀÏ ÆûÀÌ »ý¼ºµÇ ±âÀü¿¡ ApplicationÀÌ Ã³À½À¸·Î »ý¼ºµË´Ï´Ù. ÇÁ·ÎÁ§Æ® ¼Ò½º¸¦ º¸¸é ¾Ë¼ö ÀÖÁö¿ä ±×·¡¼ ¿ì¸®ÀÇ µ¨ÆÄÀÌ·Î ¸¸µç ÇÁ·Î±×·¥ÀÇ ¸ÞÀÎÇÚµéÀº Application.HandleÀÌ ¸ÞÀÎ ÇÚµéÀÔ´Ï´Ù.TFormÀÇ ¼Ò½º¸¦ º¸¸é ½ÇÁ¦·Î ÆûÀÌ ÃÖ¼ÒÈ ¸Þ¼¼Áö¸¦ ¹ÞÀ¸¸é ÇöÀç ÆûÀÌ ApplicationÀÇ MainFormÀΰ¡¸¦ È®ÀÎÇؼ ¾Æ´Ï¸é ±×³É ÃÖ¼Òȸ¦ ÇÏ°í ¸ÂÀ¸¸é ÆûÀÌ ÃÖ¼ÒÈ µÇ´Â°ÍÀÌ ¾Æ´Ï¶ó ApplicationÀÌ ÃÖ¼ÒÈ µÇ°Ô µÇ¾î ÀÖ½À´Ï´Ù. ±×·³ ¼Ò½º¸¦ ´Ù½Ã Æû¿¡¼ ApplicationÂÊÀ¸·Î ¿Å°Ü¼ ºÁ¾ß°Ú±º¿ä ¿Ö³Ä ApplicationÀÌ ÃÖ¼ÒÈ µÉ¶§ ¾Ö´Ï¸ÞÀ̼ÇÀÌ ¹ß»ýÇÏÁö ¾ÊÀ¸´Ï±ñ¿ä ±×·¨´õ ´Ï °Å±â¿¡ ±â°¡ ¸·Èù ¹®ÀåÀÌ ÀÖ´õ¶ó°í¿ä Application.Minimize¿¡ ShowWinNoAnimate¶ó´Â °ÍÀÌ ÀÖ´õ¶ó±¸¿ä À̸§¸¸ ºÁµµ ¾Ë°ÚÁÒ? ±×·¡¼ ÀÌ°Å ¸¦ »©¹ö·È´õ´Ï µÇ±â´Â µÇ´Âµ¥ ¸ÞÀÎÆûÀÇ À§Ä¡¿¡¼ ¹ØÀ¸·Î ³»·Á °¡´Â°ÍÀÌ ¾Æ´Ï ¶ó ȸéÀÇ Áß¾Ó¿¡¼ ÇÑ°³ÀÇ Á¡À¸·Î ÀÖ´Ù°¡ ¹ØÀ¸·Î ¿ÀÈ÷·Á Ä¿Áö¸é¼ ³»·Á°¡ ´õ¶ó°í¿ä ÆûÀÌ ¾îµð¿¡ ÀÖ°Ç°£¿¡.. ±×·¡¼ °õ°õÈ÷ »ý°¢À» Çغ¸¾Ò´Âµ¥ ¾Æ¸¶ ApplicationÀº ¾îÂ÷ÇÇ ´«¿¡ º¸À̴°ÍÀÌ ¾Æ´Ï´Ï±ñ ±×³É ¹«Á¶°Ç ȸéÀÇ Áß¾Ó ¿¡ °¡·Î¼¼·ÎÅ©±â°¡ 0ÀΠü·Î Á¸ÀçÇÏ°í Àִ°ÍÀ̶ó°í °á·ÐÀ» Áþ°í Application.Minimize¾È¿¡ ApplicationÀÇ À§Ä¡¿Í Å©±â¸¦ ¸ÞÀÎÆû°ú ²À°°°Ô ÇÑ´ÙÀ½ ÃÖ¼ÒÈ°¡ µÇµµ·Ï Çß´õ´Ï ÂÁ~ µÇ±â´Â µÇ´Âµ¥ ¹¹ ÀÌ»óÇÏ°Ô µÇ´õ¶ó±¸¿ä ¿ä´Â ApplicationÀÇ À©µµ ½ºÅ¸ÀÏÀÌ ÀûÇÕÇÏÁö ¾Ê¾Ò³ªºÁ¿ä ±×·¡¼ Application ÀÌ »ý¼ºµÉ¶§ ½ºÅ¸ÀÏÀ» ÀûÀýÈ÷ Á¶ÀýÇß´õ´Ï °ÅÀÇ ¿Ïº®ÇÏ°Ô µÆ½À´Ï´Ù.
±×·¡¼ °á·ÐÀº À©µµ95ÀÇ Explorer´Â ÇÁ·Î±×·¥ÀÇ ¸ÞÀÎÇÚµéÀÌ ÃÖ¼ÒÈ µÉ¶§ ±×°ÍÀ» °¡·Îä¾î ÀÚ½ÅÀÌ °¡Áö°í Àִµ¥ µ¨ÆÄÀÌÀÇ ¸ÞÀÎÆûÀº ¸ÞÀÎÇÚµéÀÌ ¾Æ´Ï ´Ù. ±×·¡¼ µ¨ÆÄÀÌÀÇ ¸ÞÀÎÆûÀÌ ÃÖ¼ÒÈ µÉ¶§´Â ApplicationÀÌ ÃÖ¼ÒÈ µÇµµ·Ï ÇØ ³õ¾Ò´Ù. ±×·±µ¥ ApplicationÀº ÆûÀÌ ¾Æ´Ï±â¶§¹®µ¥ ÇüŸ¦ °®Ãß°í ÀÖÁö ¾Ê´Ù. ±×·¡¼ ApplicationÀÌ ÃÖ¼Òȵɶ§´Â ¾Æ¿¹ ¾Ö´Ï¸ÞÀ̼ÇÀÌ ¾ÈµÇµµ·Ï ÇØ ³õ¾Ò´Ù ±×¸®ÇÏ¾ß ±×°Å¸¦ µÇ°Ô ÇÏ·Á¸é ApplicationÀÇ À©µµ½ºÅ¸ÀÏÀ» ÃÖ¼ÒÈ µÇ´Â ¼ø°£¿¡¸¸ ´«¿¡ º¸ÀÌ´Â ½ºÅ¸ÀÏ·Î ¹Ù²Ù°í ÀÏ´Ü ÃÖ¼ÒÈ°¡ µÇ¸é ´«¿¡ ¾Èº¸ ÀÌ°Ô ÇؾßÇÑ´Ù. ¿Ö? ´Ù½Ã ¸ÞÀÎÆûÀÌ È°¼ºÈµÇ¸é ±×¿·¿¡ Applicationµµ º¸ÀÌ °Ô µÇ´Ï±ñ..(Applicationµµ À©µµ¶ó´ÂÁ¡..) ±×¸®°í Application.Minimize¿¡ ShowWinNoAnimate¸¦ Á¦°ÅÇÑ´Ù. ±×·¯¸é Á¦¹ý ºñ½ÁÇÏ°Ô µË´Ï´Ù. ¾Ö´Ï¸ÞÀ̼ÇÀÌ µÇ°Ô ÇÏ´Â ÄÞÆ÷³ÍÆ®µéµµ ¸î°³ ³ª¿ÍÀִµ¥ ±×°Íµéº¸´Ùµµ ´õ ¿Ïº®ÇÏ°Ô µÇ´Â°Í °°½À´Ï´Ù. ¾îÂîµÇ¾ú°Ç °á·ÐÀº Forms.pas¼Ò½º ÇÑ°³¸¦ °íÃļ Libµð·ºÅ丮¿¡ ³Ö¾îµÎ¸é µÈ´Ù´Â°Å¿´½À´Ï´Ù. ¾Æ·¡¼Ò½º´Â ¹Ù·Î±× Forms.pas¸¦ À§¿¡ ¼³¸íÇѵ¥ ·Î ¸îÁÙ °íÄ£ºÎºÐÀÔ´Ï´Ù. ±×·¯´Ï ÀÌ°É ´Ù¿î¹Þ¾Æ¼ Source/Vclµð·ºÅ丮¿¡ ÀÖ´Â Forms.pasÀÇ °°Àº ºÎºÐÀ» ã¾Æ ¾Æ·¡¼Ò½ºÀÇ ³»¿ëÀ¸·Î ¹Ù²Ù°í ±×°É Libµð·ºÅ丮¿¡ Forms.pas¶ó´Â À̸§À¸·Î ³Ö¾îµÎ¸é µË´Ï´Ù. Âü°í·Î ¼Ò½ºÁß ÁÖ¼®Ç¥½ÃÁß¿¡ /// (½½·¯½Ã ¼¼°³)´Â Á¦°¡ »èÁ¦ÇÑ ºÎºÐÀ̱¸¿ä {} ÀÌÇ¥½Ã´Â ±× ÁÙÀº »õ·Î ¸¸µé¾î ³ÖÀº ÁÙÀ̶ó´Â°Ì´Ï´Ù. Æò¾ÈÇϽñæ~
procedure TApplication.CreateHandle; var TempClass: TWndClass; SysMenu: HMenu; begin if not FHandleCreated then begin FObjectInstance := MakeObjectInstance(WndProc); if not GetClassInfo(HInstance, WindowClass.lpszClassName, TempClass) then begin WindowClass.hInstance := HInstance; if Windows.RegisterClass(WindowClass) = 0 then raise EOutOfResources.CreateRes(SWindowClass); end; FHandle := CreateWindow(WindowClass.lpszClassName, PChar(FTitle), WS_POPUP or WS_CAPTION or WS_VISIBLE or WS_CLIPSIBLINGS or {} WS_SYSMENU or WS_MINIMIZEBOX or WS_CHILD , {WS_CHILD¸¦ Ãß°¡ÇÏ¿© TApplicationÀÌ È¸é¿¡ º¸ÀÌ°Ô..} GetSystemMetrics(SM_CXSCREEN) div 2, GetSystemMetrics(SM_CYSCREEN) div 2, 0, 0, 0, 0, HInstance, nil); FTitle := ''; FHandleCreated := True; ShowWinNoAnimate(FHandle, SW_RESTORE); SetWindowLong(FHandle, GWL_WNDPROC, Longint(FObjectInstance)); if NewStyleControls then SendMessage(FHandle, WM_SETICON, 1, GetIconHandle); SysMenu := GetSystemMenu(FHandle, False); DeleteMenu(SysMenu, SC_MAXIMIZE, MF_BYCOMMAND); DeleteMenu(SysMenu, SC_SIZE, MF_BYCOMMAND); if NewStyleControls then DeleteMenu(SysMenu, SC_MOVE, MF_BYCOMMAND); end; end;
procedure TApplication.Minimize; begin if not IsIconic(FHandle) then begin NormalizeTopMosts; SetActiveWindow(FHandle); /// ShowWinNoAnimate(FHandle,SW_MINIMIZE);{¾Ö´Ï¸Þ¼ÇÀ» ¸øÇÏ°Ô Çϴ°ÍÀ» »èÁ¦} {} if MainForm <> nil then {TApplicationÀÇ À§Ä¡,Å©±â¸¦ ¸ÞÀÎÆû°ú °°°Ô} {} with MainForm do SetWindowPos(FHandle,0,Left,Top,Width,Height,0); ShowWindow(FHandle, SW_MINIMIZE); if Assigned(FOnMinimize) then FOnMinimize(Self); end; end;
procedure TApplication.Restore; begin if IsIconic(FHandle) then begin SetActiveWindow(FHandle); /// ShowWinNoAnimate(FHandle, SW_RESTORE);{¾Ö´Ï¸Þ¼ÇÀ» ¸øÇÏ°Ô Çϴ°ÍÀ» »èÁ¦} ShowWindow(FHandle,SW_RESTORE); {} SetWindowPos(FHandle, 0,0,0,0,0,0);{ÃÖ¼ÒȵÈÈÄ TApplicationÀ» ¾Èº¸ÀÌ°Ô} RestoreTopMosts; if Screen.ActiveControl <> nil then Windows.SetFocus(Screen.ActiveControl.Handle); if Assigned(FOnRestore) then FOnRestore(Self); end; end;
|