我做了一个编辑框的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.   


    GetClientRect(&rect); 看看这个值为多少在对话框::OnSize中 调用MoveWindow函数,设置Edit控件的大小
      

  2.   

    我好像回了这个问题了啊?!
    层次搞错了 你的控件里面加了一个Edit你想给这个Edit添加文字 而你这句GetDlgItem(IDC_EDITCTRL1)->SetWindowText(str);是给控件本身添加文字,
    你的控件可不是一个Edit了啊,所以不能这么用!你可以在写你的控件的时候给控件增加一个方法,要在ClassWizard的Animation选项卡里面添加接口,然后调用这个接口的方法来实现把文字赋值给控件内部的
    Edit。具体看孙鑫的教程,
    你要明白GetDlgItem(IDC_EDITCTRL1)得到的可是你的控件窗口指针。如果我想的没错的话 楼主没有搞清楚控件从CEdit继承和在控件中创建一个Edit之间有什么区别.