1。那个对话框创建在窗口左上角,为什么鼠标移动时对话框背面的主窗口的东西(菜单、图标)会显示出来?而且只要我双击那个对话框就会出错Assertion failure,调试break在ASSERT(m_hObject == NULL); // only attach once, detach on destroy我在view 类里建的对话框对象和响应函数2。我还有一个问题,我想在主窗口单击一行字后出现字体(只是那一段字,不是窗口所有字)被选中的效果,我用了RECT装字段,但是不知道怎么给RECT加背景颜色不知道我的问题说清楚了没有,那位大虾帮我解释一下,小辈不胜感激
2。处理WM_LBUTTDOWN消息,在指定的区域里重新刷新文本,指定一个背景色即可
1。我建的是MFC单文档功程,我的对话框就是在资源中加的。 我的想法是主窗口显示几段字,双击每段字都会跳出一个对话框,可以改变那段字的内容
用MYDialog dlg;dlg.Create(IDD MYDLG);建的对话框2。我的窗口不想让用户直接编辑,通过以上方式改变窗口显示的值
我想问一下可编辑和不可编辑窗口分别怎么创建?谢谢
1. dlg.create之后要dlg.ShowWindow(SW_SHOW);
2. MFC提供了一个editview可以实现文本编辑功能,当然如果你说你要自己编辑那也就用不到了。至于你说给rect加背景色
字你是怎么画的?
DrawText?
在绘制文本之前用FillRect即可
用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);