1 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
有時(shí)候在給程序的類添加消息響應(yīng)或者虛函數(shù)的時(shí)候,會(huì)彈出“Parsing error:Expected "afx_msg",input line.......”
//{{AFX_MSG(CMyimageDoc)
public:
afx_msg void OnStart();
afx_msg void Onsavefile();
afx_msg void OnStop();
protected:
afx_msg void OnFileSaveAs();
afx_msg void OnFileSave();
afx_msg void OnOriginalimage();
afx_msg void Onopenfile();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
如果你想給CMyimageDoc類添加虛函數(shù)或者消息響應(yīng)的話就會(huì)彈出"Parsing error:......",你打開ClassWizard也會(huì)彈出這種錯(cuò)誤。如果你在View類里打開的ClassWizard彈出這種錯(cuò)誤的話,需要查找到底是哪個(gè)類中出現(xiàn)了問題,只需要再?zèng)]個(gè)類中點(diǎn)右鍵添加虛函數(shù)(或者消息響應(yīng))就能查找出來大地哪兒出現(xiàn)了問題。本例然后再需要改成
public:
//{{AFX_MSG(CLock_imageDoc)
afx_msg void OnStart();
afx_msg void Onsavefile();
afx_msg void OnStop();
afx_msg void OnFileSaveAs();
afx_msg void OnFileSave();
afx_msg void OnOriginalimage();
afx_msg void Onopenfile();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
再添加的話就會(huì)沒問題了。ClassWizard也能順利打開了。
還有一種是自己添加的消息,如
public:
//{{AFX_MSG(CLock_imageDoc)
afx_msg void OnStart();
afx_msg void Onsavefile();
afx_msg void OnStop();
afx_msg void OnFileSaveAs();
afx_msg void OnFileSave();
afx_msg void OnOriginalimage();
afx_msg void Onopenfile();
afx_msg void OnmyMessage(); ///////////自己添加的消息對(duì)應(yīng)的消息響應(yīng)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
此時(shí)的ClassWizard也會(huì)彈出"Parsing error:......",此時(shí)值需要改成
public:
//{{AFX_MSG(CLock_imageDoc)
afx_msg void OnStart();
afx_msg void Onsavefile();
afx_msg void OnStop();
afx_msg void OnFileSaveAs();
afx_msg void OnFileSave();
afx_msg void OnOriginalimage();
afx_msg void Onopenfile();
//}}AFX_MSG
afx_msg void OnmyMessage(); ///////////自己添加的消息對(duì)應(yīng)的消息響應(yīng)(放在//}}AFX_MSG的外面才行)
DECLARE_MESSAGE_MAP()
這樣就不會(huì)出問題了。
MFC中有一種特殊的注釋,叫注釋宏。注釋宏一般由VC自動(dòng)加入到你的代碼中。它是為class wizard服務(wù)的,class wizard通過它來定位各種系統(tǒng)自動(dòng)添加代碼的添加位置。若要使用類向?qū)砑映蓡T變量和成員函數(shù),則要保留注釋宏;否則,必須手動(dòng)添加。如果你把它刪了,classwizad就不能自動(dòng)生成代碼了 。 你添加消息響應(yīng)的時(shí)候是不是發(fā)現(xiàn)源代碼里多了些代碼??那些代碼為什么會(huì)在那里出現(xiàn)?為什么不在別的文件里出現(xiàn)?就是因?yàn)槟抢镉凶⑨尯晁獙⒋a生成在相應(yīng)注釋宏之間 。 (這個(gè)注釋是讓ClassWizard能夠分辨出哪些代碼是它生成的,哪些是你自己寫的。你自己寫的代碼要在這個(gè)注釋之外,這樣ClassWizard再修改消息映射的時(shí)候就不會(huì)管你的代碼了。新版本vc(vs)已經(jīng)沒有注釋宏了。)
- 1 回答
- 0 關(guān)注
- 131 瀏覽
添加回答
舉報(bào)