文档库 最新最全的文档下载
当前位置:文档库 › Windows 消息处理机制与事件驱动

Windows 消息处理机制与事件驱动

Windows 消息处理机制与事件驱动
Windows 消息处理机制与事件驱动

【SunXin.VC++深入】

1.窗口(Windows)和句柄(HANDLE,handle):窗口句柄(HWND)图标句柄(HICON)、光标句柄(HCURSOR)和画刷句柄(HBRUSH)

2.消息,消息队列,消息循环,消息响应

.OS将操作包装成Message

.typedef struct MSG {

HWND hwnd; //窗口句柄,即标示消息所属的窗口

UINT message;//标示消息的类别,是鼠标还是键盘等如鼠标左键按下消息是

//WM_LBUTTONDOWN,键盘按下消息是WM_KEYDOWN,字符消息是WM_CHAR

WPARAM wParam;//消息的附加信息

LPARAM lParam;//消息的附加信息

DWORD time;//消息投递到消息队列中的时间

POINT pt;//鼠标的当前位置

} MSG;

.消息队列,每一个Windows应用程序开始执行后,系统都会为该程序创建一个消息队列,这个消息队列用来存放该程序创建的窗口的消息

.进队消息(OS将产生的消息放在应用程序的消息队列中,让应用程序来处理)

不进队消息(OS直接调用窗口的处理过程)

用 Windows 的话说, 窗口的事件就是系统发送给窗口的消息; 窗口要采取的行动(事件代码)就是窗口的回调函数.

PostMessage函数将消息添加到应用程序的消息队列中去。应用程序的消息循环会从消息队列中提取登记的该消息,再发送到相应的窗口中。

SendMessage函数可以越过消息队列直接向窗口过程发送。所以当Windows需要立刻返回值时使用SendMessage,当需要不同的应用程序依次处理消息时使用PostMessage。而Perform从本质上和SendMessage相似,它们直接向窗口过程发送。SendMessage、Postmessage函数只需要知道窗口的句柄就可以发送消息,所以它们可以向非Delphi窗体发送一条消息,但而Control.Perform必须知道窗体或控件的实例。

.Windows应用程序的消息处理机制

while(GetMessage(&msg,NULL,0,0)){//接收到WM_QUIT消息时,才返回0

TranslateMessage(&msg);//对消息进行包装处理然后再以消息的形式投放到消息队列

DispatchMessage(&msg);//消息回传给操作系统,由操作系统调用窗口过程函数对消息进行处理 }

(1)操作系统接收到应用程序的窗口消息,将消息投递到该应用程序的消息队列中。

(2)应用程序在消息循环中调用GetMessage函数从消息队列中取出一条条的消息。取出后,以对消息进行一些预处理,如放弃对某些消息的响应,或者调用TranslateMessage产生新的消息,再以消息的形式投放到消息队列.

(3)应用程序调用DispatchMessage,将消息回传给操作系统。消息是由MSG结构体对象来表示的,其中就包含了接收消息的窗口的句柄。因此,DispatchMessage函数总能进行正确的传递。

(4)系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进

行处理(即“系统给应用程序发送了消息”)。

.窗口过程函数

lresult callback windowproc(

hwnd hwnd, // 对应消息的窗口句柄

uint umsg, // 消息代码,区别消息的类型

wparam wparam, // 消息代码的附加参数1

lparam lparam // 消息代码的附加参数2

);

【蔡学镛.揭开消息循环的神秘面纱】

简单归纳如下:

消息循环被封装进了 Application 类别的 Run() 静态方法中;Windows Procedure (WndProc())被封装进了 NativeWindow 与 Control 类别中;

个别的消息处理动作被封装进 Control 类别的 OnXyz()(例如 OnPaint())。我们可以覆盖(override)OnXyz(),来提供我们自己的程序。

也可以利用.NET的事件(event)机制,在 Xyz 事件上,加入我们的事件处理函式(Event Handler)。C ontrol 类别的 OnXyz() 会主动呼叫 Xyz 事件的处理函式。

请注意,因为 Xyz 的事件处理函式是由 Control 类别的 OnXyz() 方法所呼叫的,所以当你覆写 OnXyz()方法时,不要忘了呼叫 Control 类别的 OnXyz()(除非你有特殊需求),否则 Xyz 事件处理函式将会没有作用。只要呼叫 base.OnXyz(),就可以呼叫到 Control 类别的 OnXyz() 方法

1. 在 Main() 中,利用 Application.Run() 来将 Form1 窗口显示出来,并进入讯息循环。程序的执行过程中,Application.Run() 一直未结束。

2. OS 在此 Process 的消息队列内放进一个 WM_PAINT 讯息,好让窗口被显示出来。

3. WM_PAINT 被 Application.Run() 内的消息循环取出来,发派到 WndProc()。由于多型(Polymorphis m)的因素,此次调用(invoke)到的 WndProc() 是属于Form1 的 WndProc(),也就是上述程序中批注(c

omment)1 的地方,而不是调用到 Control.WndProc()。

4. 在 Form1.WndProc() 的最后,有调用 base.WndProc(),这实际上调用到 Control.WndProc()。

5. Control.WndProc() 从 Message 参数中得知此讯息是 WM_PAINT,于是调用 OnPaint()。由于多型的因素,此次调用到的 OnPaint() 是属于 Form1 的 OnPaint(),也就是上述程序中批注 2 的地方,而不是调用到 Control.OnPaint()。

6. 在 Form1.OnPaint() 的最后,有调用 base.OnPaint(),这实际上调用到 Control.OnPaint()。

7. 我们曾经在 Form1 的建构式(constructor)中将 Form1_Paint() 与 Form1_Paint2() 登记成为 Pai nt 事件处理函式(Event Handler)。Control.OnPaint() 会去依序去呼叫这两个函式,也就是上述程序中批注 3 与 4 的地方。

【.NET Windows Message】

1.Control--Button,Form……

protect vitrual WndProcess(ref Message);

调用private Wm_(ref Message);//具体某类消息

调用Oprotect virtual On_xx(EventArg e);//触发相关事件

2.解释事件冒泡:比如键盘消息可先由Form来处理,然后交由相关的Control来处理

3.解释FormPaint:窗口的移动,最小化,最大话都会引起窗口内容的重新Paint,OS产生一个相关消息发给应用程序的消息队列,应用程序得到并处理消息时先是Form依次经过Wn_Process,Wn_..,On_Paint,Fo rm_Paint,之后Form中的每一个Control也会依次做重绘的工作。

私募基金八大策略介绍

私募基金八大策略介绍 私募基金在国际金融市场上发展十分快速,并已占据十分重要的位置,几乎所有国际知名的金融控股公司都从事私募基金管理业务,同时也培育出了像索罗斯、巴菲特这样的投资大鳄。 而国内私募基金也驶入快车道,据中国基金业协会发布的最新数据显示,2016年4月,已登记私募基金管理人26045家;已备案私募基金31347只。国内的私募江湖也人才辈出,在这个战场里,我们见识过王亚伟、徐翔、刘世强、葛卫东、杨海等江山豪杰。 由于私募基金的信息透明度不高,其资金运作和收益状况,都不是公开进行的,投资者往往误认为私募基金运作风险大于收益。其实,私募基金成立时,都会选择稳定可靠、信誉好的合伙人,这点就迫使私募基金运作较为谨慎,自律加上内压式的管理模式,有利于规避风险,同时减少监管带来的巨大成本;而且,私募基金操作的高度灵活性和持仓品种的多样化,往往能抢得市场先机,赢得主动,使创造高额收益成为可能。 私募阳光化一直在曲折中艰难推进,直到2013年6月1日新《基金法》正式实施,把私募基金正式纳入监管范畴;2014年1月17日,基金业协会发布《私募投资基金管理人登记和基金备案办法(试行)》,私募行业的实质性监管政策才得以落地。 随着私募基金蓬勃发展,投资策略也逐渐多样化,基金投资策略可谓是百花齐放。为方便投资者更清晰的理解,经过精细梳理对目前私募行业所有的投资策略进行了细化,按投资策略分类主要分为:股票策略、事件驱动、管理期货、相对价值、宏观策略、债券基金、组合基金、复合策略等主要策略分类。以下将对各类型策略进行详细阐述。 股票策略 股票策略以股票为主要投资标的,是目前国内阳光私募行业最主流的投资策略,约有8成以上的私募基金采用该策略,内含股票多头、股票多空、股票市场中性三种子策略。目前国内的私募基金运作最多的投资策略即为股票策略。 1、股票多头

舆情信息处置机制制度精编版

舆情信息处置机制制度 为积极响应上级通知精神,进一步加强对舆情的引导与监控,建立健全舆情快速响应和处理机制,促进和保障幼儿园各项工作的有序开展,根据我园实际情况,采取以下措施:一、加强领导,构建全方位舆情监控网络 幼儿园舆情监控工作由保教处牵头,全面负责互联网及各大媒体的舆情引导与监控工作。设兼职舆情管理员一名,由保教主任担任。各部门、各年级组兼职舆情监督员,并邀请家委会主任担任社会舆情反馈员。进一步加强与地方各级新闻媒体的沟通协作,构建全方位舆情监控网络,密切配合,共同应对幼儿园舆情的引导与监控工作。 二、实行舆情监控巡查制度 1、实行舆情信息处置日值班制度,建立舆情信息处置每日记录。制定舆情监控负责制,每天由舆情监督员利用中午1点-2点,下午4点-5点两个时段负责监测跟踪网上涉及幼儿园工作的各种论坛、帖吧言论,掌握舆情热点,密切关注网络信息动态,捕捉带有苗头性、倾向性、群众性的问题。采取多种方式进行引导和疏通,并做好记录。 2、保教处舆情管理员每天向各处室了解一天舆情。 3、加强沟通,拓宽舆情监控渠道。加强与家委会负责人和地方其他媒体的沟通联系,及时了解来自各方面信息,及时扑捉舆情线索。

三、实行疏导、控制制度 每天舆情管理员整理舆情信息及时向园领导反馈情况,并对可能出现的突发事件进行早期预报,确保有关的重大舆情和负面信息早发现、早报告、早处置。对于有可能给幼儿园造成负面影响的舆论报道和评论,幼儿园组织协调有关力量及时进行舆情处置和舆论引导,有效疏导和控制负面舆情。 四、加强宣传,建立正确舆论导向 充分利用幼儿园网络、报纸、园信通等宣传平台,通过多种手段和渠道做正确的舆论方向引导,同时建立防控体系,积极消除不和谐、不稳定隐患。 化隆县第二幼儿园 2019年10月

Windows消息分类

Windows消息分类 Windows应用程序都是基于消息驱动的,消息一般分为标准Windows消息、控件通知消息和命令消息三大类。 1. 标准Windows消息 标准Windows消息,除WM_COMMAND消息外,所有以WM为前缀的消息都是标准Windows消息。标准Windows消息只能由窗口类和视图类进行处理。标准Windows消息都有黙认的处理函数,这些函数在CWnd类中过行了预定义,处理函数均以前缀On开头。 标准Windows消息主要分为三类: (1)键盘消息 当用户按下键盘上的某一个键时,会产生WM_CHAR消息。该消息的处理函数为OnChar. (2) 鼠标消息 WM_MOUSEMOVE WM_LBUTTONDOWN WM_RBUTTONDOWN (3)窗口消息 所有窗口的变化,包括内容重绘、窗口最大化、窗口重新定义大小、窗口滚动条滚动等产生的消息均属于窗口消息。当调用成员函数UpdateWindow 或RedrawWindow要求重新绘制窗口内容时,将会发送WM_PAINT消息,当窗口最小化后再还原或被其它窗口遮盖后又移开时,也会发送WM_PAINT消息。WM_PAINT消息的处理函数为OnPaint. 2. 控件消息(WM_COMMAND) 由控件产生的消息,例如按钮,列表框的选择等都会产生通告消息。控件消息是从控件传送给父窗口的消息。发送控件消息的控件在Visual C++中使用唯一ID号来进行标识,使用控件类来操纵相应的控件。与标准Windows消息一样,控件消息也在视图类、窗口类进行处理。但是,如果用户单击按钮控件,所发出的控件通知消息BN_CLICKED将作为命令消息来处理。 3. 命令消息(WM_COMMAND) 命令消息是菜单项、工具栏按钮、加速键等用户界面对象发送的WM_COMMAND消息。命令消息可以被文档、视图、窗口、应用程序等对象处理。发送命令消息的用户界面对象在Visual C++中也使用唯一的ID号来标识。通过给界面和命令消息分配相同的ID号,可以把用户界面对象与命令联系起来。 Windows把非命令消息直接发送给窗口类对象,该窗口类中用于处理该消息的处理函数将被调用。但是,对于命令消息,将把命令消息发送给多个候选对象(称为命令目标),目标中总有一个将调用该命令的处理函数。 注意:由于CWnd类派生于CCmdTarget类,所以凡是从CWnd派生的类,他们既可以接收标准消息,也可以接收命令消息和通告消息。而对于从CCmdTarget类派生的类只能接收命令消息和通告消息,不能接受标准消息。 ********************************************************************************************** MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,首先我在这里描述一下,Windows 的消息种类: 一般分的话有三种: 1. 标准消息:除了WM_COMMAND,所有的以WM 开头的消息都是标准消息,从CWnd 派生的类,都可以接受此消息。

杨永兴:事件驱动交易策略

杨永兴:事件驱动交易策略(2012-10-28 13:22:19) 核心提示:成绩如此出色,少年私募英雄杨永兴究竟掌握了什么制胜法宝?4月2日,《每日经济新闻》专访了策略大师基金的管理团队,证通天下董事长杨永兴、证通天下总经理李世勇(以下统称为"策略大师")向记者透露了他们的宝贵经验。 在股市中把600万元变成一个亿,需要多少时间?有人会说5年、10年,也许更长,但有人只花了10个月。 在2007年朝阳永续的实盘大赛中,硅谷基金的投资经理杨永兴以高达1497%的收益率,完成了这个看似不可能完成的任务,其成绩远远超过当时参加评比的其他阳光私募和券商集合理财。当时,他只有25岁。 2009年3月2日,杨永兴再次带领他的团队扬帆起航,在重庆国投发行了一款名为"策略大师"的阳光私募信托计划。3月27日,经过短短20个交易日的运作,策略大师的单位净值已从1元猛增到1.467元,收益率高达46.7%,再次上演不可能完成的任务。成绩如此出色,少年私募英雄杨永兴究竟掌握了什么制胜法宝?4月2日,《每日经济新闻》专访了策略大师基金的管理团队,证通天下董事长杨永兴、证通天下总经理李世勇(以下统称为"策略大师")向记者透露了他们的宝贵经验。

制胜法宝快进快出只参与上涨趋势 NBD:你的阳光私募基金自3月2日成立以来,获取了46%的收益,成为2009年私募界的第一名。获胜的法宝是什么? 策略大师:我们最大的优势在于极强的风险控制意识和把握短期趋势的能力。首先,我们在投资前想的第一件事就是此次投资最大的风险在哪里?可能会有多大的亏损?有什么应对措施?在做好了最充分的准备之后,我们才会开始考虑潜在收益等因素。正是这种保守的风格,让策略大师的研究团队充分规避了2008年熊市的风险。其次,策略大师研究团队对中短期趋势的判断能力要远远强于对中长期趋势的判断。 当前中国A股市场游资和散户的力量相当强大,它们的交易偏好以及反映在盘面上的特征都很有规律,充分认识并利用这些规律,只参与其中风险最小、利润最大的几个时间阶段,就有可能实现持续复利。在操作上,我们基本不参与盘整和下跌,我们只参与上涨趋势。 NBD:策略大师主要的操作风格是快进快出、短线为主,在操作上具体有什么特点?

校园网络舆情信息监测处置机制

校园网络舆情信息监测处置机制为进一步加强网络舆情监测,特别是加强校园网络舆情的引导和监控,防止不良信息对校园的侵害,掌握网络舆情主动权,加强对网络舆情的预警防范和监测引导,形成积极向上的主流舆论,营造良好的舆论环境,促进和保障校园网络信息服务健康、有序发展,根据国家有关法律法规,现结合我校实际情况,特制定本办法。 一、工作目标 加强网上舆情监控,及时掌握舆情动态,坚决封堵、删除各种有害信息,及时掌握学校学生在各种网络媒介中的言论和动态,加强正面引导,释疑解惑,化解矛盾,消除不良影响,营造积极、健康的舆论氛围。 二、主要内容 本办法中的网络舆情,特指可能或已经对学生思想政治教育工作产生影响的网上负面报道或网络负面言论。网络舆情的管理与处置,是指对涉及宣传思政工作的新闻报道或评论在互联网上刊发、扩散后,所引发的反应、言论、评论和后续报道等综合舆论情况的监测、控制和化解等具体措施。 三、组织结构 成立网络舆情管理与处置工作领导小组,指定教导处为领导小组办公室,在领导小组的领导下牵头开展网络舆情管 理与处置的组织、监督、实施、考核工作。

四、工作职责 网络舆情监督员负责监测学校的微博、微信,学生个人人人通、微博、微信的舆情情况,了解各网站当前的舆情,及时将舆情通报网络舆情管理员,督促及时控制和引导,并作好日志记录和备案工作;负责跟踪各单位的舆情控制及引导情况,及时上报学校。 五、工作原则 按照“谁主管、谁负责”的原则将监测到的舆情信息进行分转交办,按照“快速反应、确认事实、妥善处理”的原则及时对网络舆情进行分析、判断、评估,准确查找舆情信息产生的原因,认真核实舆情反映的问题,对舆情走向作出正确的判断,对舆情可能产生的影响进行客观、全面评估,及时准备好跟(回)帖材料。 在处置网络舆情事件时,一定要端正工作态度,多渠道、多方法全面了解事件真相,不推卸责任,勇于承担应负的责任;在回应时不要只站在如何消除对学校和学校形象的影响上,而要站在师生或受害者的立场上。第一时间告知学生和当事人事情真相,进行真诚、公开、及时的沟通,不使矛盾进一步激化,赢得学生的理解和信任。根据某一重大舆情事件的发展态势和走向,最大程度地争取媒介的公信力和权威性,适时转移目标,发布最及时权威的信息,左右网络舆情的走向,把噪音杂音压下来,使该网络舆情信息关注度逐渐转冷。要加强正面宣传,树立良好风气。 六、操作流程

Windows内存管理机制

Windows内存管理机制 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。 本文目的: 对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。 本文内容: 本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及C++内存分配实例(一)(二)(三)(四)和(五)。 1. 进程地址空间 2.内存状态查询函数 3.内存管理机制--虚拟内存 (VM) 4.内存管理机制--内存映射文件 (Map) 5.内存管理机制--堆 (Heap) 使用场合 操作系统为每个线程都建立一个默认堆栈,大小为1M。这个堆栈是供函数调用时使用,线程内函数里的各种静态变量都是从这个默认堆栈里分配的。

堆栈结构 默认1M的线程堆栈空间的结构举例如下,其中,基地址为0x0004 0000,刚开始时,CPU的堆栈指针寄存器保存的是栈顶的第一个页面地址 0x0013 F000。第二页面为保护页面。这两页是已经分配物理存储器的可用页面。 随着函数的调用,系统将需要更多的页面,假设需要另外5页,则给这5页提交内存,删除原来页面的保护页面属性,最后一页赋予保护页面属性。 当分配倒数第二页0x0004 1000时,系统不再将保护属性赋予它,相反,它会产生堆栈溢出异常STATUS_STACK_OVERFLOW,如果程序没有处理它,则线程将退出。最后一页始终处于保留状态,也就是说可用堆栈数是没有1M的,之所以不用,是防止线程破坏栈底下面的内存(通过违规访问异常达到目的)。

MFC的运行机制和消息响应机制

MFC的类层次结构与运行机制 MFC的类层次结构 如图所示(子类指向父类): 其中: CObject:是MFC提供的绝大多数类的基类。该类完成动态空间的分配与回收,支持一般的诊断、出错信息处理和文档序列化等。 CCmdTarget:主要负责将系统事件(消息)和窗口事件(消息)发送给响应这些事件的对象,完成消息发送、等待和派遣调度等工作,实现应用程序的对象之间的协调运行。 CWinApp:是应用程序的主线程类,它是从CWinThread类派生而来的。CWinThread类用来完成对线程的控制,包括线程的创建、运行、终止和挂起等。 CDocument:是文档类,包含了应用程序在运行期间所用到的数据。 CWnd:是一个通用的窗口类,用来提供Windows中的所有通用特性、对话框和控件。 CFrameWnd是从CWnd类继承来的,并实现了标准的框架应用程序。 CDialog类用来控制对话框窗口。 CView:用于让用户通过窗口来访问文档。 CMDIFrameWnd和CMDIChildWnd:分别用于多文档应用程序的主框架窗口和文档子窗口的显示和管理。CMiniFrameWnd类是一种简化的框架窗口,它没有最大化和最小化窗口按钮,也没有窗口系统菜单,一般很少用到它。 MFC运行机制 在程序中,当定义一个类对象时,它会自动调用相应的构造函数。所谓"类对象",就是用该类定义的"变量",这个"变量"又称为类的一个实例。例如,theApp就是类CSimpApp的一个对象。 MFC正是利用类的这种"自动调用相应的构造函数"特性,使得WinMain()函数的调用变成了应用程序框架内部的调用,所以我们在代码中看不到每个Windows程序所必须有的WinMain()函数。 当应用程序运行到"CSimpApp theApp;"时,系统就会先调用基类CWinApp构造函数,进行一系列的内部初始化操作,然后自动调用CSimpApp的虚函数InitInstance(),该函数会进一步调用相应的函数来完成主窗口的构造和显示工作。下面来看看上述程序中InitInstance的执行过程。 首先执行的是: m_pMainWnd = new CMainFrame; 该语句用来创建从CFrameWnd类派生而来的用户框架窗口CMainFrame类对象,继而调用该类的构造函数,使得Create函数被调用,完成了窗口创建工作。

2021年事件驱动策略的因子化特征之欧阳学文创编

事件驱动策略的因子化特征 欧阳光明(2021.03.07) 2016-05-30 16:01:00 1. 引言 本篇报告旨在对若干类事件进行综合量化分析,使投资者更加深入的理解不同事件的发生对股票价格的影响。在此基础上,我们将构造基于多事件驱动的组合投资策略。本篇报告的最后一部分,我们将事件驱动策略与多因子策略在组合权重优化的框架下相结合,构建了基于多因子多事件驱动的最优中性投资组合。实证结果表明,增加了事件驱动后的多因子组合,收益显著提升。 事件驱动研究的本质问题在于事件发生是否会产生超额收益或亏损?若能产生,该收益是否可持续存在?对于该问题的解答不仅有利于我们构建事件驱动选股策略,更重要的是使得投资者了解事件信息对股票价格运行所产生的影响,进而更深入的理解股票价格波动的成因。 我们利用风险模型对个股收益的分解,定义了事件异常收益AR (Abnormal Return),并根据不同事件对个股异常收益的影响,对事件属性进行了分类。在此基础上,我们构建了基于多事件驱动的组合投资策略。实证结果表明,组合收益稳健有效,在过去6年时间内均可稳定战胜基准指数。 事件驱动研究的本质仍然是对市场参与者内心预期、相互博弈的投资心理研究。本篇报告通过数据建模等方法,对事件影响进行了一定的统计观察。但模型终究只是研究工具,最终我们希望通过事件研究,使得投资者更深入的理解股票价格运行的成因及规律,进而达到无招胜有招之最高境界。 2. 异常收益 2.1 异常收益定义

从逻辑上而言,我们通常会研究事件发生前后,股票价格收益的分布情况,进而判断事件对股价的影响。但是,由于股票价格的波动受各种不同的风险因素影响,因此简单的利用收益率或者超额收益很难分辨出事件本身对股票价格所产生的影响。 我们通常利用异常收益来检验事件发生对股票价格所产生的影响。所谓事件异常收益指的是:在事件发生前后,股票收益率中,无法用市场、行业、风格所解释的收益部分称为异常收益。 风险模型对股票收益的分解为事件研究提供了较大的便利,通过统计事件发生前后,股票收益中无法利用已知因子所解释的部分,即特质收益项,就可以观察事件发生所导致的股票价格异常收益,即: 换言之,我们利用风险模型回归方程中的残差项作为事件发生窗口期内的股票异常收益,由于残差部分不包含任意行业与风格收益,因此可以纯粹的反映事件本身对股票价格的影响,这与我们定义异常收益的初衷思路是一致的。 并且,由于A股市场的公司事件往往多发生于中小创的股票,而这类股票在规模因子的驱动下,具有显著的风格收益,所以利用风险模型剔除风格收益的影响,完整的剥离出股票价格的异常收益,显得尤为重要。 2.2 事件核心逻辑 在定义了异常收益后,我们就可以对各类事件发生前后,个股异常收益的分布特征进行观察统计。我们首先给出事件驱动异常收益显著性统计的一般流程: Step1: 定义事件逻辑,统计事件(公告)发生时间点; Step2: 统计事件发生前后股票收益率,计算对应行业因子及风格因子; Step3: 根据风险模型回归方程,计算事件发生前后个股异常收益CAR; Step4: 计算事件发生全部个股异常收益AR均值;

Handler消息处理机制

Handler消息处理机制 1.概述。 Handler消息处理机制对于初学者来说,应该算是一块心病,几乎每次面试都会被问到,今天我抽时间从源码的角度总结一下相关知识点。先看一下我们平时是怎么用的,如下代码实例: public class MainActivity extends AppCompatActivity { private TextView text; private Handler mHandler; int i=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.wendangku.net/doc/658530272.html,yout.activity_main); text = (TextView) findViewById(R.id.text); mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); text.setText("变为:"+msg.what); } }; } public void sendMes(View view){ mHandler.sendEmptyMessage(i); i++; } } 很简单,onCreat()方法中实例化了一个Handler实例,实现其handlerMessage(Message msg)方法,在方法中改变TextView的显示内容,在布局文件中放了一个Button设置其android:onClick="sendMes",看一下效果:

Windows消息传递机制详解

用户是如何跟应用软件打交道的 我们来看看,用户究竟是如何与应用软件打交道的(用户不需要知道这个具体过程,但应用软件的开发人员必须知道),如下图所示: 从上图可以看到:在物理上,离用户最近的实际上是输入输出设备,下面我们看看上图中1-6这六个步骤分别表示什么意思(为了简便,在叙述时,我们的标号没有用圆圈): 1. 用户点击鼠标或者键盘; 2. Windows感觉到了鼠标或键盘的动作; 3. Windows把这个消息告诉应用程序; 4. 应用程序告诉Windows去做事,实际上就是应用程序调用Windows的API函数; 5. Windows让输出设备做事; 6. 用户获得输出。 对用户来说,没有必要了解输入输出设备和Windows的相关知识。对程序员(写应用程序的人)来说,没有必要了解输入输出设备,但是必须了解Windows的基本知识。在下面的叙述中,我们就不管输入输出设备了。

上面的过程还是很笼统,为了弄得更清楚,我们有必要了解Windows的消息机制,如图: 下面,我们来慢慢描述(上图中的虚线表示消息的流程): step0: 程序员编程,把WinMain函数和窗口回调函数写好; step1: Windows调用WinMain函数,启动应用程序,Windows会建立一个消息队列,用来存储消息。 step2: WinMain函数调用Windows的API函数,比如调用CreateWindow和ShowWindow, 从而生成并显示一个窗口。在调用CreateWindow函数时,会产生一个消息,这个消息并不进入消息队列,但窗口的回调函数仍然会处理,在此,我们不讨论非队列消息。 step3: WinMain函数调用Windows的API函数,比如调用GetMessage来从消息队列中取出消息。假设用户这个时候在窗口中点击鼠标,那么Windows会把这个事件包装成消息,投到消息队列中,GetMessage会取出这个消息,通过DispatchMessage送到Windows; step4: Windows进而会将该消息发送到窗口的回调函数,并对该函数进行调用; step5:窗口的回调函数可以对这个消息进行相应处理,这个处理的具体方法由程序员自己决定,通常是调用Windows的API函数来实现处理。

信息发布管理制度流程

信息发布管理制度 为使教育局门户网站和微信管理平台在信息化建设中发挥应有的作用,加强对网站的管理,保证其安全、有效、可靠地运行,依据国家有关法律、法规,并根据信息化建设的要求,结合我局实际,特制定本制度。 第一条门户网站发布信息实行信息审批制度,信息和相应的审批遵循“谁主管、谁负责;谁运营、谁办理”的原则。 第二条网站的信息发布由宣传科统一负责。局机关各科室及所属各单位负责提供本单位的相关信息,具体责任根据各单位工作职责划分。 第三条宣传科负责监督、审核网站内容。局机关各科室及所属各单位,所提供的内容需经本部门负责人批准后,交办公室或宣传科审核统一发布。相关我局重大新闻和重大事件的发布必须经办公室或宣传科主管领导审核后,请示分管局领导或局长,批准后方能正式发布。 第四条局机关办公室和宣传科对所有上传的涉及局新闻、政策、法规等重要信息负有责任;局机关各科室及所属各单位,对所提供的相关信息负有责任。 第五条网站上发布的信息必须符合国家有关保密规定,严禁涉密信息上网。各有关部门应制定上网信息发布审核管理制度,规范上网信息发布流程。一般情况下,拟上网发布的信息由拟稿人拟稿后须经科室初审、单位分管领导把关后方可发布,未经审核批准的信息不得上网。 第六条信息审核内容包括:上网信息有无涉密问题;上网信息目前对外发布是否适宜;信息中的数据是否准确;是否含有法律、行政法规禁止的内容等。上网信息出现安全问题的,要追究信息发布部门的责任。 第七条局机关各科室及所属各单位信息采集人员只能操作自己所负

责的相关业务内容,不得擅自修改、删除、发布其他采集人员所采集的信息。否则将追究信息采集人员和所在处室负责人的责任。 第八条局机关及所属各单位信息采集人员要严格遵守国家有关法律、行政法规,严格执行国家安全保密制度,不从事与身份不符的活动,各单位信息采集人员按照权限,采集自己所负责的相关栏目文档。 第九条局机关相关人员不得利用门户网站散布含有危害国家安全和社会稳定的信息,不得泄露国家秘密和工作秘密,不得宣扬暴力、色情等内容。网站的使用过程中,必须遵守网站各功能的使用说明和使用协议。 第十条 第十一条 第十二条 第十三条用户信息安全管理制度 网站为充分保护用户的个人隐私、保障用户信息安全,特制订用户信息安全管理制度。 1、尊重并保护用户的个人隐私,除了在与用户签署的隐私保护协议和网站服务条款以及其他公布的准则规定的情况下,未经用户授权不随意公布和泄露用户个人身份信息。 2、定期对相关人员进行网络信息安全培训并进行考核,使网站相关管理人员充分认识到网络安全的重要性,严格遵守相应规章制度。。 3、对用户的个人信息严格保密,并承诺未经用户授权,不得编辑或透露其个人信息及保存在本系统中的非公开内容,但下列情况除外: 4、①违反相关法律法规或本网站服务协议规定; 5、②按照主管部门的要求,有必要向相关法律部门提供备案的内容; 6、③因维护社会个体和公众的权利、财产或人身安全的需要;

Windows端口异常占用的处理

Windows端口异常占用的处理 【来源:小鸟云计算】 Ps.小鸟云,国内专业的云计算服务商 问题现象 服务器应用使用的端口被异常占用导致服务启动失败,例如:Windows上安装的Tomcat 无法启动,TCP 80端口已经被其它应用占用。 问题原因 应用程序需要使用的TCP/UDP端口被其它程序、或者病毒木马占用。 排查方法 使用netstat -ano命令可以找出占用端口的进程ID,而后使用tasklist /svc命令找出对应的进程。 如下给出一例安装Tomcat后,启动Tomcat提示端口被占用的处理过程。 1.使用netstat -ano |find ":80" 看到占用端口的进程ID是4,注:请根据实际情况修改端口 2.使用tasklist /svc| find "4" 看到是系统进程。注:请根据实际情况修改进程ID

3.尝试关闭了IIS ,iisreset /stop 4.但是发现80端口仍然被占用。于是使用curl -I 127.0.0.1 查看返回的server是Microsoft-HTTPAPI/2.0 而不是Server: Microsoft-IIS/7.5 能够使用Microsoft-HTTPAPI/2.0的只能是微软的产品。检查是否有安装SQL SERVER ,如果有尝试关闭SQL Server Reporting Service这个服务。 关闭后再使用curl -I 127.0.0.1 就提示80端口无法连接,说明端口已经被释放。 注意:如果没有安装curl还可以使用telnet 127.0.0.1 80 执行完,ctrl+c终止就会出现下面图片的样子,也可以看到server:Microsoft-HTTPAPI/2.0 ,当然仅靠这个是不能判断

Windows事件驱动机制-1

Windows的事件驱动机制 在Windosw系统中,程序的设计围绕事件驱动来进行。当对象有相关的事件发生时(如按下鼠标键),对象产生一条特定的标识事件发生的消息,消息被送入消息队列,或不进入队列而直接发送给处理对象,主程序负责组织消息队列,将消息发 送给相应的处理程序,使相应的处理程序执行相应的动作,做完相应的处理后将控制权交还给主程序。 在这种机制中,对象的请求仅仅是向队列中添加相应的消息,耗时的处理则被分离给处理函数。这种结构的程序中各功能模块界限分明,便于扩充,能充分利用CPU 的处理能力,使系统对外界响应准确而及时。 Windows事件驱动机制 我们当中不少使用VC、Delphi等作为开发语言的程序员是一步步从DOS 下的Basic、C++中走过来的,而且大多在刚开始学习编程时也是先从DOS下的编程环境入手的,因此在习惯了DOS下的过程驱动形式的顺序程序设计方法后,往往在向Windows下的开发环境转型的过程中会对Windows所采取的事件驱动方式感到无法适应。因为DOS和Windows这两种操作系统的运行机制是截然不同的,DOS下的任何程序都是使用顺序的、过程驱动的程序设计方法。这种程序都有一个明显的开始、明显的过程以及一个明显的结束,因此通过程序就能直接控制程序事件或过程的全部顺序。即使是在处理异常时,处理过程也仍然是顺序的、过程驱动的结构。而Windows的驱动方式则是事件驱动的,即程序的流程不是由事件的顺序来控制,而是由事件的发生来控制,所有的事件是无序的,所为一个程序员,在编写程序时,并不知道用户会先按下哪个按纽,也就不知道程序先触发哪个消息。因此我们的主要任务就是对正在开发的应用程序要发出的或要接收的消息进行排序和管理。事件驱动程序设计是密切围绕消息的产生与处理而展开的,一条消息是关于发生的事件的消息。 Windows的消息循环 Windows操作系统为每一个正在运行的应用程序保持有一个消息队列。当有事件发生后,Windows并不是将这个激发事件直接送给应用程序,而是先将其翻译成一个Windows消息,然后再把这个消息加入到这个应用程序的消息队列中去。应用程序需要通过消息循环来接收这些消息。在MFC中使用了对WinAPI进行了很好封装的类库,虽然可以为编程提供一个面向对象的界面,使Windows程序员能够以面象对象的方式进行编程,把那些进行SDK编程时最

私募基金八大策略介绍

股票策略以股票为主要投资标的,是目前国内阳光私募行业最主流的投资策略,约有八成以上的私募基金采用该策略,内含股票多头、股票多空两种子策略。由于资本市场发展的缘故,国内的私募基金运作最多的投资策略即为股票策略,持续披露净值的产品数量超过3200只,规模占全市场比重的85%左右。 纯股票多头是指基金经理基于对某些股票看好从而在低价买进股票,待股票上涨至某一价位时卖出以获取差额收益。该策略的投资盈利主要通过持有股票来实现,所持有股票组合的涨跌幅决定了基金的业绩。按选择股票的角度划分,主要分为价值投资、成长投资、趋势投资、行业投资。 随着我国金融市场的逐步完善与融资融券、股指期货等金融工具的推出,国内阳光私募基金正逐步走向真正意义上的对冲基金,在投资组合中加入对冲工具成为越来越多基金经理的选择,股票多空策略也应运而生。 代表机构:朱雀投资、民森投资 朱雀投资 自2007年运行以来,朱雀已陆续发行近50款私募产品,目前存续运作的产品数量达到46只,早期设立的4只产品累计收益率已经超过300%,为投资者实现资产的稳步增值。近几年朱雀投资还涉足新的产品类型,在量化对冲、股权投资等领域均有新的突破。尤其是在量化对冲方面,发行多只朱雀漂亮阿尔法产品,该系列产品引入股指期货对冲策略,将净值波动控制在较低水平。 投资策略分析: 稳健风格下的成长股投资。与单纯的选时型或选股型投资者不同,朱雀投资意在两者之间做出一种平衡。一方面,朱雀投资重视自上的仓位决策和行业配置;另一方面,朱雀投资也重视自下的个股选择。前者使得其业绩呈现出较为稳定的风格,后者使得其业绩在市场上行阶段保持一定程度的进攻性。 (1)仓位决策和行业配置。朱雀投资将组合的目标仓位分为高、中、低三个级别,分别对应三个不同风险等级的市场环境。在三个不同的市场环境中,组合目标仓位的运行空间分别为0-33%、33%-66%、66%-100%,具体产品的仓位由基金经理在目标仓位区间内确定。仓位确定后,通过对宏观经济运行趋势、行业景气度趋势等基本面因素的分析判断,确定投资组合中的行业配置比例。 (2)个股选择。朱雀投资在强调仓位决策的同时强调“像内部人一样理解公司”,做到投资的专注。公司长期看好与经济转型相关的行业,其核心是城镇化和内需,包括衣食住行、医疗、娱乐文化等内需产业,以及战略新兴产业等。公司区分周期类(强周期、弱周期)和非周期类(快速成长、稳定成长),并分别采取有不同的投资方法。 总结: 朱雀的管理业绩给人比较稳健的印象,这可能与核心人物李华轮券商背景有较大关系。一方面,公司会进行主动的仓位决策,另一方面也会执行被动的调仓策略,这使得其业绩可以避免因市场波动带来的大起大落。朱雀投资旗下产品两次最大的净值回撤来自2008年和2011年,但均大大低于市场整体跌幅。 债券策略 债券策略的私募基金主要以债券为投资对象,以绝对收益为目标。由于债券价格对利率变化较为敏感,基金经理需对债券组合的风险暴露进行调整,随着国债期货的推出,投资组

有害信息发现受理处置机制

有害信息发现处置机制 第一章总则 第一条为了加强对网站的安全保护,根据《中华人民共和国计算机信息系统安 全保护条例》、《计算机信息网络国际联网安全保护管理办法》及其他有关法律、行政法规的规定,制定本机制。 第二条有害信息的本着“谁主管,谁负责”、遵循依法、客观公正、合理恰当 的原则。 第三条有害信息事件是指单位和个人利用网站制作、复制、查阅和传播下列的 事件: 1. 煽动抗拒、破坏宪法和法律、行政法规实施的; 2. 煽动颠覆国家政权、推翻社会主义制度的; 3. 煽动分裂国家、破坏国家统一的; 4. 煽动民族仇恨、民族歧视,破坏民族团结的; 5. 捏造或者歪曲事实,散布谣言,扰乱社会次序的; 6. 宣扬封建迷信、淫秽、色情、赌博、暴力、凶残、恐怖、教唆犯罪的; 7. 公然侮辱他人或者捏造事实诽谤他人的; 8. 损害网站形象和网站利益的; 9. 其他违反宪法和法律、行政法规的。 第四条有害信息发生部位:在BBS、留言板等交互式栏目,在网站首页、商品信息页中张贴、传播有害信息。利用电子邮件发送危害安全、宣扬“法轮功”等邪教和扰乱社会秩序的各种谣言等有害信息。 第五条用户的通信自由和通信秘密受法律保护。任何单位和个人不得违反法律 规定,不得利用网站侵犯用户的通信自由和通信秘密。 第二章有害信息处置程序 第六条一旦发现网络有害信息的,应立即启动预案,采取“及时处理、下载保存和24小时上报制度”。 第七条网络有害信息处置前期工作程序: 1. 发现有害信息的公司员工要立即报告公司信息部,由信息部协调处理网上突发事件,摸清情况,采取措施,最大限度地遏制有害信息在网站上传播和扩散,并在第一时间内向公司主管领导及有关部门报告。 2. 信息部负责有害信息的界定及监控,一旦发现不良信息要马上删除(如遇紧急情况,可直接关闭服务器,暂停网络运行)。 3. 信息部及时对有害信息予以删除,取证留样,对有害信息的来源进行调查;在最短时间内向网络有害信息处置相关机构报告情况。 4. 信息部要对网络安全设备的记录留存,监督检查有害信息报告、清除等情况。 5. 信息安全员负责调查有害信息散布的原因、经过,收集相关证据,以有利于 事件处理时事实清楚,责任明确。 第八条网络有害信息处置后期工作程序: 1. 信息部要利用网络与信息安全技术平台,对网上有害信息和公共有害短信及 时进行封堵:对违规从事网上业务或传播有害信息的用户,依法采取责任令整顿,予以封禁用户等行政处罚措施。 2. 在事实清楚、责任明确的情况下,公司网络安全管理领导小组要对事件做出 处理决定。

Windows错误代码解释大全

遇到什么错误了就找找,应该会有帮助的。 6001 0x1771 指定的文件无法解密。 6002 0x1772 指定的文件已加密,而且用户没有能力解密。 6003 0x1773 这个系统没有有效的加密恢复策略配置。 6004 0x1774 所需的加密驱动程序并未加载到系统中。 6005 0x1775 文件加密所使用的加密驱动程序与目前加载的加密驱动程序不同。 6006 0x1776 没有为用户定义EFS 关键字。 6007 0x1777 指定的文件并未加密。 6008 0x1778 指定的文件不是定义的EFS 导出格式。 6009 0x1779 指定的文件是只读文件。 6010 0x177A 已为加密而停用目录。 6011 0x177B 不信任服务器来进行远程加密操作。 6012 0x177C 为此系统配置的恢复策略包含无效恢复证书。 6013 0x177D 用在此源文件上的加密算法需要比目标文件上更大的密钥缓冲区。 6014 0x177E 磁盘分区不支持文件加密。 6015 0x177F 这台机器已为文件加密而停用。 6016 0x1780 需要一个更新的系统来解密此加密文件。 6118 0x17E6 此工作组的服务器列表当前无法使用 6200 0x1838 要正常运行,任务计划程序服务的配置必须在系统帐户中运行。单独的任务可以被配 置成在其他帐户中运行。 6600 0x19C8 日志服务遇到无效日志扇区。 6601 0x19C9 日志服务遇到块校验无效的日志扇区。 6602 0x19CA 日志服务遇到重映射的日志扇区。 6603 0x19CB 日志服务遇到部分或未完成的日志块。 6604 0x19CC 日志服务遇到错误,原因:试图访问活动日志范围外的数据。 6605 0x19CD 日志服务用户排列缓冲区已用尽。 6606 0x19CE 日志服务遇到错误,原因:试图从读取上下文无效的排列区读取。 6607 0x19CF 日志服务遇到无效日志重新启动区域。 6608 0x19D0 日志服务遇到无效日志块版本。 6609 0x19D1 日志服务遇到无效日志块。 6610 0x19D2 日志服务遇到错误,原因:试图以无效读取模式读取。 6611 0x19D3 日志服务遇到错误,原因:日志流没有重启动区。 6612 0x19D4 日志服务遇到损坏的元数据文件。 6613 0x19D5 日志服务遇到无法由日志文件系统创建的元数据文件。 6614 0x19D6 日志服务遇到数据不一致的元数据文件。 6615 0x19D7 日志服务遇到错误,原因:试图分配和排列保留空间。 6616 0x19D8 BITS 报告计划下载已经失败了%2 次。原因是: %1。日志服务无法删除日志文件或 文件系统容器。 6617 0x19D9 日志已经达到允许分配给日志文件的容器的上限。 6618 0x19DA 日志服务试图读取或写入日志开始之前的位置。

Window消息传递机制

Window消息传递机制 MFC将thread分成winddow thread和worker thread,在讨论多现程(Multi-thread)之前,我们先只考虑window thread。 windows programming的基本工作方式和console application的不同,基本上是这样运行的,程序从WinMain()开始,然后进入一个message loop,程序在这里等待发给它的所有消息然后一一处理,直到接收到WM_QUIT的消息的时候,message loop终止,程序结束。所以整个主程序运行的过程就是等待消息,接收消息,然后处理消息的过程。 窗口建立的时候CreateWindow, RegisterWindow之类的不必太费心,MFC已经全管理妥当了,需要提起一点注意的是程序开始时HINSTANCE hInstance这个参数,在和DLL打交道的时候会帮你解决很多问题,如果一个Bitmap Load不上来,或者一个Dialog DoModal 之后不出来,估计就得向这个参数求助了,这是后话。 具体处理的消息的函数叫window procedure,具体处理消息的code叫message handler。它可以是当前应用程序的API,也可以是调用的不同DLL的API。不同的DLL叫不同的m odule。以后的文章中我会具体说明module state。是个很重要的话题。(当项目大的时候) 没有message handler的消息交给DefWindowProc()函数处理,差不多可以理解为什么也不作了。 消息包括四个参数,window handle,message ID,和另外两个参数wParam, lParam。win dow handle可以作为window的识别ID来用。所以在发送消息的时候如果可以有两种格式:CWnd *pWnd = .... if (pWnd && pWnd->GetSafeWnd()) pWnd->SendMessage(message, wParam = 0, lParam); 或者 SendMessage(pWnd->GetSafeWnd(), message, wParam, lParam ) 发送消息如果用SendMessage消息将立刻发送,如果用PostMessage,消息将进入Message queue按当前顺序发送,一般没有特别的要求PostMessage已经足够了。 处理消息的时候根据不同的Message ID交给不同的message handler去处理,一般的messa ge handler的接收格式是用wParam传一个关键的参数,如这次操作的具体ID,把其余的大量辅助信息放在lParam里。需要注意的是如果lParam传递的是一个指针(一般情况下是CO bject类的或从CObject衍生出来的),这个指针指向的变量的寿命需要足够长,因为信息Po st出去之后发送函数很可能就运行完毕了。如果发送的指针是个局部变量,接收方就一定会Crash。当然如果是发送方new出来的变量,接收方得负责帮他delete掉,这个操作很危险,而且不一定合适。有时候发送方把信息传给N个窗口,第一个窗口delete掉了第二个窗口就麻烦了,不delete掉又不能保证第二个窗口一定delete掉,所以如果可能,不用new为上策。用点什么成员变量,常数变量之类的比较好。

MFC消息机制

全面解析MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数 4.OnWndMsg() 该函数的功能首先按字节对消息进行排序,对于WM_COMMAND 消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg()函数不能找到这样的处理函数的话,则把消息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数 5.OnCommand() 该函数查看这是不是一个控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息不是控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件;如果他不是一个控件通知(或者如果控件拒绝映射的消息)OnCommand()就会调用OnCmdMsg()函数 6.OnCmdMsg() 根据接收消息的类,OnCmdMsg()函数将在一个称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是一个框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数 MFC应用程序创建窗口的过程 1.PreCreateWindow() 该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数(可以设置窗口风格等等) 2.PreSubclassWindow() 这也是一个重载函数,允许首先子分类一个窗口 3.OnGetMinMaxInfo() 该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者最小尺寸 4.OnNcCreate() 该函数也是一个消息响应函数,响应WM_NCCREATE消息,发送消息以告诉窗口的客户区即将被创建 5.OnNcCalcSize() 该函数也是消息响应函数,响应WM_NCCALCSIZE消息,作用是允许改变窗口客户区大小

相关文档
相关文档 最新文档