Initial commit: ROW Client source code
Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
155
Tools/Launcher/ZBitmapButton.cpp
Normal file
155
Tools/Launcher/ZBitmapButton.cpp
Normal file
@@ -0,0 +1,155 @@
|
||||
// ZBitmapButton.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ZBitmapButton.h"
|
||||
#include "MemDC.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CZBitmapButton
|
||||
|
||||
CZBitmapButton::CZBitmapButton()
|
||||
{
|
||||
m_State=0;
|
||||
m_bMouseCaptured=FALSE;
|
||||
}
|
||||
|
||||
CZBitmapButton::~CZBitmapButton()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CZBitmapButton, CButton)
|
||||
//{{AFX_MSG_MAP(CZBitmapButton)
|
||||
ON_WM_MOUSEMOVE()
|
||||
ON_WM_DRAWITEM()
|
||||
ON_WM_LBUTTONDOWN()
|
||||
ON_WM_LBUTTONUP()
|
||||
//}}AFX_MSG_MAP
|
||||
ON_WM_ERASEBKGND()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CZBitmapButton message handlers
|
||||
|
||||
void CZBitmapButton::OnMouseMove(UINT nFlags, CPoint point)
|
||||
{
|
||||
// TODO: Add your message handler code here and/or call default
|
||||
|
||||
if (!m_bMouseCaptured || GetCapture()!=this)
|
||||
{
|
||||
SetCapture();
|
||||
m_bMouseCaptured=TRUE;
|
||||
OnMouseEnter(nFlags,point);
|
||||
|
||||
} else
|
||||
{
|
||||
CRect rc;
|
||||
this->GetClientRect(&rc);
|
||||
if (!rc.PtInRect(point))
|
||||
{
|
||||
OnMouseLeave(nFlags,point);
|
||||
m_bMouseCaptured=FALSE;
|
||||
ReleaseCapture();
|
||||
}
|
||||
}
|
||||
Invalidate( FALSE );
|
||||
//CButton::OnMouseMove(nFlags, point);
|
||||
}
|
||||
|
||||
void CZBitmapButton::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
|
||||
{
|
||||
// TODO: Add your message handler code here and/or call default
|
||||
CButton::OnDrawItem(nIDCtl, lpDrawItemStruct);
|
||||
}
|
||||
|
||||
void CZBitmapButton::SetBitmap(UINT iNormal, UINT iOnMouse, UINT iClick)
|
||||
{
|
||||
m_bmNormal.LoadBitmap(iNormal);
|
||||
m_bmOnMouse.LoadBitmap(iOnMouse);
|
||||
m_bmClick.LoadBitmap(iClick);
|
||||
}
|
||||
|
||||
void CZBitmapButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
|
||||
{
|
||||
// TODO: Add your code to draw the specified item
|
||||
CDC* pDC;
|
||||
pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
|
||||
|
||||
CMemDC mDC( pDC, lpDrawItemStruct->rcItem );
|
||||
|
||||
switch(m_State)
|
||||
{
|
||||
case 0:
|
||||
RenderBitmap(mDC,m_bmNormal);
|
||||
break;
|
||||
case 1:
|
||||
RenderBitmap(mDC,m_bmOnMouse);
|
||||
break;
|
||||
case 2:
|
||||
RenderBitmap(mDC,m_bmClick);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CZBitmapButton::RenderBitmap(CDC &rDC, CBitmap &rBitmap)
|
||||
{
|
||||
CBitmap *pOldBitmap;
|
||||
CDC memDC;
|
||||
memDC.CreateCompatibleDC(&rDC);
|
||||
pOldBitmap=memDC.SelectObject(&rBitmap);
|
||||
CSize sBitmap=rBitmap.GetBitmapDimension();
|
||||
|
||||
BITMAP bmInfo;
|
||||
rBitmap.GetBitmap(&bmInfo);
|
||||
rDC.BitBlt(0,0,bmInfo.bmWidth,bmInfo.bmHeight,&memDC,0,0,SRCCOPY);
|
||||
memDC.SelectObject(pOldBitmap);
|
||||
}
|
||||
|
||||
BOOL CZBitmapButton::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
|
||||
{
|
||||
// TODO: Add your specialized code here and/or call the base class
|
||||
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
|
||||
}
|
||||
|
||||
void CZBitmapButton::OnMouseEnter(UINT nFlags, CPoint point)
|
||||
{
|
||||
m_State=1;
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
void CZBitmapButton::OnMouseLeave(UINT nFlags, CPoint point)
|
||||
{
|
||||
m_State=0;
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
void CZBitmapButton::OnLButtonDown(UINT nFlags, CPoint point)
|
||||
{
|
||||
// TODO: Add your message handler code here and/or call default
|
||||
m_State=2;
|
||||
Invalidate(FALSE);
|
||||
CButton::OnLButtonDown(nFlags, point);
|
||||
}
|
||||
|
||||
void CZBitmapButton::OnLButtonUp(UINT nFlags, CPoint point)
|
||||
{
|
||||
// TODO: Add your message handler code here and/or call default
|
||||
m_State=1;
|
||||
Invalidate(FALSE);
|
||||
CButton::OnLButtonUp(nFlags, point);
|
||||
}
|
||||
|
||||
BOOL CZBitmapButton::OnEraseBkgnd(CDC* pDC)
|
||||
{
|
||||
// TODO: Add your message handler code here and/or call default
|
||||
return TRUE;
|
||||
//return CButton::OnEraseBkgnd(pDC);
|
||||
}
|
||||
Reference in New Issue
Block a user