Files
mir_server/sdk/srvlib/include/ClassedWnd.h

103 lines
3.8 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _CLASSED_WINDOW_PROC_H_
#define _CLASSED_WINDOW_PROC_H_
/**
*
* WndProc函数来实现在类中的消息处理
* 线
*
*
* Windows窗口消息处理不支持分页处理穿
* MFC中
* map中map中查找窗口句柄对应的类
* map查找
* -
*
*
* VCL的分页化消息处理机制
*
*
* 使
* 1)WndProc以便完成消息处理
* 2)getClassedWndProc()
*
* 3)MyCreateWindowEx不要调用全局的CreateWindow或
* CreateWindowEx函数;
*/
namespace wylib
{
namespace window
{
#ifndef __GNUC__
// 此类仅限于Windows下使用
class CClassedWnd
{
public:
inline HWND getHwnd(){ return m_hWnd; }
/**
* WndProc函数便RegistClass或SetWindowLong中
*
* 使
*
*/
WNDPROC getClassedWndProc();
protected:
/**
*
*
*/
virtual LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
protected:
/**
* CreateWindowEx函数以便完成对窗口消息类化处理所必要的操作
*/
HWND MyCreateWindowEx(DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
);
private:
/**
*
*/
static CClassedWnd* CreationWnd;
static LRESULT APIENTRY InitClassedWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static LRESULT APIENTRY StaticWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, CClassedWnd *pWnd);
private:
HWND m_hWnd; //窗口句柄
WNDPROC m_pClassWndProcInst; //窗口消息类化处理实例
public:
CClassedWnd(void);
virtual ~CClassedWnd(void);
};
#endif
};
};
#endif