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

>_<: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. JStrom的zk数据

    /jstorm/masterlock 用于LeaderSelector的锁. /jstorm/master get /jstorm/master localhost.localdomain:7627 ...

  2. [vivado系列]设置Xilinx Documention Navigator

    版本:2015.1 ------------------------------------------ 这是一个很便利FPGA工程师的文档整理收纳神器. 针对个人使用上的习惯,进行简单的2项设置. ...

  3. 编程范式 episode3 and 4,5

    episode 3 --storage structure. ampersand operate with asterisk --library function episode 4 --generi ...

  4. 给pcm格式文件加wav文件头

    #include <stdlib.h>#include <stdio.h>#include <string.h>void main(){ //wav头的结构如下所示 ...

  5. 64 位 Ubuntu 下 android adb 不可用解决方法

    解决方案: 安装ia32-libs 在终端执行 sudo apt-get install ia32-libs 其间会提示所依赖的某些包不存在,直接 sudo apt-get 安装即可.

  6. Echarts x轴显示不全

    xAxis : [ { type : 'category', data : ['采矿业','制造业','电力热力燃气及水生产和供应业','建筑业'], axisTick: { alignWithLab ...

  7. flask--虚拟环境

    1.安装虚拟环境mosson@mosson:~$ sudo apt-get install virtualenv2.创建一个项目目录mosson@mosson:~$ mkdir myproject3. ...

  8. Oracle题目

    1. 创建一个函数fun_sal,该函数根据部门号获得该部门下所有员工的平均工资Create or replace function fun_sal(deptnos number)return var ...

  9. Windows下MongoDB环境搭建

    MongoDB下载 登录MongoDB官网:www.mongodb.org:点击[Download MongoDB]按钮,进入如下所示界面 选择目标操作系统及其版本,比如这里选择的是64位的Windo ...

  10. cell线条前后缩短

    [cell setSeparatorInset:UIEdgeInsetsMake(0, 20, 0, 20)];