欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一种函数指针的运用

程序员文章站 2022-06-10 12:42:27
...

定义一个结构体,称之为消息

//定义一种结构体,即消息
struct MSGMAP_ENTRY 
{
	UINT nMessage;
	LONG(*pfn)(HWND, UINT, WPARAM, LPARAM);

};

定义函数指针数组

//消息与处理例程的对照表
struct MSGMAP_ENTRY _messageEntries[] =
{
	WM_CREATE, OnCreate,
	WM_PAINT,OnPaint,
	WM_SIZE,OnSize,
	WM_COMMAND,OnCommand,
	WM_SETFOCUS,OnSetFocus,

};

调用

#define dim(x) (sizeof(x)/sizeof(x[0])) //计算数组的大小


//处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int i;
	for (size_t i = 0; i < dim(_messageEntries); i++)
	{
		if (message == _messageEntries[i].nMessage)
		{
			(*_messageEntries[i].pfn)(hWnd, message, wParam, lParam);
		}
	}
}

 

相关标签: C++