본문 바로가기

Win32 api

Win32 api 강의 51화.

- 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