logo资料库

wine源码深入分析.pdf

第1页 / 共60页
第2页 / 共60页
第3页 / 共60页
第4页 / 共60页
第5页 / 共60页
第6页 / 共60页
第7页 / 共60页
第8页 / 共60页
资料共60页,剩余部分请下载后查看
Wine & Windows窗口消息机制
Windows应用消息驱动编程模型 HelloWorld应用 固定套路: ①注册窗口类:指定类名、消息处理函数 ②创建窗口:指定类名 ②创建窗口:指定类名 ③设置窗口显示状态 ④更新指定窗口客户区 ⑤从线程消息队列获取消息,无消息则阻塞 ⑥分发消息:回调类指定的WndProc
Windows应用消息驱动编程模型 DispatchMessage中回调通过类注册的消息处理函数WndProc,用来处理消息 核心:黄色标注的6个Win32 API Wine运行该HelloWorld应用
如上HelloWorld应用 主要内容  支撑理论  支撑理论  Windows窗口类型、窗口从属关系、窗口层次关系;  ForegroundWindow、BackGroundWindow、ActiveWindow、FocusWindow;  Z-Order、ATOM表、Windows硬件输入模型;  Session / WinStation / Desktop / Desktop Window;  源码分析  WinSton、Desktop、DesktopWindow的创建;  核心API:RegisterClassEx、DispatchMessage、GetMessage、CreateWindowEx 、ShowWindow、UpdateWindow等核心API源码分析;
如何表达函数调用关系 方法1:UML图,专业但画图太耗时; 方法2:如下,用一个Tab键,代表函数一级调用或回退 本PPT源码分析采用方法2;
窗口类型 窗口类型: 可重叠窗口:是App的主窗口,通常具有标题栏、边框、客户区等,style = WS_OVERLAPPEDWINDOW ; WS_OVERLAPPEDWINDOW ; 弹出式窗口:特殊的可重叠窗口,往往用作消息框、对话框等,style=WS_POPUP; 子窗口:其有父窗口,受限于父窗口的客户区域,style=WS_CHILD; 层次窗口:实现不规则的窗口,或窗口有动画、 半透明等效果,exStyle=WS_EX_LAYERED; 消息窗口:仅用于发送接收消息,不可见; style与exStyle还可取很多其它值: WS_MAXIMIZE WS_MINIMIZE WS_SYSMENU WS_VISIBLE WS_CAPTION WS_BORDER ……
窗口类型 实验1: CreateWindow(L"CLS”, L"HELLO”, WS_OVERLAPPEDWINDOW ,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL); 现象:有标题栏、菜单栏,最大化、最小化、关闭按钮,窗口大小可拖拽,如下图: 本质原因:
窗口类型 实验2: CreateWindow(L”CLS”, L"HELLO”, WS_OVERLAPPED,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL); 现象:有标题栏、菜单栏,但没有最大化、最小化、关闭按钮,窗口大小不能拖拽, 如下图;
分享到:
收藏