本帖最后由 gaodj9999 于 2009-11-30 10:02:05 编辑

解决方案 »

  1.   

    BOOL CDataDlg::OnInitDialog() 
    {
       CDialog::OnInitDialog();
       
       // Initialize dialog controls
       SetDlgItemText(IDC_EDIT_NAME,"Type in text"); 
       SetDlgItemInt(IDC_EDIT_NUM, 100);
       return TRUE;  // return TRUE unless you set the focus to a control
    }
      

  2.   

    现在问题: 
    1,编译的时候,SetDlgItemText ("这里是按钮1");这句总报错 
    error C2660: 'SetDlgItemTextA' : function does not take 1 parameters 
      都给你报错了 'SetDlgItemText' 不能只带一个参数
      这种问题你查下MSDN就知道了
      

  3.   

    pWnd->SetDlgItemText ("这里是按钮1"); 
    变成
    pWnd->SetDlgItemText("这里是按钮1");你这里有个空格 
      

  4.   


    2,我调试时,改成这样了,SetDlgItemText (IDC_BUTTON_TEST,"这里是按钮1"); 
    但还是报错,总觉得好像GetDlgItem (IDC_BUTTON_TEST);就是个null,没有取道值,还是怎么的?请高手指教一下啊。。同理
      

  5.   


    我查过msdn了,所以改成了 问题2 里面说的情况了,结果运行时报错啊。。
      

  6.   

    你是在OnCreate函数里面调用的,而1楼是在OnInitDialog里面调用的.才会得到的结果不一样.
    OnCreate中你的控件IDC_BUTTON_TEST还没创建,所以得到的pWnd为NULL,但在OnInitDialog中它已经创建完毕了,可以使用,所以得到的pWnd不为NULL.
      

  7.   

    你这里pWnd已经是子控件的指针了,为什么还要SetDlgItemText呢,直接SetWindowText("这里是按钮1")就好了啊
      

  8.   

    int CAADialog::OnCreate(LPCREATESTRUCT lpCreateStruct) 

    if (CDialog::OnCreate(lpCreateStruct) == -1) 
    return -1; 
    AfxMessageBox ("Dialog创建成功"); // TODO: Add your specialized creation code here 
    //CWnd *pWnd; 
    //pWnd = GetDlgItem (IDC_BUTTON_TEST); 
    //pWnd->SetDlgItemText ("这里是按钮1"); 
    SetDlgItemText(IDC_BUTTON_TEST,"这里是按钮1");
    return 0; 
      

  9.   

    不过你最好是在初始化里面添加代码比较好因为OnCreate 要在对话框创建后才会调用的 你最好是在初始化里面对即将创建的对话框按钮进行初始化
    在OnInitDialog里面添加以下代码就行了SetDlgItemText(IDC_BUTTON_TEST,"这里是按钮1"); 
      

  10.   

    在Oncreate()里面你的EDIT控件还没有初建,操作一个还没有创建的对象的指针,当然会报错啦!
      

  11.   


    这跟在哪儿创建无关。关键是SetDlgItemText这个函数必须在对话框类中调用。