//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit_Magnifying.h" #include "Unit_Main.h" #include "Unit_Task.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TMagnifying *Magnifying; //--------------------------------------------------------------------------- __fastcall TMagnifying::TMagnifying(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TMagnifying::FormCreate(TObject *Sender) { // Bitmap »ý¼º MAGNIFYING = new Graphics::TBitmap(); ZOOMVALUE = 2; CURSOR_GAB_X = DEFAULT_CURSOR_GAB_X; CURSOR_GAB_Y = DEFAULT_CURSOR_GAB_Y; DoubleBuffered = true; SetWindowSize(); } //--------------------------------------------------------------------------- void __fastcall TMagnifying::SetWindowSize() { MAGNIFYING->Width = _imMagnifying->Width / ZOOMVALUE; MAGNIFYING->Height = _imMagnifying->Height / ZOOMVALUE; } //--------------------------------------------------------------------------- void __fastcall TMagnifying::FormDestroy(TObject *Sender) { delete MAGNIFYING; } //--------------------------------------------------------------------------- void __fastcall TMagnifying::_tiTickTimer(TObject *Sender) { tagPOINT tpPosition; HWND itDC; int itSourceX, itSourceY, itWinX, itWinY, itWindowPosition; int itSwapSpace; // ÁÂÇ¥°¡ ¹Ù²î¸é ¿¬»êÀ» Çѹø ´õ ÇÔ int itMagnifyX, itMagnifyY; TCursor tcCursor; /* È­¸é ÁÂÇ¥¿¡ ´ëÇÏ¿© ¹Ù²Ù´Â ·çƾ int POSITION[4][2] = { 20, Main->_imToolbarL->Height + 15, Screen->Width - Magnifying->Width - 30, Main->_imToolbarL->Height + 10, 20, Screen->Height - Magnifying->Height - Task->Height - 35, Screen->Width - Magnifying->Width - 30, Screen->Height - Magnifying->Height - Task->Height - 35}; */ GetCursorPos(&tpPosition); if(PREVIOUS_X != tpPosition.x || PREVIOUS_Y != tpPosition.y) { PREVIOUS_X = tpPosition.x; PREVIOUS_Y = tpPosition.y; /* È­¸é ÁÂÇ¥¿¡ ´ëÇÏ¿© ¹Ù²Ù´Â ·çƾ // À©µµ¿ì À§Ä¡ ¼³Á¤ itWindowPosition = 0; if(PREVIOUS_X < Screen->Width / 2) itWindowPosition = itWindowPosition | 1; else itWindowPosition = itWindowPosition | 0; if(PREVIOUS_Y < Screen->Height / 2) itWindowPosition = itWindowPosition | 2; else itWindowPosition = itWindowPosition | 0; Magnifying->Left = POSITION[itWindowPosition][0]; Magnifying->Top = POSITION[itWindowPosition][1]; */ itWinX = PREVIOUS_X + MAGNIFYING_INTERVAL; itWinY = PREVIOUS_Y + MAGNIFYING_INTERVAL; itSwapSpace = 0; if(itWinX + Magnifying->Width > Screen->Width) itWinX = PREVIOUS_X - Magnifying->Width - MAGNIFYING_INTERVAL; if(itWinY + Magnifying->Height + Task->Height + 10 > Screen->Height) { itWinY = PREVIOUS_Y - Magnifying->Height - MAGNIFYING_INTERVAL; // À©µµ¿ì°¡ ´õÀÌ»ó ³»·Á°¡Áö ¾Ê°Ô ÇÏ´Â À§Ä¡¿¡¼­, À©µµ¿ì À§Ä¡°¡ ¸¶¿ì½º // Ä¿¼­ À§Ä¡·Î ÀÎÇÏ¿© ¹Ù²î°Ô µÇ¸é, ¿¬»êÀ» ¹Ù²ï À§Ä¡¸¸Å­ ´õ ÇØÁÖ¾î¾ß ÇÑ´Ù itSwapSpace = MAGNIFYING->Height; } if(itWinX < MAGNIFYING->Width) itWinX = MAGNIFYING->Width; if(itWinY < MAGNIFYING->Height) itWinY = MAGNIFYING->Height; if(itWinY > Screen->Height - Task->Height - Magnifying->Height - itSwapSpace) itWinY = Screen->Height - Task->Height - Magnifying->Height - itSwapSpace; Magnifying->Left = itWinX; Magnifying->Top = itWinY; // È­¸éÀ» ĸÃÄÇÑ ÈÄ Zoom ½ÃÅ´ itSourceX = PREVIOUS_X - (_imMagnifying->Width / 2 / ZOOMVALUE); itSourceY = PREVIOUS_Y - (_imMagnifying->Height / 2 / ZOOMVALUE); if(itSourceX < 0) itSourceX = 0; if(itSourceY < 0) itSourceY = 0; if(itSourceX + MAGNIFYING->Width > Screen->Width) itSourceX = Screen->Width - MAGNIFYING->Width; if(itSourceY + MAGNIFYING->Height > Screen->Height) itSourceY = Screen->Height - MAGNIFYING->Height; itMagnifyX = ((PREVIOUS_X - itSourceX) * ZOOMVALUE) + _imMagnifying->Left; itMagnifyY = ((PREVIOUS_Y - itSourceY) * ZOOMVALUE) + _imMagnifying->Top; itDC = GetDC(0); BitBlt(MAGNIFYING->Canvas->Handle, 0, 0, MAGNIFYING->Width, MAGNIFYING->Height, itDC, itSourceX, itSourceY, SRCCOPY); ReleaseDC(0, itDC); _imMagnifying->Picture->Bitmap->Assign(MAGNIFYING); _imMagnifying->Picture->Bitmap->Canvas->Draw( (itMagnifyX / ZOOMVALUE - 15) + CURSOR_GAB_X, (itMagnifyY / ZOOMVALUE - 15) + CURSOR_GAB_Y, _imCursor->Picture->Graphic ); // Ä¿¼­¸¦ ´Ù½Ã ±×¸®´Â ·çƾ // OS¿¡ µû¶ó Ʋ·ÁÁø´Ù´Â ´ÜÁ¡ÀÌ ÀÖÀ½ /* DrawIcon(_imMagnifying->Picture->Bitmap->Canvas->Handle, (itMagnifyX / ZOOMVALUE - 15) + CURSOR_GAB_X, (itMagnifyY / ZOOMVALUE - 15) + CURSOR_GAB_Y, LoadCursor(HInstance, IDC_ARROW)); */ } } //---------------------------------------------------------------------------