AppWizard建立的应用程序,用visual editor添加控件,如button,checkbox等,这些新的对象为什么在代码里找不到??事件处理时只找到一个ID,而且处理代码也是它所在parent控件如window或dialog的方法,如果要访问这个加入的控件的属性,该如何引用到它呢?

解决方案 »

  1.   

    你可以在控件上按CTRL+左键双击,添加该控件的变量,让后在dialog或者别的要用的地方,直接引用变量,或者申明对象后,再用变量就可以了
      

  2.   

    thx,刚刚试过,再问一个问题,添加时选择category和value,以checkbox为例,如果我用value的话,就是一个BOOL型,这个一般有什么用,用category直接引用到对象好象更合理
      

  3.   

    你用Class Wizard把你想用的控件的ID和对话框的一个变量关联起来。然后操作变量就行了。
      

  4.   

    一种value就是直接对应变量为值,control就表示变量是控制类型
      

  5.   

    value 控制控件显示的值
    control 生成该控件类型的对象,对应一个控件
      

  6.   

    感谢各位,刚刚看MSDN的帮助时,讲如何手动添加一个控件,即不用visual editor我在一个自动生成的CMyDialog的声明里加入public的成员变量,CEdit m_edit,然后在BOOL CMyDlg::OnInitDialog()里创建该CEdit:CRect rect(20, 20, 80, 80);    m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
                 ES_AUTOHSCROLL | WS_BORDER, rect, this, ID_EXTRA_EDIT);
        m_edit.SetFocus();一个问题,Create的最后一个参数ID_EXTRA_EDIT如何指定??用visual editor可以指定该ID的,手动该如何处理??拜谢
      

  7.   

    标准控件直接放在.rc文件中就可以了,ID定义在resource.h中
      

  8.   

    感谢,是不是ID的值可以随便定义,我随便定义这个ID_EXTRA_EDIT为199,重新编译过rc就可以了ID的作用到底是什么??
      

  9.   

    CRect rect(20, 20, 80, 80);m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
                 ES_AUTOHSCROLL | WS_BORDER, rect, this, ID_EXTRA_EDIT);
    m_edit.SetFocus();CRect rect2(130, 150, 50, 30);
    m_checkbox.Create("Button", WS_CHILD | WS_VISIBLE | WS_BORDER | BS_CHECKBOX, rect2, this, ID_MY_CHECKBOX);
    m_checkbox.SetCheck(1);m_checkbox是一个CButton,但是在界面上却看不到它,CEdit可以看见,哪里有错吗?
      

  10.   

    CRect rect2(130, 150, 50, 30);  ------>  CRect rect2(50,30,130,150)
      

  11.   

    谢谢楼上,我误以为后面两个参数是width和height了还有一个不解的问题,我给这个CButton加了事件处理函数:void CFirstDlg::HandleCheckbox()
    {
        m_edit.SetWindowText("Click Checkbox");
    }再用ON_BN_CLICKED(ID_MY_CHECKBOX, HandleCheckbox)作映射,可是我点击了CButton后,应用程序就退出了......为什么会这样,拜谢!