>_<:这是给出窗口内外不同情况的处理展示的例子。

>_<:MouseCap.h

 #include<afxwin.h>
class CMyApp :public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWindow:public CFrameWnd
{
protected:
BOOL m_bTracking; //标志:鼠标按下为真,否则为假
BOOL m_bCaptureEndabled;//初始化为真,由OnNcLButtonDown()切换,以便用来打开或关闭鼠标捕获对程序影响
CPoint m_ptFrom;
CPoint m_ptTo; void InverLine(CDC* pDC,CPoint ptFrom,CPoint ptTo);
public:
CMainWindow();
protected:
afx_msg void OnLButtonDown(UINT nFlags,CPoint point);
afx_msg void OnLButtonUp(UINT nFlags,CPoint point);
afx_msg void OnMouseMove(UINT nFlags,CPoint point);
afx_msg void OnNcLButtonDown(UINT nHitTest,CPoint point);
DECLARE_MESSAGE_MAP();
};

>_<:MouceCap.cpp

 #include <afxwin.h>
#include "MouseCap.h" CMyApp myApp; BOOL CMyApp::InitInstance(){ m_pMainWnd=new CMainWindow;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
} BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_NCLBUTTONDOWN()
END_MESSAGE_MAP() CMainWindow::CMainWindow(){
m_bTracking = FALSE;
m_bCaptureEndabled=TRUE; CString strWndClass = AfxRegisterWndClass(
,
AfxGetApp()->LoadStandardCursor(IDC_CROSS),
(HBRUSH)(COLOR_WINDOW+),
AfxGetApp()->LoadStandardIcon(IDI_WINLOGO)
); Create(strWndClass,_T("捕获鼠标_橡皮筋操作"));
} void CMainWindow::OnLButtonDown(UINT nFlags,CPoint point){
m_ptFrom=point;
m_ptTo=point;
m_bTracking=TRUE; if(m_bCaptureEndabled)
SetCapture();
}
void CMainWindow::OnMouseMove(UINT nFlags,CPoint point){
if(m_bTracking){
CClientDC dc(this);
InverLine(&dc,m_ptFrom,m_ptTo);//清除原来的
InverLine(&dc,m_ptFrom,point);//画一条新的
m_ptTo=point;
}
}
void CMainWindow::OnLButtonUp(UINT nFlags,CPoint point){
if(m_bTracking){
m_bTracking=FALSE;
if(GetCapture()==this)
::ReleaseCapture(); CClientDC dc(this);
InverLine(&dc,m_ptFrom,m_ptTo);//清除原来的 CPen pen(PS_DASHDOTDOT,,RGB(,,));//画一条红的
dc.SelectObject(&pen); dc.MoveTo(m_ptFrom);
dc.LineTo(point);
}
}
//单击标题栏激活CFrameWnd::OnNcLButtonDown(nHitTest,point)处理程序
void CMainWindow::OnNcLButtonDown(UINT nHitTest,CPoint point){
if(nHitTest==HTCAPTION){
m_bCaptureEndabled=m_bCaptureEndabled ? FALSE:TRUE;
SetWindowText(m_bCaptureEndabled ?
_T("能够"):_T("不能"));
}
CFrameWnd::OnNcLButtonDown(nHitTest,point);
}
void CMainWindow::InverLine(CDC* pDC,CPoint ptFrom,CPoint ptTo){
int nOldMode=pDC->SetROP2(R2_NOT);//这种绘图模式保证一条清除一条新的
pDC->MoveTo(ptFrom);
pDC->LineTo(ptTo); pDC->SetROP2(nOldMode);
}

[游戏学习25] MFC 橡皮筋画线效果的更多相关文章

  1. 【MFC】画线

    1.DrawTestDlg.h afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT ...

  2. [游戏学习23] MFC 画尺子

    >_<:这是个简单的MFC程序,有利于了解MFC的框架结构 >_<:Ruler.h #include<afxwin.h> class CMyApp:public C ...

  3. [游戏学习26] MFC 时间函数 画图形

    >_<:这里第一次介绍MFC的时间函数,功能和Win32里的计时器类似. >_<:这里还介绍了MFC的图形绘制函数,和Win32有一点区别 >_<:ABC.h #d ...

  4. [游戏学习22] MFC 井字棋 双人对战

    >_<:太多啦,感觉用英语说的太慢啦,没想到一年做的东西竟然这么多.....接下来要加速啦! >_<:注意这里必须用MFC和前面的Win32不一样啦! >_<:这也 ...

  5. [游戏学习28] MFC 时钟

    >_<:这是一个时钟小程序 >_<:通过调用获得系统时间然后经过计算得出当前时间,然后再以3个圆环表示时分秒. >_<:TAO_CLOCK.h class CMyA ...

  6. [游戏学习24] MFC 各种绘图 字体学习

    >_<:这里包含字体设置及各种绘图,只要稍微看一下代码就能理解,这里不多介绍 >_<:Hello.h #include<afxwin.h> class CMyApp ...

  7. [游戏学习27] MFC 匀速运动

    >_<:理解上一个时间函数的概念和用法,本节的实现也比较简单 >_<:就是简单的绘图+时间函数 >_<:TicTac.h #define EX 1 //该点左鼠标 ...

  8. CSS实现:标题两侧画线效果

    如图: html代码: <div class="detail-news"> <h5 class="detail-news-title"> ...

  9. MFC画线功能总结

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6216464.html MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始 ...

随机推荐

  1. div一直浮动在页面的底部

    永远在底部是那种无论滚动条怎么拉,都可以看见悬浮在底部的那种,如果是那种,是用固定定位做的.另外注意页面中最后的元素或者body要空出固定条的高度,不然最后的元素会被遮挡. html: <div ...

  2. JS常见问题

    语法错误 由于编程语言中的语法比自然语言的语法要严格得多,因此在编写脚本时对细节应倍加关注.例如,如果您本意是将字符串作为某个参数,但是在键入时忘了使用引号引起来,就会产生问题. 脚本解释顺序 对 J ...

  3. 安装crab

    1. crab 介绍: Recommender systems in Python 官网介绍:http://muricoca.github.io/crab/ 在安装过程中,发现一个问题,我已经安装了A ...

  4. background-size的两个属性:cover和contain

    两种都不会造成图片失真,其中: (1)cover:相当于宽度等于元素的宽度,高度设为auto: (2)contain:相当于高度等于元素的高度,宽度设为auto: 例如:设置一个高度和宽度都为300p ...

  5. springMVC配置(XML配置详解)

    原文出自:http://www.newasp.net/tech/71609.html web.xml配置: servlet> <servlet-name>dispatcher< ...

  6. WPF错误:当前上下文中不存在名称“InitializeComponent”

    当修改一个View的名称为VCFCView.xaml的时候,一定要记得在内部x:Class也要修改为XXXX.VCFCView,否则会报错误(图三) 当前上下文中不存在名称"Initiali ...

  7. android开发学习---layout布局、显示单位和如何进行单元测试

    一.五大布局(layout) android中的用五大布局:LinearLayout (线性布局).AbsoluteLayout(绝对布局).RelativeLayout(相对布局).TableLay ...

  8. CXF 入门:创建一个基于WS-Security标准的安全验证(CXF回调函数使用,)

    http://jyao.iteye.com/blog/1346547 注意:以下客户端调用代码中获取服务端ws实例,都是通过CXF 入门: 远程接口调用方式实现 直入正题! 以下是服务端配置 ==== ...

  9. php中or的含义

    or其实是Php中的短路或 经常看到这样的语句: $file = fopen($filename, r) or die("抱歉,无法打开: $filename"); or在这里是这 ...

  10. Java如何将html转以后的字符转化成正常显示的字符

    String str = "“!@#¥%……&——+”";//“!@#¥%……&——+”  中文状态下的标点符号,进过html转换了 String convStr ...