#include <windows.h> struct MSGMAP_ENTRY1 { UINT nMessage; LONG (*pfn)(/*HWND, */UINT, WPARAM, LPARAM); }; #define dim(x) (sizeof(x) / sizeof(x[0])) LONG OnA(/*HWND hWnd,*/ UINT wMsg, UINT wParam, LONG lParam) { return 0; } LONG OnB(/*HWND hWnd, */UINT wMsg, UINT wParam, LONG lParam) { return 0; } struct MSGMAP_ENTRY1 _messageEntries1[] = { WM_CREATE,OnA, WM_PAINT,OnB }; int WndProc(/*HWND hWnd, */UINT message, WPARAM wParam, LPARAM lParam) { int i; for( i = 0; i < dim(_messageEntries1); i++) { if(message == _messageEntries1[i].nMessage) return ((*_messageEntries1[i].pfn)(/*hWnd,*/message,wParam,lParam)); } return 1; } int main() { WndProc(WM_CREATE,0,0); return 1; }