孙鑫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 }
时间: 2024-08-26 10:34:02

孙鑫VC视频教程观看记录的相关文章

孙鑫VC++视频教程笔记

写在前面的话:在学习孙鑫老师的VC++视频时,为了加深自己对知识的深入理解,就做了下面的笔记. 第一讲: 第二讲: 第三讲: 第四讲: 第五讲: 第六讲: 第七讲: 第八讲: 第九讲: 第十讲: 第十一讲: 第十二讲: 第十三讲: 第十四讲: 第十五讲: 第十六讲: 第十七讲: 第十八讲: 第十九讲:动态链接库 第二十讲: 孙鑫VC++视频教程笔记,布布扣,bubuko.com

孙鑫VC学习笔记:多线程编程

SkySeraph Dec 11st 2010  HQU Email:[email protected]    QQ:452728574 Latest Modified Date:Dec.11st 2010 HQU ================================================================================= 程序&进程&线程 ================================================

孙鑫vc笔记——多线程编程

1.进程是一个正在运行程序的实例,它从不执行任何东西,只是线程的容器.若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程地址空间中的代码. 2.当创建一个进程时,操作系统会自动创建这个进程的第一个线程,即主线程,即执行main函数或winMain函数的线程,main函数或winMain函数是主线程的进入点函数,此后,该线程可以创建其他的线程. 3.系统赋予每个进程独立的虚拟地址空间,对于32位进程来说,这个地址空间2的32次幂即4GB. 4.每个进程有它的私有

【同步】孙鑫VC++笔记-事件对象同步

事件对象同步 //CreateEvent设置自定的,并且初始有信号#include<windows.h> #include<iostream.h> DWORD WINAPI ThreadProc1( LPVOID lpParameter ); DWORD WINAPI ThreadProc2( LPVOID lpParameter ); int tickes=100; HANDLE g_hEvent; int main() { HANDLE hThread1=CreateThrea

孙鑫视频VC++深入详解学习笔记

Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Lesson4: 简单绘图 Lesson5: 文本编程 Lesson6: 菜单编程 Lesson7: 对话框编程 Lesson9: 定制应用程序的外观 Lesson10: 绘图控制 Lesson11 图形的保存和重绘 Lesson12 文件操作 Lesson 13: 文档串行化 Lesson14 网络编程 Lesson 15 多线程 Lesson 16 线程同步

孙鑫视频VC++深入详解学习笔记(全)

Lesson1: Windows程序运行原理及程序编写流程 窗口产生过程,句柄原理,消息队列,回调函数,窗口关闭与应用程序退出的工作关系,使用VC++的若干小技巧,stdcall与Lessonecl调用规范的比较,初学者常犯错误及注意事项. 1.       Windows API与Win32 SDK 操作系统提供了各种方便开发Windows应用程序的编程接口,所的函数都在Windows.h头文件中声明.Win32 SDK(Software Development Kit): 即Windows

多线程简易售票程序--孙鑫视频示例

孙鑫视频多线程的第一个例子----简易的售票程序 #include <Windows.h> #include <iostream> int ticket = 100; //定义互斥对象 /* 互斥对象属于内核对象,它能够准确保证线程拥有对单个资源的互斥访问 互斥对象包含一个使用数量 线程ID 计数器 ID用于标识系统中哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数 */ HANDLE hMutex; DWORD WINAPI FunProc_1(LPVOID lp

孙鑫视频改变窗口过程函数中出现error C2440错误的解决方法

在Visual Studio 2010中,即使代码是完完全全按照孙鑫视频中的敲,也会在出现error C2440,这是因为开发平台由VC6.0升级至VS2010,需要将原有的项目迁移.VS2010对消息的检查更为严格,以前在VC6.0下完全正常运行的消息映射在VS2010下编译不通过. 百度了解决方法如下(亲测可用): 例如:TestDlg.cpp中ON_REGISTERED_MESSAGE(WM_INITDIALOG, &CTestDlg::OnInitDialog):第一:把原来的消息函数返

VC++深入详解 孙鑫 第一章 Windows程序内部运行机制

1.API与SDK API (Application Programming Interface) 应用程序接口 SDK(Software Development Kit) 软件开发包,包括API函数,帮助文档,微软提供的一些辅助开发工具. 2.窗口和句柄 窗口是是屏幕上一块矩形区域,是Windows应用程序与用户进行交互的接口: 在Windows应用程序中,窗口是通过窗口句柄(资源标识)来标识的. 3.消息和消息队列 Windows程序设计是一种基于消息的事件驱动方式的程序设计模式. 每当一个