1。那个对话框创建在窗口左上角,为什么鼠标移动时对话框背面的主窗口的东西(菜单、图标)会显示出来?而且只要我双击那个对话框就会出错Assertion failure,调试break在ASSERT(m_hObject == NULL);      // only attach once, detach on destroy我在view 类里建的对话框对象和响应函数2。我还有一个问题,我想在主窗口单击一行字后出现字体(只是那一段字,不是窗口所有字)被选中的效果,我用了RECT装字段,但是不知道怎么给RECT加背景颜色不知道我的问题说清楚了没有,那位大虾帮我解释一下,小辈不胜感激

解决方案 »

  1.   

    1。完全靠猜想
    2。处理WM_LBUTTDOWN消息,在指定的区域里重新刷新文本,指定一个背景色即可
      

  2.   

    回一楼:
    1。我建的是MFC单文档功程,我的对话框就是在资源中加的。   我的想法是主窗口显示几段字,双击每段字都会跳出一个对话框,可以改变那段字的内容
       用MYDialog dlg;dlg.Create(IDD MYDLG);建的对话框2。我的窗口不想让用户直接编辑,通过以上方式改变窗口显示的值
       我想问一下可编辑和不可编辑窗口分别怎么创建?谢谢
      

  3.   


    1. dlg.create之后要dlg.ShowWindow(SW_SHOW);
    2. MFC提供了一个editview可以实现文本编辑功能,当然如果你说你要自己编辑那也就用不到了。至于你说给rect加背景色
    字你是怎么画的?
    DrawText?
    在绘制文本之前用FillRect即可
      

  4.   

    1。我建的是MFC单文档功程,我的对话框就是在资源中加的。  我的想法是主窗口显示几段字,双击每段字都会跳出一个对话框,可以改变那段字的内容
      用MYDialog dlg;dlg.Create(IDD MYDLG);建的对话框
    -----------------------------------------------------------------------------
    处理WM_LBUTTON消息,PtInRect()如果点击是文字区域,弹出对话框,上面放一个编辑控件用来修改文本。
    假设你的视图类名字为CMyView,伪代码如下:
    //MYDialog .H文件
    class CMyView;
    class MYDialog : public CDialog
    {
     ...
    public:
     MYDialog(CString strText, CWnd* pParent = NULL);
    private:
     CString m_strText;
     CMyView* m_pView;
    ...
    }//MYDialog .CPP文件
    #include "MyView.h"
    MYDialog::MYDialog(CString strText, CWnd* pParent) : CDilalog(...)
    {
     m_strText = strText;
     m_pView = (CMyView*)pParent;
    }
    // OnInitDialog函数
    BOOL MYDialog::OnInitDialog()
    {
     CDialog::OnInitDialog();
     ...
     SetDlgItemText(IDC_EDIT1, m_strText1);
     ...
     return TRUE;
    }// 在EDIT框中修改文字之后,按OK改变界面上的文字
    BOOL MYDiloag::OnClickButtonOK()
    {
     GetDlgItemText(IDC_EDIT1, m_strText); // 得到修改后的文本信息
     m_pView->SetDrawText(m_strText);// 修改视图类中保存文本信息
     CDialog::OnOK();
    }CMyView类 .H文件中
    class CMyView : public CView
    {
     ...
    public:
     void SetDrawText(CString strText);
    private:
     CString m_strText; //显示在界面上的文字
     ...
    }
    CMyView类 .CPP文件中
    void CMyView::SetDrawText(CString strText)
    {
     m_strText = strText;
     Invalidate();
    }void CMyView::OnDraw(CDC* pDC)
    {
     
     CRect rect;
     GetClientRect(&rect);
     pDC->DrawText(m_strText, &rect, DT_CENTER|DT_VCENTER);
    }2。我的窗口不想让用户直接编辑,通过以上方式改变窗口显示的值
      我想问一下可编辑和不可编辑窗口分别怎么创建?谢谢
    -----------------------------------------------------
    EnableWindow(FALSE);