MFC编程,在阿户表点击处创建一个文本框。在里面输入字符,文本框是透明的

解决方案 »

  1.   

    刚才些错了!
    MFC编程,在鼠标点击处创建一个文本框。在里面输入字符,文本框是透明的
      

  2.   

    动态生成控件就
    http://soft.yesky.com/SoftChannel/72342371928702976/20050310/1920322.shtml
    你要透明,这个应该是要重载一下cedit自己绘制一下吧。
      

  3.   

    你也可以不用动态创建文本框,一般的做法是,先创建一个文本框,不显示,然后在鼠标点击的地方,计算一个RECT,将文本框MOVEWINDOW到那个位置,显示出来。就可以了
      

  4.   

    有人给我让我这样做,但是显示不出来。谁能指点一下。谢谢!
    在view里声明两个变量
    CEdit m_edit;
    bool m_bCreate;//view的构造函数里
    m_bCreate = false;//然后在OnLButtonDown里
    if(!m_bCreate){
    m_edit.Create(WS_VISIBLE | WS_VISIBLE,CRect(point.x,point.y,point.x+50,point.y+20),AfxGetMainWnd(),251);
    m_edit.ShowWindow(SW_SHOW);
    m_bCreate = true;
    }
    else
    {
    m_edit.MoveWindow(CRect(point.x,point.y,point.x+50,point.y+20));
    }
    //以后点鼠标就把它显示出来
      

  5.   

    同意楼上,
    提前创建好文本框,.ShowWindow(SW_HIDE);
    需要的时候,.ShowWindow(SW_SHOW);
    并且移动到需要的位置,用.MoveWindow(...)
      

  6.   

    是不是你的point坐标不对,,你先写死看看,有可能一个是屏幕坐标,一个是客户区坐标
      

  7.   

    这段代码放到视图OnLButtonDown不太合理,应该放到,表的单击消息处理里面去
      

  8.   

    我刚才试了一下,问题出在m_edit.Create中,属性设的不对。
    m_edit->Create(WS_VISIBLE | WS_VISIBLE,
    CRect(point.x,point.y,point.x+50,point.y+20),AfxGetMainWnd(),251);m_edit->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
    CRect(point.x,point.y,point.x+50,point.y+20), AfxGetMainWnd(), 251);
    供参考。
      

  9.   

    我做出来了。是按我刚才发的代码改的是这样的:
    //在view里声明两个变量
      CEdit* m_pEdit;
      bool m_bCreate;
    //view的构造函数里
    m_bCreate = false;//Doc里声明一个变量
    CPoint m_point;//然后在OnLButtonDown里
    if(!m_bCreate)
    {
        m_pEdit=new CEdit() ;
        m_pEdit->Create(ES_AUTOVSCROLL | WS_CHILD   | WS_VISIBLE  | WS_BORDER ,CRect (point.x,point.y,point.x+50,point.y+20),this,251) ;
         CDrawDoc *p_Doc=GetDocument() ;
    //保存文本框的左上角点坐标
         p_Doc->m_point.x=point.x;
         p_Doc->m_point.y=point.y;
         m_pEdit->SetFocus() ;
         m_bCreate = true;
    }
    else 
    {
       CString strText ;
       m_pEdit->GetWindowText(strText) ;//保存文本框里的字符串
       CDrawDoc *p_Doc=GetDocument() ;
       CClientDC ClientDC(this);
       delete m_pEdit ;//销毁文本框
       ClientDC.TextOut(p_Doc->m_point.x,p_Doc->m_point.y,strText);//输出文本框的字符串
       m_bCreate = false;
    }