#pragma once
|
#include <functional>
|
|
|
#ifndef MAPPOSWND_TAG
|
|
#ifdef _WIN32
|
|
#define MAPPOSWND_CLASSA "MapPosWnd"
|
#define MAPPOSWND_CLASSW L"MapPosWnd"
|
|
#ifdef UNICODE
|
#define MAPPOSWND_CLASS MAPPOSWND_CLASSW
|
#else
|
#define MAPPOSWND_CLASS MAPPOSWND_CLASSA
|
#endif
|
|
#else
|
#define MAPPOSWND_CLASS "MapPosWnd"
|
#endif
|
|
|
#define MAPPOSWND_TAG _T("MAPPOSWND_TAG")
|
|
#define MAPPOSWND_FIRST (0U-5850U)
|
#define MAPPOSWND_LAST (0U-2810U)
|
#define MAPPOSWND_POSCHANGED (MAPPOSWND_FIRST - 1)
|
|
typedef struct tagMAPPOSWND_NMHDR
|
{
|
NMHDR nmhdr;
|
DWORD dwData;
|
DWORD dwData1;
|
DWORD dwData2;
|
} MAPPOSWND_NMHDR;
|
|
#endif
|
|
class CMapPosWnd
|
{
|
public:
|
CMapPosWnd();
|
~CMapPosWnd();
|
|
public:
|
static BOOL RegisterWndClass();
|
static CMapPosWnd * FromHandle(HWND hWnd);
|
void SetFrameColor(COLORREF color);
|
void SetBkgndColor(COLORREF color);
|
void SetWndMaxSize(int nMaxSize);
|
void SetStageSize(int cx, int cy, BOOL bInvalidata);
|
void SetViewPort(LPRECT lpRect, BOOL bInvalidata);
|
void GetViewPortRect(LPRECT lprcClient, LPRECT lprcDest);
|
|
private:
|
void Init();
|
void Notify(int nCode, int dwData, int dwData1 = 0, int dwData2 = 0);
|
void Release();
|
int HighTest(POINT pt);
|
static CMapPosWnd* Hook(HWND hWnd);
|
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
static LRESULT OnNcCreate(HWND hWnd, WPARAM wParam, LPARAM lParam);
|
LRESULT OnDestroy(WPARAM wParam, LPARAM lParam);
|
LRESULT OnTimer(WPARAM wParam, LPARAM lParam);
|
LRESULT OnNcPaint(WPARAM wParam, LPARAM lParam);
|
LRESULT OnPaint(WPARAM wParam, LPARAM lParam);
|
LRESULT OnMouseMove(WPARAM wParam, LPARAM lParam);
|
LRESULT OnLButtonDown(WPARAM wParam, LPARAM lParam);
|
LRESULT OnLButtonDblclk(WPARAM wParam, LPARAM lParam);
|
LRESULT OnMouseWheel(WPARAM wParam, LPARAM lParam);
|
LRESULT OnKeyDown(WPARAM wParam, LPARAM lParam);
|
LRESULT OnSize(WPARAM wParam, LPARAM lParam);
|
|
private:
|
HWND m_hWnd;
|
COLORREF m_crBkgnd;
|
COLORREF m_crFrame;
|
COLORREF m_crViewPort;
|
|
private:
|
int m_nWndMaxSize;
|
int m_nStageCx;
|
int m_nStageCy;
|
RECT m_rcViewPort;
|
};
|