//resource.h
#define IDC_BUTTON_Finish               8888
//.h
afx_msg void OnBnClickedFinish();
//.cpp
ON_BN_CLICKED(IDC_BUTTON_Finish, &CCarInfoAdd::OnBnClickedFinish)OnInitDialog
{
    pAddBtn->Create (_T("ok"),WS_VISIBLE |WS_CHILD ,CRect(0,0,0,0),this,IDC_BUTTON_Finish); 
pAddBtn->SetParent(m_pEdit);
}
void CCarInfoAdd:: OnBnClickedFinish()
{
AfxMessageBox("OK");}
什么都有了,点按钮的时候就是没反应。
怎么回事啊,是 不是动态按钮不能在出示化的时候创建?

解决方案 »

  1.   

    m_pEdit是编辑框控件吗?把父窗口设置成对话框既this指针试一下
      

  2.   

    AfxMessageBox(_T("OK"),MB_OK);
    试试
      

  3.   


    这样可以,我要改为m_pEdit,也能执行,怎么办?
      

  4.   

    pAddBtn->SetParent(m_pEdit);
    通知消息是发给控件父窗口的,既然指定了控件的父窗口,就应该在该父窗口响应。
      

  5.   

    你不感觉矛盾吗?
    你把它设置成父窗口,事件响应确在父窗口的父窗口声明
    如果非想这么做也可以
    1.自己做一个CEdit 之后添加按钮,响应函数放在CEdit里
    2.自己做一个CEdit 之后添加按钮,响应函数父窗口里,CEdit检测到单击按钮操作给父窗口发送个消息
      

  6.   

    父窗口是这样创建的,我该怎么样响应啊,添加cedit的继承类,在继承类里响应按钮按下? m_pEdit->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE |WS_BORDER |ES_LEFT  |ES_WANTRETURN 
    , Rt
    , this
    , 1);
      

  7.   

    class CMyEdit : public CEdit//在你自己的类里添加按钮和你在对话框里动态创建按钮原理是一样的,只不过按钮的父窗口是编辑框
    {}
      

  8.   

    LZ,可以发给我看看吗?[email protected]
    我也是继承了CEdit,create了一个CButton
    但是死都不响应ON_BN_CLICKED(ID_BTN_OK,OnBtnClick)
    int CCeEditCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CEdit::OnCreate(lpCreateStruct) == -1)
    return -1; // TODO:  在此添加您专用的创建代码
    if(!m_pBtn){
    RECT rcEdit;
    this->GetRect(&rcEdit);
    rcEdit.left =rcEdit.right-20;
    rcEdit.top -= 1;
    DWORD dwStyle=BS_CENTER|WS_CHILD | WS_VISIBLE|BS_PUSHBUTTON;
    m_pBtn=new CButton;
    m_pBtn->Create(_T("..."),dwStyle,rcEdit,this,ID_BTN_OK);
    m_pBtn->SetParent(this);
    m_pBtn->ShowWindow(SW_SHOW); } return 0;
    }