[游戏学习25] MFC 橡皮筋画线效果
>_<:这是给出窗口内外不同情况的处理展示的例子。

>_<: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 橡皮筋画线效果的更多相关文章
- 【MFC】画线
1.DrawTestDlg.h afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT ...
- [游戏学习23] MFC 画尺子
>_<:这是个简单的MFC程序,有利于了解MFC的框架结构 >_<:Ruler.h #include<afxwin.h> class CMyApp:public C ...
- [游戏学习26] MFC 时间函数 画图形
>_<:这里第一次介绍MFC的时间函数,功能和Win32里的计时器类似. >_<:这里还介绍了MFC的图形绘制函数,和Win32有一点区别 >_<:ABC.h #d ...
- [游戏学习22] MFC 井字棋 双人对战
>_<:太多啦,感觉用英语说的太慢啦,没想到一年做的东西竟然这么多.....接下来要加速啦! >_<:注意这里必须用MFC和前面的Win32不一样啦! >_<:这也 ...
- [游戏学习28] MFC 时钟
>_<:这是一个时钟小程序 >_<:通过调用获得系统时间然后经过计算得出当前时间,然后再以3个圆环表示时分秒. >_<:TAO_CLOCK.h class CMyA ...
- [游戏学习24] MFC 各种绘图 字体学习
>_<:这里包含字体设置及各种绘图,只要稍微看一下代码就能理解,这里不多介绍 >_<:Hello.h #include<afxwin.h> class CMyApp ...
- [游戏学习27] MFC 匀速运动
>_<:理解上一个时间函数的概念和用法,本节的实现也比较简单 >_<:就是简单的绘图+时间函数 >_<:TicTac.h #define EX 1 //该点左鼠标 ...
- CSS实现:标题两侧画线效果
如图: html代码: <div class="detail-news"> <h5 class="detail-news-title"> ...
- MFC画线功能总结
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6216464.html MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始 ...
随机推荐
- IE 下JS和CSS 阻塞后面内容总结
总结: 1. CSS 都是可以并行下载的. 2. IE6 和 IE7 JS 不能并行下载,CSS 和 JS 阻塞后面内容下载. 3. IE8 JS 还是会阻塞图片下载 开始改变加载模式, ...
- LESS与SASS的伯与仲
工作中用到了Bootstrap,涉及到了LESS,对其做了一个简单的了解,CSS的预处理器使用最广泛的就是LESS和Sass,都是努力把CSS武装成为开发语言,让它从简单的描述性语言过渡到具有程序式特 ...
- 关于 NPOI 报 Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV') 错误的解决办法
当看到这个错误的时候,网上搜索可以会有些说列数有限制之类的说法,这个说法是相对于 Office 2003 的,在 Office 2007 之前,最多只可以创建 列:在 Office 2007 之后, ...
- spi controller
http://blog.csdn.net/droidphone/article/details/24353293 http://www.china-cpu.com/supports/article/0 ...
- Spark-1.0.1 的make-distribution.sh编译、SBT编译、Maven编译 三种编译方法
fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3775343.html 本文编译方法所支持的hadoop环境是Hadoop-2.2.0, ...
- lucene prefixQuery
prefixQuery是lucene的一个前缀匹配的搜索功能,但是它的前缀匹配不是完全的前缀匹配,的query生成是:易* 但是能把所有带有易字的都搜到... 下面是实验:出现了交易...
- cadence学习之——原理图库的添加及器件的放置
画原理图,库是必不可少的,库有cadence自带的,也可以自己建自己的库,然后在画原理图工程时, 这些库都需要被添加进原理图工程才能使用. 1.库的添加 打开Place Part属性框,操作如下: ( ...
- linux磁盘与文件系统的管理
本文涉及命令:dumpe2fs.df.du.fdisk.mkfs.mke2fs.fsck.badblocks.mount.umount.e2label.tune2fs.hdparm.parted 概念 ...
- 使用 python 操作 redis
1.安装pyredis (1)使用 # easy_install redis (2)直接编译安装 #wget https://pypi.python.org/packages/source/r/red ...
- jQuery Mobile 过渡效果
jQuery Mobile 包含了允许您选择页面打开方式的 CSS 效果. jQuery Mobile 过渡效果 jQuery Mobile 拥有一系列关于如何从一页过渡到下一页的效果. 注释:如需实 ...