我在子窗口中添加按钮,双击按钮添加消息处理函数时出现 Parsing error:Expected")." "Input Line:"DDX_Control(pDX,IDC_BUTTON_POSLIMIT1,m_IconDiPostlimit[0]);"错误。
.h中定义的变了为
class CGTS800DemoDlg : public CDialog
{
// Construction
public:
.......
private:
.......
CButton m_IconDiPosLimit[8];
// Dialog Data
//{{AFX_DATA(CGTS800DemoDlg)
enum { IDD = IDD_GTS800DEMO_DIALOG };

//}}AFX_DATA // ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CGTS800DemoDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL// Implementation
protected:
........cpp中定义的代码为:
/////////////////////////////////////////////////////////////////////////////
// CGTS800DemoDlg dialog
CGTS800DemoDlg::CGTS800DemoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGTS800DemoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CGTS800DemoDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
//m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CGTS800DemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGTS800DemoDlg)
DDX_Text(pDX,IDC_STATIC_TIPINFOR,m_sTipInfor);
DDX_Control(pDX, IDC_BUTTON_POSLIMIT1, m_IconDiPosLimit[0]);
DDX_Control(pDX, IDC_BUTTON_POSLIMIT2, m_IconDiPosLimit[1]);
DDX_Control(pDX, IDC_BUTTON_POSLIMIT3, m_IconDiPosLimit[2]);
DDX_Control(pDX, IDC_BUTTON_POSLIMIT4, m_IconDiPosLimit[3]);
DDX_Control(pDX, IDC_BUTTON_POSLIMIT5, m_IconDiPosLimit[4]);
DDX_Control(pDX, IDC_BUTTON_POSLIMIT6, m_IconDiPosLimit[5]);
DDX_Control(pDX, IDC_BUTTON_POSLIMIT7, m_IconDiPosLimit[6]);
DDX_Control(pDX, IDC_BUTTON_POSLIMIT8, m_IconDiPosLimit[7]);         .............
         //}}AFX_DATA_MAP
}
请高手帮忙解决一下,急!!!

解决方案 »

  1.   

    哈哈,问题已经解决了,把
    DDX_Text(pDX,IDC_STATIC_TIPINFOR,m_sTipInfor);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT1, m_IconDiPosLimit[0]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT2, m_IconDiPosLimit[1]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT3, m_IconDiPosLimit[2]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT4, m_IconDiPosLimit[3]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT5, m_IconDiPosLimit[4]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT6, m_IconDiPosLimit[5]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT7, m_IconDiPosLimit[6]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT8, m_IconDiPosLimit[7]);
    放到//}}AFX_DATA_MAP后面就可以了
      

  2.   

    改成这样:
    void CGTS800DemoDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CGTS800DemoDlg)
    DDX_Text(pDX,IDC_STATIC_TIPINFOR,m_sTipInfor);  .............
      //}}AFX_DATA_MAP
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT1, &m_IconDiPosLimit[0]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT2, &m_IconDiPosLimit[1]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT3, &m_IconDiPosLimit[2]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT4, &m_IconDiPosLimit[3]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT5, &m_IconDiPosLimit[4]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT6, &m_IconDiPosLimit[5]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT7, &m_IconDiPosLimit[6]);
    DDX_Control(pDX, IDC_BUTTON_POSLIMIT8, &m_IconDiPosLimit[7]);
    }
      

  3.   

    建议有问题多多查查msdn,大部分能找到基本解决思路.
      

  4.   

    教训是自己加的东西一定要放AFX注释外!
      

  5.   

    // 确保你的Button控件的ID连续
    void CXXXX::DoDataExchange(CDataExchange* pDX)
    {
     ....
     for(int i=0; i<sizeof(m_IconDiPosLimit)/sizeof(m_IconDiPosLimit[0]); i++)
     {
      DDX_Control(pDX, IDC_BUTTON_POSLIMIT1+i, m_IconDiPosLimit[i]);
     }
    }