MFC鼠标双击后创建对话框问题
1。那个对话框创建在窗口左上角,为什么鼠标移动时对话框背面的主窗口的东西(菜单、图标)会显示出来?
而且只要我双击那个对话框就会出错Assertion failure,调试break在ASSERT(m_hObject == NULL); // only attach once, detach on destroy
我在view 类里建的对话框对象和响应函数
2。我还有一个问题,我想在主窗口单击一行字后出现字体(只是那一段字,不是窗口所有字)被选中的效果,我用了RECT装字段,但是不知道怎么给RECT加背景颜色
不知道我的问题说清楚了没有,那位大虾帮我解释一下,小辈不胜感激
[解决办法]
[解决办法]
1。我建的是MFC单文档功程,我的对话框就是在资源中加的。
我的想法是主窗口显示几段字,双击每段字都会跳出一个对话框,可以改变那段字的内容
用MYDialog dlg;dlg.Create(IDD MYDLG);建的对话框
-----------------------------------------
处理WM_LBUTTON消息,PtInRect()如果点击是文字区域,弹出对话框,上面放一个编辑控件用来修改文本。
假设你的视图类名字为CMyView,伪代码如下:
- C/C++ code
//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);}