您的位置:首页 > 其它

关于MFC控件变量错误的处理

2008-06-24 15:44 441 查看
MFC 常常会莫名地出现一些奇怪的问题。例如,在一个基于对话框的程序中,往对话框面板拖了几个Static文本控件,并为这几个控件 添加Static变量,然后派生一个Static类(CDrawStatic),手动将静态文本控件变量类型改为CDrawStatic并将旧的信息注释掉,代码如下:

//{{AFX_DATA(CLearnBetterPlayDlg) enum { IDD = IDD_LEARNBETTERPLAY_DIALOG }; /*CStatic m_ctrDrawRectangle; CStatic m_ctrPptNo; CStatic m_ctrPptName; CStatic m_ctrAnswerThemeTimer;*/ CDrawStatic m_ctrDrawRectangle; CDrawStatic m_ctrPptNo; CDrawStatic m_ctrPptName; CDrawStatic m_ctrAnswerThemeTimer; //}}AFX_DATA

当按Ctrl+W时却弹出一个错误警告对话框,显示如下信息: “Parsing error: Expected end-of-line Input line:"CStatic m_ctrlAnswerThemeTimer;*/" 紧接着还有一个"无法添成员"的对话框。 再打开 View->ClassWizard,发现又弹出一个错误对话框,显示的内容跟第一个错误对话框的内容一样。 按照网上流行的方法,把 .clw 文件和 .ncb 文件删除,然后重新生成,可是发现问题依旧。 出现这种情况多半是由于破坏了 MFC 自动生成的代码。MFC 自动生成的代码里,不仅那些蓝的、灰的语句有价值,连某些绿色的注释也是不动产。这些奇奇怪怪的注释信息,是 MFC 进行类信息解析时要用到的,改变这些注释或者注释之间的内容可能会导致解析错误。 将注释/**/去掉换成//,代码如下:

// Dialog Data //{{AFX_DATA(CLearnBetterPlayDlg) enum { IDD = IDD_LEARNBETTERPLAY_DIALOG }; //CStatic m_ctrDrawRectangle; //CStatic m_ctrPptNo; //CStatic m_ctrPptName; //CStatic m_ctrAnswerThemeTimer; CDrawStatic m_ctrDrawRectangle; CDrawStatic m_ctrPptNo; CDrawStatic m_ctrPptName; CDrawStatic m_ctrAnswerThemeTimer; CWebBrowser2 m_ctrIE; //Web控件 //}}AFX_DATA

问题解决了。

更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐