MFC怎么画直线啊

MFC怎么画直线啊,第1张

可以通过一个bool全局变量指示划线菜单项是否被选中,首先用类向导在view类中为划线菜单项添加消息响应函数,在该函数中为该全局变量赋值指示开始划线

可以这样赋值

m_bline=true

然后通过类向导向view类添加OnLButtonDown()函数以响应鼠标按下消息,该消息中首先判断m_bline是否为true,若为true,可通过一个全局CPoint变量记录鼠标按下的位置

OnLButtonUp(UINT,

CPoint

point)

{

if(m_bline)m_oripoint=point

}

相同方法添加OnLButtonUp()函数响应鼠标释放消息

if(m_bline)

{

ClientDC

dc(this)//获取设备描述表句柄

dc.MoveTo(m_oripoint)//画笔移动到第一点

dc.LineTo(point)//划线至第二点

}

MFC程序的文档类中定义了一个虚函数SetTitle,用于设置窗口标题的前半部分,如果只是要修改“无标题”部分,可以重载文档类的该函数。窗口标题的后半部分可以通过SetWindowText设置,也可以编辑字符串资源中的IDR_MAINFRAME字符串,将第一个/n之前的字符串替换掉即可,而如果你想把“无标题”部分除掉,则必须修该窗口的风格。

一、修改前半部分

1) 可以重载文档类的虚函数SetTitle

void CTestDoc::SetTitle(LPCTSTR lpszTitle){CDocument::SetTitle(L"你的标题")}也可以在 CTestDoc::OnNewDocument()中添加SetTitle(L"你的标题")

二、修改后半部分

1) 修改资源字符串:

将资源文件中的IDR_MAINFRAME修改为

修改此处/n/nChange/n/n/nChangeTitle.Document/nChange Document

资源字符串中各子串的含义可以参考:IDR_MAINFRAME字符串资源中各子串的含义

2) 使用框架窗口类的SetWindowText(L"你的标题"):

在应用程序类CTestApp::InitInstance()中调用如下语句

m_pMainWnd->SetWindowText(L"你的标题")

或者在其他地方用AfxGetMainWnd()->SetWindowText(L"你的标题")

3) 如果您想除掉标题中间的“-”,可以通过重CFramWnd类的OnUpdateFrameTitle函数,这个函数在VC提供的帮助文件中找不到,必须手工添加

virtual void OnUpdateFrameTitle(BOOL NaDa)

void CMainFrame::OnUpdateFrameTitle(BOOL NaDa){CString csAppName

csAppName.Format(AFX_IDS_APP_TITLE)

SetWindowText(csAppName)}此时显示的结果只有字符串资源AFX_IDS_APP_TITLE所定义的字符串

4) 是在CMainFrame的PreCreateWindow函数中修改窗口风格:

return CFrameWnd::PreCreateWindow(cs)}使用此方法,窗口的标题只显示IDR_MAINFRAME字符串中第一个/n之前的部分

void CBezierDlg::OnPaint()

{

    if (IsIconic())

    {

        CPaintDC dc(this) // 用于绘制的设备上下文

 

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0)

 

        // 使图标在工作区矩形中居中

        int cxIcon = GetSystemMetrics(SM_CXICON)

        int cyIcon = GetSystemMetrics(SM_CYICON)

        CRect rect

        GetClientRect(&rect)

        int x = (rect.Width() - cxIcon + 1) / 2

        int y = (rect.Height() - cyIcon + 1) / 2

 

        // 绘制图标

        dc.DrawIcon(x, y, m_hIcon)

    }

    else

    {

        CDialogEx::OnPaint()

    }

        //放在这里

        CDC *pDC

        pDC = m_picShow.GetDC()

        CPen Pen(PS_SOLID,2,RGB(0,255,0))

        CPen *oldPen = pDC->SelectObject(&Pen)

        pDC->MoveTo(500,100)

        pDC->LineTo(600,100)

        pDC->SelectObject(oldPen)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11397784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存