我做了一个编辑框的ocx,但在另一个程序的对话框中调用这个控件,却无法显示输出.请教各位前辈该怎么解决.控件代码为:CEdit* edit1;      //在Cedit1Ctrl的头文件中int Cedit1Ctrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1; // TODO:  在此添加您专用的创建代码
edit1=new CEdit; 
CRect   rect;   
GetClientRect(&rect); 
edit1->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER, 
        rect, this, 1); 
    edit1->ShowWindow(SW_SHOW); return 0;
}
然后在另一个对话框程序中调用这个ocx,在一个button的消息响应中添加了如下代码;void CffffDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString str="开始";
GetDlgItem(IDC_EDITCTRL1)->SetWindowText(str);    //IDC_EDITCTRL1为该ocx的ID号

}
本来期望能显示  开始  结果什么都不显示.

解决方案 »

  1.   

    层次上有问题!
    应该是这个层次:
    Dialog------>Cedit1Ctrl----------->edit1你在Dialog中使用GetDlgItem(IDC_EDITCTRL1)->SetWindowText(str);是给Cedit1Ctrl设定文字,而不是给它的下一级edit1所以 如果可以这样的话至少应该是这样:GetDlgItem(IDC_EDITCTRL1)->GetDlgItem(IDC_EDIT1)->SetWindowText(str);//IDC_EDIT1是你控件当中edit1的资源ID。但是用上面的方法恐怕不行。你既然是做了一个控件,那你就应该给控件添加一定的方法或属性 以及事件等,要想设定你控件当中Edit的显示文字,你最好是声明一个方法楼主制作控件的过程有点乱,具体的一下子说不明白 建议去看一下孙鑫教程第18课 ActiveX控件制作的相关内容 有视频的 迅雷下载即可。