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>
144 lines
3.6 KiB
C++
144 lines
3.6 KiB
C++
//-----------------------------------------------------------------------------
|
|
// File: cdeviceview.h
|
|
//
|
|
// Desc: CDeviceView is a window class derived from CFlexWnd. It represents
|
|
// the device view window in which the device and callouts are drawn.
|
|
// Each CDeviceView only represents one view. A device that has more
|
|
// than one view should have a corresponding number of CDeviceView for it.
|
|
//
|
|
// Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifdef FORWARD_DECLS
|
|
|
|
|
|
enum DVIMAGE;
|
|
|
|
class CDeviceView;
|
|
|
|
#define DEFAULTVIEWSBWIDTH 11
|
|
|
|
|
|
#else // FORWARD_DECLS
|
|
|
|
#ifndef __CDEVICEVIEW_H__
|
|
#define __CDEVICEVIEW_H__
|
|
|
|
|
|
enum DVIMAGE {
|
|
DVI_IMAGE,
|
|
DVI_THUMB,
|
|
DVI_SELTHUMB
|
|
};
|
|
|
|
|
|
class CDeviceView : public CFlexWnd
|
|
{
|
|
private:
|
|
friend class CDeviceUI; // CDeviceUI has exclusive right to create/destroy views
|
|
friend class CDIDeviceActionConfigPage;
|
|
CDeviceView(CDeviceUI &ui);
|
|
~CDeviceView();
|
|
CDeviceUI &m_ui;
|
|
|
|
public:
|
|
// control information
|
|
int GetNumControls();
|
|
CDeviceControl *GetControl(int nControl);
|
|
CDeviceControl *GetControlFromOfs(DWORD dwOfs)
|
|
{ return GetControl(GetIndexFromOfs(dwOfs)); }
|
|
|
|
// text information
|
|
int GetNumTexts();
|
|
CDeviceViewText *GetText(int nText);
|
|
|
|
// text addition
|
|
CDeviceViewText *NewText();
|
|
CDeviceViewText *AddText(
|
|
HFONT, COLORREF, COLORREF, const RECT &, LPCTSTR text);
|
|
CDeviceViewText *AddText(
|
|
HFONT, COLORREF, COLORREF, const POINT &, LPCTSTR text);
|
|
CDeviceViewText *AddWrappedLineOfText(
|
|
HFONT, COLORREF, COLORREF, LPCTSTR text);
|
|
|
|
void SetImage(CBitmap *&refpbm);
|
|
void SetImagePath(LPCTSTR tszPath);
|
|
|
|
// imaging
|
|
CBitmap *GetImage(DVIMAGE dvi);
|
|
|
|
// editing
|
|
void Remove(CDeviceControl *pControl);
|
|
void RemoveAll(BOOL bUser = TRUE);
|
|
BOOL DoesCalloutOtherThanSpecifiedExistForOffset(CDeviceControl *, DWORD);
|
|
BOOL DoesCalloutExistForOffset(DWORD);
|
|
BOOL IsUnassignedOffsetAvailable();
|
|
|
|
int GetViewIndex();
|
|
|
|
int GetIndexFromOfs(DWORD dwOfs); // For writing to INI
|
|
|
|
|
|
void MakeMissingImages();
|
|
|
|
CDeviceControl *NewControl();
|
|
|
|
protected:
|
|
virtual void OnPaint(HDC hDC);
|
|
virtual void OnMouseOver(POINT point, WPARAM fwKeys);
|
|
virtual void OnClick(POINT point, WPARAM fwKeys, BOOL bLeft);
|
|
virtual void OnDoubleClick(POINT point, WPARAM fwKeys, BOOL bLeft);
|
|
virtual void OnWheel(POINT point, WPARAM wParam);
|
|
virtual LRESULT WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
private:
|
|
// helpers
|
|
void Unpopulate(BOOL bInternalOnly = FALSE);
|
|
|
|
// images/visualization
|
|
CBitmap *m_pbmImage, *m_pbmThumb, *m_pbmSelThumb;
|
|
LPTSTR m_ptszImagePath;
|
|
CBitmap *GrabViewImage();
|
|
|
|
LPCTSTR GetImagePath() { return m_ptszImagePath; }
|
|
|
|
// controls
|
|
CArray<CDeviceControl *, CDeviceControl *&> m_arpControl;
|
|
|
|
// text
|
|
CArray<CDeviceViewText *, CDeviceViewText *&> m_arpText;
|
|
POINT m_ptNextWLOText;
|
|
|
|
// Special painting
|
|
virtual void DoOnPaint(HDC hDC);
|
|
BOOL m_bForcePaint; // This indicates that we need painting even if GetUpdateRect returns FALSE.
|
|
|
|
// Sort assigned for keyboard devices
|
|
void SwapControls(int i, int j);
|
|
void SortAssigned(BOOL bSort);
|
|
void SortCallouts(int iStart, int iEnd);
|
|
|
|
// editting state machine
|
|
int m_SuperState, m_State, m_SubState;
|
|
int m_OldSuperState, m_OldState, m_OldSubState;
|
|
CDeviceControl *m_pControlContext;
|
|
|
|
// scrolling (vertical only)
|
|
BOOL m_bScrollEnable;
|
|
int m_nScrollOffset;
|
|
int m_nViewHeight;
|
|
public:
|
|
void EnableScrolling() {m_bScrollEnable = TRUE;}
|
|
void ScrollToMakeControlVisible(const RECT &rc);
|
|
void CalcDimensions();
|
|
private:
|
|
void DisableScrollBar();
|
|
void EnableScrollBar();
|
|
CFlexScrollBar m_sb;
|
|
};
|
|
|
|
|
|
#endif //__CDEVICEVIEW_H__
|
|
|
|
#endif // FORWARD_DECLS
|