안녕하세요..
팁에 있는 패널에 대한 콤포넌트 사이즈 변경에 대한것을 보고...(마우스 커서를 이용한 )
그것을 그대로 메모장이나,editbox에 적용하려고 해보니, 패널은 상하,좌우 모두 마우스 잘 동작됩니다.
그런데.. 메모장이나 editbox는 왼쪽과 윘쪽은 잘 동작하는데...
오른쪽과 아랫쪽은 마우스가 잘 인지 못하는것 같습니다... 모두 TControl을 상속 받아서, 패널과 틀릴것이 없다고 생각이 되는데... 왜 이런 차이가 생기는건가요?
void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TControl *SenderControl = dynamic_cast<TControl *>(Sender);
int SysCommWparam;
if(X < 4 && Y < 4)
SysCommWparam = SC_DRAG_RESIZEUL;
else if(X > SenderControl->Width-4 && Y > SenderControl->Height-4)
SysCommWparam = SC_DRAG_RESIZEDR;
else if(X < 4 && Y > SenderControl->Height-4)
SysCommWparam = SC_DRAG_RESIZEDL;
else if(X > SenderControl->Width-4 && Y < 4)
SysCommWparam = SC_DRAG_RESIZEUR;
else if(X < 4)
SysCommWparam = SC_DRAG_RESIZEL;
else if(X > SenderControl->Width-4)
SysCommWparam = SC_DRAG_RESIZER;
else if(Y < 4)
SysCommWparam = SC_DRAG_RESIZEU;
else if(Y > SenderControl->Height-4)
SysCommWparam = SC_DRAG_RESIZED;
else
SysCommWparam = SC_DRAG_MOVE;
ReleaseCapture();
SendMessage(Panel1->Handle, WM_SYSCOMMAND, SysCommWparam, 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
TControl *SenderControl = dynamic_cast<TControl *>(Sender);
if((X < 4 && Y < 4) || (X > SenderControl->Width-4 && Y > SenderControl->
Height-4))
SenderControl->Cursor = crSizeNWSE;
else if((X < 4 && Y > SenderControl->Height-4) || (X > SenderControl->
Width-4 && Y < 4))
SenderControl->Cursor = crSizeNESW;
else if(X < 4 || X > SenderControl->Width-4)
SenderControl->Cursor = crSizeWE;
else if(Y < 4 || Y > SenderControl->Height-4)
SenderControl->Cursor = crSizeNS;
else
SenderControl->Cursor = crDefault;
}
|