孙鑫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 }

 

posted on 2015-12-10 18:22  _飛  阅读(270)  评论(0编辑  收藏  举报

导航