孙鑫VC视频教程观看记录
01:
了解了SDK编程,消息队列,消息响应,消息循环,窗口函数等。
02:
可以冒号:父类构造函数和a(1)
protected子类可以访问
覆盖:父类子类之间 重载:同一个类中
::作用域标识符,表明函数是属于哪一个类的
父类和子类的对象首地址相同
用虚函数实现多态
纯虚函数为子类服务
引用不需要占据内存
可以用预编译指令符解决包含多次重复定义的问题,但是不需要用到定义的值)(定义和没有值不是一个概念,有命名规则是为了避免重复定义,别人也定义了这个宏)
预编译,你加个屁断点
03:
这集看着好枯燥,只需要了解即可。
04:
只能在客户区作图,View没有非客户区
Frame包含菜单menu和工具栏toolbar但是menu不在客户区内不能画图
CClien和CDC相比不用显示调用ReleaseDC了,表示客户区,关键是this还是GetParent(),表示获得了什么的…CDC CClientDC CWindowDC;DC和什么窗口有关 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 }