MFC圆的画法解说

时间:2022-05-21 06:55:16 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
题目:5-315-33的综合题 思路:

1. 为程序添加主菜单(圆绘制(设置,颜色)并为之关联COvalView的函数。 2. 在资源中插入一个对话框IDD_DIALOGSET,添加按钮,并为控件关联相应的变量(UINT m_nRadius)关联一个类Set 3. 用到的函数: SetWindowText

函数功能:该函数改变指定窗口的标题栏的文本内容(如果窗口有标题栏)

BOOL SetWindowTextHWND hwndLPCTSTR lpString

参数:

hWnd:要改变文本内容的窗口或控件的句柄。

lpString指向一个空结束的字符串的指针,该字符串将作为窗口或控件的新文本。

返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。

变量的定义:

CSDIDrawView定义变量: protected:

CPoint m_ptOrigin;//鼠标的起始位置 bool m_bDragging;//拖拽标志 HCURSOR m_hCross;//光标句柄 鼠标的处理: SetCapture

函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。

函数原型:HWND SetCaptureHWND hwnd); 参数:

hWnd:当前线程里要捕获鼠标的窗口句柄。

返回值:返回值是上次捕获鼠标的窗口句柄。如果不存在那样的句柄,返回值是NULL

::SetCursor

函数功能:该函数确定光标的形状。

函数原型:HCURSOR SetCursorHCURSOR hCursor); AppendMenu

该函数在指定的菜单条、下拉式菜单、子菜单或快捷菜单的末尾追加一个新菜单项。此函数可指定菜单项的内容、外观和性能。函数AppendMenu




己被lnsertMenultem取代。但如果不需要lnsertMenultem的扩展特性,仍可使用AppendMenu TrackPopupMenu

函数功能:该函数在指定位置显示快捷菜单,并跟踪菜单项的选择。快捷菜单可出现在屏幕上的任何位置。 函数原型:BOOL TrackPopupMenuHMENU hMenuUINT uFlagsint xint yint nReservedHWND hWndCONST RECT* prcRect);

返回值:如果在参数uFlags里指定了TPM_RETURNCMD值,则返回值是用户选择的菜单项的标识符。如果用户未作选择就取消了菜单或发生了错误,则退回值是零。如果没在参数uFlags里指定TPM_RETURNCMD值,若函数调用成功,返回非零值,若函数调用失败,返回零。若想获得更多的错误信息,清调用GetLastError

void CSDIDrawView::OnLButtonDown(UINT nFlags, CPoint point) {

// TODO: Add your message handler code here and/or call default

SetCapture();

::SetCursor(m_hCross); m_ptOrigin=point;// m_bDragging=TRUE;

CView::OnLButtonDown(nFlags, point); }

void CSDIDrawView::OnRButtonUp(UINT nFlags, CPoint point) {

// TODO: Add your message handler code here and/or call default if(m_bDragging) { m_bDragging=false; ReleaseCapture(); }

CView::OnRButtonUp(nFlags, point); }

鼠标放开的处理:

void CSDIDrawView::OnSet() {

// TODO: Add your command handler code here CSet dlg;//定义一个对话框

dlg.m_nRadius=m_nCViewRadius;//设置编辑框显示的初值 if(dlg.DoModal()==IDOK) { m_nCViewRadius=dlg.m_nRadius;


}

}

Invalidate();



void CSDIDrawView::OnContextMenu(CWnd* pWnd, CPoint point) {

// TODO: Add your message handler code here CMenu menuPopup;//声明菜单对象

if(menuPopup.CreatePopupMenu())//创建一个弹出式菜单 { menuPopup.AppendMenu(MF_STRING,ID_SHOWTEXT,"\tCtrl+S"); menuPopup.AppendMenu(MF_STRING,ID_PICTURE,"画圆\tCtrl+P"); menuPopup.AppendMenu(MF_STRING,IDM_SET,"设置圆的半径"); menuPopup.TrackPopupMenu(TPM_LEFTBUTTON,point.x,point.y,this);//显示弹出式菜单 } }


本文来源:https://www.wddqw.com/doc/520df22ccfc789eb172dc811.html