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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值