📄 p8155.c
字号:
// { dg-do run }// prms-id: 8155int 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;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -