• 孙鑫VC视频教程观看记录


    01:

    了解了SDK编程,消息队列,消息响应,消息循环,窗口函数等。

    02:

    可以冒号:父类构造函数和a(1)

    protected子类可以访问

    覆盖:父类子类之间   重载:同一个类中

    ::作用域标识符,表明函数是属于哪一个类的

    父类和子类的对象首地址相同

    用虚函数实现多态

    纯虚函数为子类服务

    引用不需要占据内存

    可以用预编译指令符解决包含多次重复定义的问题,但是不需要用到定义的值)(定义和没有值不是一个概念,有命名规则是为了避免重复定义,别人也定义了这个宏)

    预编译,你加个屁断点

    03:

    这集看着好枯燥,只需要了解即可。

    04:

    只能在客户区作图,View没有非客户区

    Frame包含菜单menu和工具栏toolbar但是menu不在客户区内不能画图

    CClienCDC相比不用显示调用ReleaseDC了,表示客户区,关键是this还是GetParent(),表示获得了什么的…CDC CClientDC CWindowDCDC和什么窗口有关 hdc hwnd

    CPen *poldPen = dc.SelectObject(&pen); 返回当前设备上下文中的笔,并替换将其替换成新的笔,一般删除的是地址的内容而不是地址

    类的静态成员函数可以直接用类名调用,其他不能用,以为没有创建对象时才会分配内存空间,而静态成员函数遇到类就为其分配内存空间了,并且函数内用到的成员变量也需要是静态的,因为成员变量也要有空间。若条用了静态成员函数,那么静态成员变量要在外部初始化,int 类名::x=0

     1 void CDrawLineView::OnLButtonDown(UINT nFlags, CPoint point)
     2 {
     3     // TODO:  在此添加消息处理程序代码和/或调用默认值
     4     /*CPoint pt_start(50, 50);
     5     CPoint pt_end(150, 150);
     6     CDC *pDC = GetDC();
     7     pDC->MoveTo(pt_start); 
     8     pDC->LineTo(pt_end);
     9     ReleaseDC(pDC);*/
    10 
    11 
    12     /*CPoint pt_start(50,50);
    13     CPoint pt_end(150, 150);
    14     HDC hdc = ::GetDC(m_hWnd);//全局的GetDC
    15     MoveToEx(hdc, pt_start.x,pt_start.y,NULL);
    16     LineTo(hdc, pt_end.x, pt_end.y);*/
    17 
    18 
    19     /*CWindowDC dc(GetDesktopWindow());
    20     CPen pen(PS_SOLID, 1, RGB(0, 255, 0));
    21     CPen *poldPen = dc.SelectObject(&pen);
    22     //dc.MoveTo(50, 50);
    23     //dc.LineTo(150, 150);
    24     CBrush brush(RGB(255, 0, 0));
    25     dc.FillRect(CRect(50,50,150,150),&brush);
    26     dc.SelectObject(poldPen);
    27     DeleteObject(&pen);*/
    28 
    29 
    30     /*CBitmap bitmap;
    31     bitmap.LoadBitmap(IDB_BITMAP1);
    32     CBrush brush(&bitmap);
    33     CClientDC dc(this);
    34     dc.FillRect(CRect(100, 100, 200, 200),&brush);//Rectangle需要selectobject*/
    35 
    36 
    37     /*CClientDC dc(this);
    38     CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); //HBRUSH HGDIOBJ 强制转换成HBRUSH 透明(空)画刷
    39     CBrush *poldBrush = dc.SelectObject(pBrush);
    40     dc.Rectangle(100, 100, 200, 200);
    41     dc.SelectObject(poldBrush);
    42     DeleteObject(pBrush);*/
    43     isDraw = true;
    44     start_point = point;
    45     old_point = point;
    46     CView::OnLButtonDown(nFlags, point);
    47 }
    48 
    49 
    50 void CDrawLineView::OnLButtonUp(UINT nFlags, CPoint point)
    51 {
    52     // TODO:  在此添加消息处理程序代码和/或调用默认值
    53     isDraw = false;
    54     CView::OnLButtonUp(nFlags, point);
    55 }
    56 
    57 
    58 void CDrawLineView::OnMouseMove(UINT nFlags, CPoint point)
    59 {
    60     // TODO:  在此添加消息处理程序代码和/或调用默认值
    61     CClientDC dc(this);
    62     if (isDraw)
    63     {
    64         //dc.SetROP2(R2_WHITE);
    65         dc.MoveTo(start_point);//画直线
    66         dc.LineTo(old_point);
    67         dc.MoveTo(old_point);//画边界
    68         dc.LineTo(point);    
    69         old_point = point;
    70         //start_point = point;
    71     }
    72     CView::OnMouseMove(nFlags, point);
    73 }
  • 相关阅读:
    Firebase 如何创建登录 Token
    GitHub 如何从特定的版本中创建分支
    Firebase 命令行工具
    Python 日期格式和时间以及当前时间和时间戳
    Python DataTime 日期处理
    Python With 关键字和语句
    完整的微信接口类
    HashMap
    java运行时数据区域
    POI学习
  • 原文地址:https://www.cnblogs.com/haveyoueverbeen/p/5036935.html
Copyright © 2020-2023  润新知