- Panel UI 드래그 기능 구현.
// CPanelUI.h
...
class CPanelUI : public CUI
{
private:
Vector2 m_vDragOffset; // 드래그 시작 위치와 마우스 위치의 오프셋.
public:
virtual void OnMouseHover() override;
virtual void OnLButtonDown() override;
virtual void OnLButtonUp() override;
virtual void OnLButtonClicked() override;
public:
virtual void late_update() override;
public:
CLONE(CPanelUI)
CPanelUI();
virtual ~CPanelUI();
};
드래그 시작시 마우스와의 오프셋을 계산한다.
// CPanelUI.cpp
...
void CPanelUI::OnLButtonDown()
{
CUI::OnLButtonDown();
// 드래그 시작 위치와 마우스 위치의 오프셋 계산.
m_vDragOffset = GetFinalPos() - MOUSEPOS;
}
...
void CPanelUI::late_update()
{
CUI::late_update();
// 마우스 왼쪽 버튼이 눌린 상태 때 드래그 동작 수행.
if (IsLButtonDown())
{
SetPos(MOUSEPOS + m_vDragOffset);
}
}
...
업데이트마다 마우스 위치에 오프셋 값만큼 더한 위치가 해당 Panel UI 의 위치가 됨.
'Win32 api' 카테고리의 다른 글
| Win32 api 강의 53화. (0) | 2025.09.26 |
|---|---|
| Win32 api 강의 52화. (0) | 2025.09.26 |
| Win32 api 강의 49 - 50화. (0) | 2025.09.25 |
| Win32 api 강의 48화. (0) | 2025.09.24 |
| Win32 api 강의 47화. (0) | 2025.09.24 |