// { dg-do run }
// prms-id: 8155
int fail = 1;
class CMainWindow;
class CFrameWnd;
class CWnd;
class CCmdTarget;
typedef void (CCmdTarget::*AFX_PMSG)( void);
typedef void (CWnd::*AFX_PMSGW)( void);
struct AFX_MSGMAP_ENTRY {
unsigned int nMessage;
AFX_PMSG pfn;
};
struct AFX_MSGMAP {
const AFX_MSGMAP* pBaseMap;
const AFX_MSGMAP_ENTRY* lpEntries;
};
class CCmdTarget {
public:
CCmdTarget();
private:
static AFX_MSGMAP_ENTRY _messageEntries[];
protected:
static const AFX_MSGMAP messageMap;
virtual const AFX_MSGMAP* GetMessageMap() const;
};
const AFX_MSGMAP CCmdTarget::messageMap = {
0, &CCmdTarget::_messageEntries[0]
};
const AFX_MSGMAP* CCmdTarget::GetMessageMap() const {
return &CCmdTarget::messageMap;
}
AFX_MSGMAP_ENTRY CCmdTarget::_messageEntries[] =
{
{ 0, 0 }
};
CCmdTarget :: CCmdTarget() { }
class CWnd : public CCmdTarget {
public:
CWnd();
protected:
void OnPaint();
private:
static AFX_MSGMAP_ENTRY _messageEntries[];
protected:
static const AFX_MSGMAP messageMap;
virtual const AFX_MSGMAP* GetMessageMap() const;
};
CWnd :: CWnd() {
}
void CWnd :: OnPaint() {
}
const AFX_MSGMAP* CWnd ::GetMessageMap() const {
return & CWnd ::messageMap;
}
const AFX_MSGMAP CWnd ::messageMap = {
& CCmdTarget ::messageMap, & CWnd ::_messageEntries[0]
};
AFX_MSGMAP_ENTRY CWnd ::_messageEntries[] = {
{0, (AFX_PMSG)0 } };
class CFrameWnd : public CWnd {
public:
CFrameWnd();
protected:
private:
static AFX_MSGMAP_ENTRY _messageEntries[];
protected:
static const AFX_MSGMAP messageMap;
virtual const AFX_MSGMAP* GetMessageMap() const;
};
CFrameWnd :: CFrameWnd() { }
const AFX_MSGMAP* CFrameWnd ::GetMessageMap() const {
return & CFrameWnd ::messageMap;
}
const AFX_MSGMAP CFrameWnd ::messageMap = {
& CWnd ::messageMap, & CFrameWnd ::_messageEntries[0]
};
AFX_MSGMAP_ENTRY CFrameWnd ::_messageEntries[] = {
{0, (AFX_PMSG)0 } };
class CMainWindow : public CFrameWnd {
public:
CMainWindow();
void OnPaint();
void callProc();
private:
static AFX_MSGMAP_ENTRY _messageEntries[];
protected:
static const AFX_MSGMAP messageMap;
virtual const AFX_MSGMAP* GetMessageMap() const;
};
CMainWindow :: CMainWindow()
{
}
void CMainWindow :: OnPaint()
{
fail = 0;
}
void CMainWindow :: callProc()
{
const AFX_MSGMAP* pMessageMap;
const AFX_MSGMAP_ENTRY *lpEntry;
pMessageMap = GetMessageMap();
lpEntry = pMessageMap->lpEntries;
if( lpEntry->nMessage == 100) {
(this->*lpEntry->pfn)();
}
}
const AFX_MSGMAP* CMainWindow ::GetMessageMap() const {
return & CMainWindow ::messageMap;
}
const AFX_MSGMAP CMainWindow ::messageMap = {
& CFrameWnd ::messageMap, & CMainWindow ::_messageEntries[0]
};
AFX_MSGMAP_ENTRY CMainWindow ::_messageEntries[] = {
{ 100, (AFX_PMSG)(AFX_PMSGW)(void (CWnd::*)(void))&CMainWindow::OnPaint },
{0, (AFX_PMSG)0 }
};
int main( int argc, char **argv) {
CMainWindow myWindow;
myWindow.callProc();
return fail;
}