Windows编程知识点总结
1、基于MFC对话框程序的框架代码主要由⼀下⼏个部分组成:
A.应⽤程序类
B.对话框类
C.资源⽂件
D.预编译⽂件
2、Windows是建⽴在消息驱动机制上的。
3、模态对话框运⾏机制?
当模态对话框产⽣后,应⽤程序没有处理消息,唯⼀的解释就是模态对话框产⽣后会屏蔽其他窗体消息。事实也正是如此,创建模态对话框后,应⽤程序只会响应该对话框的消息,知道应⽤收到结束模态对话框窗体的消息后,才会把控制权交还给应⽤程序。
4、⾮模态对话框
与模态对话框不同,⾮模态对话框不会垄断⽤户的输⼊,⽤户任然可以使⽤其他窗体。
5、属性对话框主要分为两个部分:
A.属性页
B.属性对话框架
6、属性页只是对话框的⼀种形式。
7、控件的逻辑顺序决定着软件中需要使⽤TAB进⾏焦点切换时的顺序排列。
8、控件按钮有四种基本类型:
A.下压按钮
B.复选按钮
C.单选按钮
D.⾃绘按钮
9、按钮控件会向⽗窗⼝发出控件通知消息
A.BN_CLICKED:⿏标单击消息
B.BN_DOUBLECLICKED:⿏标双击击消息
C.BN_SETFOCUS:获取⽤户输⼊焦点
D.BN_KILLFOCUS:失去⽤户输⼊焦点
10、在MFC环境下,除了使⽤CButton类本⾝的成员函数来操作按钮控件,还可以使⽤窗体相关类的成员函数,使⽤这些函数可以根据按钮ID直接进⾏操作。
11、MFC的CEdit类封装了编辑框控件的基本操作。
12、
UPPERCASES设置⼤写,
lowerCase设置⼩写,
Number设置只能接受数字,
Password设置显⽰为*。
13、MFC的CListBox类封装了列表框控件的基本操作。
14、
AddString:添加字符串列表项
DeleteString:删除字符串列表项
Dir:从当前⽬录向列表框添加⽂件名
FindString:在列表框中查包含指定前缀的第⼀个列表项
FindStringExact:在列表框中查与指定字符串匹配的列表项
InsertString:向列表框中插⼊⼀个列表项
ResetContentp:清空编辑框和列表框的所有内容
Selectstring:在列表框中查字符串
15、组合框有三种模式:
简易式
下拉式
下拉列表式进程间通信最快的方式
16、组合框有两种形式:
Dropdown样式
Drop List样式
17、MFC的CProgressCtrl类封装了进度条控件的基本操作。
18、tist->SetTimer(1,100,NULL)
设置计时器ID为1,每100ms触发⼀次
19、tist->KillTimer(1)
关闭计时器1
20、列表控件有四种呈现⽅式:
图标视图
⼩图标视图
列表视图
报表视图
21、⽂档视图结构是使⽤MFC开发基于⽂档的应⽤程序的基本框架,最主要的思想是数据的管理与显⽰分离。
22视图类CView
23、使⽤AppWizard创建SDI和MDI的过程相似,主要区别是创建SDI时不⽣成CChildFrame 类,CMainFrame的基类为CMainWnd;⽽创建MDI时会⽣成两个框架类,⼀个是CMainFrame 类,由CMDIFrameWnd类派⽣⽽来,另⼀个是CChildFrame类,由CMDIChildWnd类派⽣⽽来
24、⽂档与视图体系
⼀个⽂档可以对应多个视图,⽽⼀个视图只能对应⼀个⽂档
⽂档与视图的结构的优势在于数据的管理与显⽰分离,
在开发⽂档/视图体系开发应⽤过程时,涉及到:⽂档模板、⽂档、视图、框架窗⼝25、MFC的CView类是所有视图类的基类,主要有两⼤⼯能:
将与其相关联⽂档的数据呈现给⽤户
接受⽤户对数据的修改,并反馈给⽂档
26、建⽴MFC单⽂档应⽤程序,实例项⽬名称为“single”框架会⾃动⽣成4个类:
CSingleApp类:应⽤程序类
CMainFrame类:框架类
CSingleDoc⽂档类
CSingleView类:视图类
27、在MFC中使⽤GDI 进⾏绘画操作⼀般会涉及两类对象:
设备上下⽂对象
GDI对象
28、设备上下⽂,是⼀种windows数据结构,它包含与设备绘制属性相关的信息。
29、主要有⼀下⼏种GDI 对象:
CPen对象:⽤来绘制线条
CBrush对象:⽤来填充绘制对象的内部
CBitmap对象:⽤来操作位图对象
CFont对象:⽤来绘制⽂本
CPalette对象:⽤于应⽤程序和⾊彩输出设备之间的接⼝
30、使⽤GDI进⾏图形绘制的⼀般流程:
创建GDI对象
创建获取得设备上下⽂对象
使⽤SelectObject把GDI对象选⼊设备上下⽂
使⽤图形输出函数在指定上下⽂中绘制图形
31、画刷其实是⼀个像素⼤⼩为8*8的位图,⽤多个相同的位图对封图形的内部进⾏填充
32、位图
位图是描述图形最简单直观的⼀种形式,把图像横向分为等间距的W列,纵向分为等间距的H列,于是这个图形的⼤⼩被定义为分辨率W*H
33、键盘上的每⼀个健都对应⼀个唯⼀的扫描码,在windows系统中为实现设备⽆关的要求,需要使⽤虚拟键值
34、当有键盘事件发⽣时,设备驱动器⾸先获取健的扫描码,并转换为虚拟键值
35、在应⽤程序中响应键盘消息有两种⽅式:
响应本进程的键盘消息
响应系统的键盘消息
36、keybd_event只是⽤于产⽣键盘事件,⾄于由谁来处理他并不关⼼。系统捕捉到键盘事件后,会转化为键盘消息的形式派发给当前系统中拥有键盘输⼊焦点的应⽤程序。SendMessage和PostMasseage的区别在于,PostMasseage⾸先把消息发到指定句柄所在线程的消息队列再由线程派发。SendMessage是把消息直接发送的指定句柄的窗体或控件。⽽往往很多情况下。指定句柄是个控件。⽽对控件的消息消息处理⼀般都是定义在主对话框上的。除⾮对其进⾏⼦类化,如果使⽤SendMessage,消息就⽆法到达主对话框因⽽⽆法达到预期的效果。
37、TCP协议是⼀个⾯向连接的、可靠的协议,UDP协议是⼀个不可靠的、⽆连接的协议
38、因特⽹控制报⽂协议(Internet Control Message Protocol ,ICMP)
39、套接字是⼀种⽹络编程接⼝,提供了⼀种⽹络数据发送和接受机制,套接字是⽹络通信的基础,⼀个套接字表⽰通信的⼀端,使⽤套接字可以实现数据包在⽹络上的传输。
40、soket函数,⽤来根据指定的地址协议簇、套接字类型和协议类型创建⼀个套接字。
listen函数,监听远程连接
accept函数,⽤来接受客户端连接。
sendto函数,⽤来向指定地址发送数据。
recv函数,⽤来在已建⽴连接的套接字上接收数据。
recvfrom函数,⽤来在指定套接字上接收数据。
setsockopt函数,⽤来设置套接字属性。
41、进程是⼀个正在运⾏的程序的实例,有两部分组成:
⼀个操作系统⽤来管理进程的内核对象。
创建时系统所分配的资源,主要是内存地址单元。
41、进程地址空间作为⼀个载体。包含进城的所有数据和代码以及堆和栈。为线程的运⾏提供保障。
42、进程是静态的
43、线程也有两个部分组成:
线程内核对象;线程堆栈。
44、线程是动态的、可执⾏的、它总是在某个进程的环境中创建的。
45、每个线程都是运⾏在其所属进程的地址空间,因此线程只能访问本进程的地址空间,⽽其他进程对其是不可见的
46、所谓‘页’,只是操作系统为了更好的管理地址空间所产⽣的⼀个逻辑上的概念,把⼀个固定长度的地址空间作为⼀个页,通常为4kb,系统在在对地址空间进⾏管理时,把每4kb 的空间作为⼀个单位,最终形成内存管理的多级索引结构。
47、物理存储器和进程虚拟地址空间的映射是⽆序的,每⼀个进程虚拟地址空间也只能由⼀个物理存储器页来映射。
48、“地址转换机构”就是负责他们彼此之间的关联。
49、虚拟内存也有三种基本状态:
空闲:地址空间没有被占⽤,不能使⽤
保留:地址空间没有被占⽤,但还没有与物理存储器相关联,不能使⽤。
提交:且已经与物理存储器相关联,可以使⽤。
50、内存映射⽂件
内存映射⽂件可以在进程中保留⼀个地址空间区域,并把磁盘⽂件提交给该区域。⼀旦映射成功,就可以在内存中直接操作⽂件,⽽不再需要使⽤readfile、writefile等⽂件操作API 。
51、情况下会使⽤内存映射⽂件:
系统使⽤内存映射⽂件加载可执⾏模块(.exe)和动态链接(DDL)
操作数据⽂件
共享内存
52、消息传递
消息传递机制并不以进程为界限,处理消息的是窗体,⽽与是否在同⼀进程⽆关。因⽽在进程间使⽤消息传递作为通信⼿段有个前提,即都是窗体应⽤程序。
53、共享内存的原理
使⽤内存共享机制,在任何⼀个进程内创建内存映射,却能够在其他多个进程中使⽤。这些进程共享的是物理内存器的同⼀个页⾯,把这些物理内存映射到虚拟内存时各个进程的虚拟地址不⼀定相同。当⼀个进程将数据写⼊共享内存时,其他进程可以⽴即获取数据变更情况,显然这种共享内存的⽅式是完全可以满⾜在进程间进⾏⼤数据快速传输任务要求的。
54、与内存映射磁盘⽂件⼀样,共享内存的本质也是内存映射机制。
55、使⽤系统页⽂件⽀持的内存映射⽂件,及共享内存。
56、进程间通信的三种基本⽅法:匿名管道、命名管道、邮槽
57、管道是⽤于进程间通信的共享内存区域。创建管道的进程称为管道服务器,⽽连接这两个管道的进程称为管道客户端,⼀个进程向管道写⼊信息,另外⼀个进程从管道读取信息58、匿名管道
匿名管道是基于字符和半双⼯的,⼀般⽤于程序输⼊输出的重定向。如果需要获取⼀个基于控制台窗⼝应⽤程序的输出,此时就可以是⽤匿名管道,⾸先使⽤CreatePipe函数创建匿名管道。
59、命名管道的特征:
命名管道是双向的,进程间可以使⽤同⼀管道进⾏交互
命名管道不但可以⾯向字节流,还可以⾯向消息。所以读取进⾏可以读取写进程发送的不同长度的消息
多个独⽴的管道实例可以⽤同⼀个名称来命名。
命名管道可以⽤于⽹络间两个进程的通信,⽽其实现过程与本地进程通信完全⼀致
60、创建命名管道使⽤CreateNamedPipe函数
61、邮槽是实现单通道的进程间通信的通信⽅式。创建邮槽的进程称为邮槽服务器,向邮槽发送消息的进程称为邮槽客户端
60、创建邮槽使⽤CreateMailslot函数
61、windows剪贴板是⼀种⽐较简单同时也是开销⽐较⼩的进程间通信⽅式。
62、剪贴板通信机制
windows系统⽀持剪贴板IPC的基本机制室友系统预留的⼀块全局共享内存,可⽤于被各个进程暂时存储数据。写⼊进程⾸先穿件⼀个全局内存块,并将数据写到该内存块;接受数据的进程通过剪贴板机制获取此内存块的句柄,并完成对该内存块数据的读取。
63、剪贴板通信有5种基本情况:
⽂本剪贴板
位图剪贴板
⾃定义格式
延迟提交
多项数据
63、进程同步可分为两⼤类:
访问共享资源,多个进程访问进程共享资源时,需要确保资源不受破坏。
事件通知,⼀个线程完成某项任务后通知其他线程。
64、原⼦访问,是指线程对共享资源的独占式访问。
65、关键代码段,是指在执⾏前⾸先去的对共享资源的访问权,然后让代码以原⼦操作⽅式执⾏来访问共享资源的⼀种⽅法。
66、内核对象等待函数,其所等待的也正是内核对象的受信状态。
67、内核对象本质上只是⼀个内存块。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论