如何按下Ctrl,选种几个图元 如何按下Ctrl,选种几个图元,就是我在视图中画几个文本框,如何按下Ctrl键,全部选种它们我只知道用鼠标事件,具体的我不太清楚,最好给个列子if ((nFlags & MK_CONTROL) != 0) { } 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为每个图元增加选中标记。以及选择函数。当鼠标按下时,判断鼠标点是否在该图元的范围内,如果在,则将选中标记设置为true。然后调用重画,对所有图元,如果选中标记为true,则需要绘制选中标记。 For example:void CSelectTool::OnLButtonDown(CMapDrawerView* pView, UINT nFlags, const CPoint& point){ CMapItem* pObj; selectMode = none; // Check for resizing (only allowed on single selections) Point3D localF((long double)point.x,(long double)point.y); pView->ClientToDoc(localF); if (pView->m_selection.GetCount() == 1) { pObj = pView->m_selection.GetHead(); nDragHandle = pObj->HitTest(localF, pView, TRUE); if (nDragHandle != 0) selectMode = size; else if ((nFlags & MK_SHIFT) == 0) pView->Deselect(pObj); } Graphics graphics(theApp.m_dcScreen.m_hDC); // See if the click was on an object, select and start move if so if (selectMode == none) { pObj = pView->GetDocument()->ObjectAt(localF,&graphics); if (pObj != NULL) { selectMode = move; pObj->m_bSelected = TRUE; if (!pView->IsSelected(pObj)) pView->Select(pObj, (nFlags & MK_SHIFT) != 0); // Ctrl+Click clones the selection... if ((nFlags & MK_CONTROL) != 0) pView->CloneSelection(); } } graphics.ReleaseHDC(theApp.m_dcScreen.m_hDC); // Click on background, start a net-selection if (selectMode == none) { if ((nFlags & MK_SHIFT) == 0) pView->Select(NULL); selectMode = netSelect; CClientDC dc(pView); CRect rect(point.x, point.y, point.x, point.y); rect.NormalizeRect(); dc.DrawFocusRect(rect); } lastPoint = localF; CDrawTool::OnLButtonDown(pView, nFlags, point);} 迅雷的FLV视频是怎么实现的? 如何实现QQ自动填充用户名和密码,并自动登录? 能否自定义vs2005界面? 调用API:SHBrowseForFolder()选择文件夹总是报错,为什么? 有关Lib冲突问题 activex控件的窗口 用MP3PLAY.OCX时怎样知道它是否正在播放?和怎样让SLIDER随它的播放自动滚动? 如何制造安装盘,如何制造安装程序?请指教 有人在MFC Appwizard(DLL)中用过数据库吗?有问题请教 HWND究竟是个指针还是整形量? 有没有济南的朋友?技术交流群:6049154 初学网络,有几个地方不明白,请高人指点一下~~~
void CSelectTool::OnLButtonDown(CMapDrawerView* pView, UINT nFlags, const CPoint& point)
{
CMapItem* pObj;
selectMode = none; // Check for resizing (only allowed on single selections)
Point3D localF((long double)point.x,(long double)point.y);
pView->ClientToDoc(localF);
if (pView->m_selection.GetCount() == 1)
{
pObj = pView->m_selection.GetHead();
nDragHandle = pObj->HitTest(localF, pView, TRUE);
if (nDragHandle != 0)
selectMode = size;
else if ((nFlags & MK_SHIFT) == 0)
pView->Deselect(pObj);
}
Graphics graphics(theApp.m_dcScreen.m_hDC); // See if the click was on an object, select and start move if so
if (selectMode == none)
{
pObj = pView->GetDocument()->ObjectAt(localF,&graphics); if (pObj != NULL)
{
selectMode = move;
pObj->m_bSelected = TRUE;
if (!pView->IsSelected(pObj))
pView->Select(pObj, (nFlags & MK_SHIFT) != 0); // Ctrl+Click clones the selection...
if ((nFlags & MK_CONTROL) != 0)
pView->CloneSelection();
}
} graphics.ReleaseHDC(theApp.m_dcScreen.m_hDC);
// Click on background, start a net-selection
if (selectMode == none)
{
if ((nFlags & MK_SHIFT) == 0)
pView->Select(NULL); selectMode = netSelect; CClientDC dc(pView);
CRect rect(point.x, point.y, point.x, point.y);
rect.NormalizeRect();
dc.DrawFocusRect(rect);
} lastPoint = localF;
CDrawTool::OnLButtonDown(pView, nFlags, point);
}