VC++50个必做例子之鼠标划线

2016-02-19 21:07 49 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享VC++50个必做例子之鼠标划线,希望可以对大家能有小小的帮助。

【 tulaoshi.com - 编程语言 】

在视图类开头定义

class CMouseView : public CView
{
protected: // create from serialization only
    CMouseView();
    DECLARE_DYNCREATE(CMouseView)
// my add
    CString m_ClassName;
    int m_Dragging;  //鼠标状态
    HCURSOR m_HCross; //鼠标形状
    CPoint m_PointOld; //鼠标的初始地点
    CPoint m_pointOrigin; //鼠标原点
在构造函数中对

CMouseView::CMouseView()
{
    // TODO: add construction code here
    m_Dragging=0; //鼠标的状态为0,没有按下,1为按下
    m_HCross = AfxGetApp()-LoadStandardCursor(IDC_CROSS); //获得鼠标的形状赋值

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

m_HCross 存放程序的光标句柄,AfxGetApp()获得应用程序类对象的指针,这个指针用于调用应用程序类对象的成员函数LoadStandardCursor()传送光标的句柄。光标句柄参数参考LoadStandardCursor()函数

添加一个鼠标的lbuttondown 消息,然后添加代码,(晕,书是用vc++7.0,看来很多东西以后要自己想了)

(cheat---遇到困难了吗,祝贺你,你获得了进步的机会~)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

 添加

void CMouseView::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default
    m_pointOrigin = point; //用鼠标的坐标的赋值
    m_PointOld = point; /用鼠标的坐标的赋值
    SetCapture();  //捕获鼠标
    m_Dragging = 1; //设置鼠标状态

    RECT Rect; //定义窗口范围
    GetClientRect(&Rect); //获得客户区的范围
    ClientToScreen(&Rect); //转换为屏幕坐标
    ::ClipCursor(&Rect); // 限定鼠标范围
 

添加鼠标移动,消息

 

void CMouseView::OnMouseMove(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default
    ::SetCursor(m_HCross); //显示鼠标形状
   

    if(m_Dragging)
    {
        CClientDC ClientDC(this);  //获得视窗设备表述表
        ClientDC.SetROP2(R2_NOT);//生成逆转当前屏幕颜色来绘图方式,
        ClientDC.MoveTo(m_pointOrigin);//画
        ClientDC.LineTo(m_PointOld);//画起点--终点线
        ClientDC.MoveTo(m_pointOrigin);
        ClientDC.LineTo(m_PointOld);

        m_pointOrigin = point;

    }
   
    CView::OnMouseMove(nFlags, point);
}
添加鼠标up消息

 

void CMouseView::OnLButtonUp(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default
    if(m_Dragging)
    {
       m_Dragging = 0;
       ::ReleaseCapture();
       ::ClipCursor(NULL);

        CClientDC ClientDC(this);
        ClientDC.SetROP2(R2_NOT);
           ClientDC.MoveTo(m_pointOrigin);
        ClientDC.LineTo(m_PointOld);
        ClientDC.SetROP2(R2_COPYPEN);
        ClientDC.MoveTo(m_pointOrigin);
        ClientDC.LineTo(m_PointOld);
    }
    CView::OnLButtonUp(nFlags, point);
}

来源:http://www.tulaoshi.com/n/20160219/1625307.html

延伸阅读
标签: 孕前检查
高龄女人必做的孕前检查项目有哪些  生活中在孕前准备中,高龄女人必做的孕前检查项目是非常重要的,这检查对于宝宝出生后能否健康成长很重要。孕期检查也让高龄女人了解了自己身体状况,及时发现疾病,及时医治,从而为健康怀孕打下坚实的身体根底。那么,高龄女人必做的孕前检查项目有哪些呢? 下面是小编我整理的关于高龄女人必...
美拍喜欢50个视频的任务怎么做   美拍喜欢视频其实就是为视频点赞,点赞视频的数量达到50个,即可体验60秒短视频,接下来,小编来告诉大家如何为自己喜欢的视频点赞。 1、当你将美拍更新至最新版本以后,也就是内测版本,进入美拍点击首页,如图; 2、在首页热门视频当中,随便观看一段视频; 3、在视频下方小桃心...
前几天看一网友关于 按键精灵 的讨论。 其实质是控制鼠标进行模仿动作。现给出主要实现代码及工作结构。但仅适合Win32编程初学者,高手就不用进了。 LRESULT APIENTRY WndProc(HWND, UINT, WPARAM, LPARAM); //窗口函数 BOOL ckzc(HINSTANCE); //注册窗口类函数 BOOL ckcj(HINSTANCE, int); //创建窗口函数 HINSTANCE hInst; //当前句...
标签: ASP
<%''本程序文件名为:Pages.asp% <%''包含ADO常量表文件adovbs.inc,可从"\Program Files\Common Files\System\ADO"目录下拷贝% <!--#Include File="adovbs.inc"-- <%''*建立数据库连接,这里是Oracle8.05数据库 Set conn=Server.CreateObject("ADODB.Connection") conn.Open "Provider=msdaora.1;Data Source=YourSrcName;User ...
标签: 怀孕
如何生个健康的小宝宝,专家说,生育健康的宝宝,男人需要提供优质的精子,保证精子的存活健康才能实现健康宝宝的降临。只是,这该如何做到呢?专家支招。 第一招:坚持戒烟、严禁酗酒、不乱服药。 专家称,生殖细胞对于烟酒中的毒素十分敏感,受其毒害,精子产生的数量和质量都会受到影响。导致不育或畸形儿的产生。尼古丁有降低性激素分泌和...

经验教程

875

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部