Files
Client/Library/dxx8/samples/Multimedia/DirectInput/DIConfig/cdeviceview.h
LGram16 e067522598 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>
2025-11-29 16:24:34 +09:00

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