主题:怎样给一个子菜单的索引添加Check??就是一个小对号
我想实现的就是。
我在MainFrame中增加了一个子菜单,绘图。下面有四个选项,点,直线,椭圆,矩形,然后我选择了之后,就在View中画出所要的图形,但是我这个实现了,但是,怎么实现对我选了点,然后会有一个小对号在 点上面?然后我选择了椭圆,那么椭圆会有小对号,但是点的就消失?????
我的代码。
void COpenWView::OnPoint()
{
m_nDrawType=1;
SendMessage(UM_POINT);
//pCmdU->SetCheck();
// A menu item can be replaced with a control-bar button or other command user-interface object without changing the code within the ON_UPDATE_COMMAND_UI handler.
// TODO: Add your command handler code here
}
void COpenWView::OnLine()
{ m_nDrawType=2;
// TODO: Add your command handler code here
}
void COpenWView::OnJunjle()
{m_nDrawType=3; // 设置索引
// TODO: Add your command handler code here
}
void COpenWView::OnArea()
{
m_nDrawType=4;
// TODO: Add your command handler code here
}
void COpenWView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_cPoint=point; // 记录原来的地址
CView::OnLButtonDown(nFlags, point);
}
void COpenWView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
CPen pen(PS_DASHDOT|PS_GEOMETRIC,1,RGB(0,22,2)),*open;
open=dc.SelectObject(&pen);
// 创建一个透明画刷,把这个图形的线条为透明
//CBrush *pbrush=CBrush::FromHandle(( HBRUSH )GetStockObject(NULL_BRUSH));
// 作用在于把一个句柄换成一个指针
CBrush* pbrush=new CBrush,*obr=new CBrush; // 记住要分配空间的。不然会导致错误的不能为read
pbrush->CreateSysColorBrush(HS_DIAGCROSS);
obr=dc.SelectObject(pbrush);
switch(m_nDrawType)
{
case 1: dc.SetPixel(point,RGB(255,0,0)); ///实现相应的画图功能。
break;
case 2:dc.MoveTo(m_cPoint);
dc.LineTo(point);
break;
case 3: dc.Rectangle(CRect(m_cPoint,point));
break;
case 4:dc.Ellipse(CRect(m_cPoint,point));
break;
default :break;
}
dc.SelectObject(open);
dc.SelectObject(obr);
CView::OnLButtonUp(nFlags, point);
}
但是,我通过为这个四个选项增加命令更新函数,,但是,我看到不能为为他们增加成员变量。。
而且 SetCheck()里面的参数是固定的。不能动态的改变。。。q
我用在Frame增加一个手动更新但是老是不能为read。代码如图
void CMainFrame::OnPoint()
{
GetMenu()->GetSubMenu(4)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);
// TODO: Add your command handler code here
}
我在MainFrame中增加了一个子菜单,绘图。下面有四个选项,点,直线,椭圆,矩形,然后我选择了之后,就在View中画出所要的图形,但是我这个实现了,但是,怎么实现对我选了点,然后会有一个小对号在 点上面?然后我选择了椭圆,那么椭圆会有小对号,但是点的就消失?????
我的代码。
void COpenWView::OnPoint()
{
m_nDrawType=1;
SendMessage(UM_POINT);
//pCmdU->SetCheck();
// A menu item can be replaced with a control-bar button or other command user-interface object without changing the code within the ON_UPDATE_COMMAND_UI handler.
// TODO: Add your command handler code here
}
void COpenWView::OnLine()
{ m_nDrawType=2;
// TODO: Add your command handler code here
}
void COpenWView::OnJunjle()
{m_nDrawType=3; // 设置索引
// TODO: Add your command handler code here
}
void COpenWView::OnArea()
{
m_nDrawType=4;
// TODO: Add your command handler code here
}
void COpenWView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_cPoint=point; // 记录原来的地址
CView::OnLButtonDown(nFlags, point);
}
void COpenWView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
CPen pen(PS_DASHDOT|PS_GEOMETRIC,1,RGB(0,22,2)),*open;
open=dc.SelectObject(&pen);
// 创建一个透明画刷,把这个图形的线条为透明
//CBrush *pbrush=CBrush::FromHandle(( HBRUSH )GetStockObject(NULL_BRUSH));
// 作用在于把一个句柄换成一个指针
CBrush* pbrush=new CBrush,*obr=new CBrush; // 记住要分配空间的。不然会导致错误的不能为read
pbrush->CreateSysColorBrush(HS_DIAGCROSS);
obr=dc.SelectObject(pbrush);
switch(m_nDrawType)
{
case 1: dc.SetPixel(point,RGB(255,0,0)); ///实现相应的画图功能。
break;
case 2:dc.MoveTo(m_cPoint);
dc.LineTo(point);
break;
case 3: dc.Rectangle(CRect(m_cPoint,point));
break;
case 4:dc.Ellipse(CRect(m_cPoint,point));
break;
default :break;
}
dc.SelectObject(open);
dc.SelectObject(obr);
CView::OnLButtonUp(nFlags, point);
}
但是,我通过为这个四个选项增加命令更新函数,,但是,我看到不能为为他们增加成员变量。。
而且 SetCheck()里面的参数是固定的。不能动态的改变。。。q
我用在Frame增加一个手动更新但是老是不能为read。代码如图
void CMainFrame::OnPoint()
{
GetMenu()->GetSubMenu(4)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);
// TODO: Add your command handler code here
}