// 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 }
现在问题: 1,编译的时候,SetDlgItemText ("这里是按钮1");这句总报错 error C2660: 'SetDlgItemTextA' : function does not take 1 parameters 都给你报错了 'SetDlgItemText' 不能只带一个参数 这种问题你查下MSDN就知道了
{
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
}
1,编译的时候,SetDlgItemText ("这里是按钮1");这句总报错
error C2660: 'SetDlgItemTextA' : function does not take 1 parameters
都给你报错了 'SetDlgItemText' 不能只带一个参数
这种问题你查下MSDN就知道了
变成
pWnd->SetDlgItemText("这里是按钮1");你这里有个空格
2,我调试时,改成这样了,SetDlgItemText (IDC_BUTTON_TEST,"这里是按钮1");
但还是报错,总觉得好像GetDlgItem (IDC_BUTTON_TEST);就是个null,没有取道值,还是怎么的?请高手指教一下啊。。同理
我查过msdn了,所以改成了 问题2 里面说的情况了,结果运行时报错啊。。
OnCreate中你的控件IDC_BUTTON_TEST还没创建,所以得到的pWnd为NULL,但在OnInitDialog中它已经创建完毕了,可以使用,所以得到的pWnd不为NULL.
{
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;
}
在OnInitDialog里面添加以下代码就行了SetDlgItemText(IDC_BUTTON_TEST,"这里是按钮1");
这跟在哪儿创建无关。关键是SetDlgItemText这个函数必须在对话框类中调用。