CWinApp: The Application Class
摘要:【CWinApp: The Application Class】 An application built on the framework must have one and only one object of a class derived fromCWinApp.This object i...
阅读全文
WSAStartup function
摘要:【WSAStartup function】ParameterswVersionRequested[in]The highest version of Windows Sockets specification that the caller can use. The high-order byte ...
阅读全文
All About BHO
摘要:【All About BHO】 IE6中,因为一个iexplore.exe只有一个窗口,所以一个iexplore.exe加载一份BHO。 IE8中,一个iexplore.exe有多个tab,每个tab生成一个你的BHO对象。 每一个窗口,对应一个IWebBrowser对象,对应一个或多个IHTMLWindow、IHTMLDocument,每个IHTMLDocument与IHTMLWindow一一对应。 多个IHTMLWindow之间有层级关系,只有一个窗口是顶级窗口。
阅读全文
Relationship of IHTMLWindow & IHTMLDocument
摘要:【RelationShip】 Typically, the browser creates onewindowobject when it opens anHTMLdocument. However, if a document defines one or more frames—that is, contains one or moreframeoriframetags—the browser creates onewindowobject for the original document and one additionalwindowobject for each frame. ..
阅读全文
OLE vs. Active Technology
摘要:【OLE vs. Active Technology】 OLE vs. Active technology: The name OLE denotes the technologies associated with linking and embedding, including OLE containers, OLE servers, OLE items, in-place activation (or visual editing), trackers, drag and drop, menu merging. The term Active applies to the Compon.
阅读全文
Fundamentals of ATL COM Objects
摘要:【Fundamentals of ATL COM Objects】The following illustration depicts the relationship among the various classes and interfaces used in defining an ATL COM object.ATL implementsIUnknownin two phases:CComObject,CComAggObject, orCComPolyObjectimplements theIUnknownmethods.CComObjectRootorCComObjectRootE
阅读全文
Automation Clients
摘要:【Automation Clients】 Automation makes it possible for your application to manipulate objects implemented in another application, or to expose objects so they can be manipulated. An automation client is an application that can manipulate exposed objects belonging to another application. The applicat.
阅读全文
ActiveX Control Test Container
摘要:【ActiveX Control Test Container】 在windows7系统中,vs2008环境下用MFC ActiveX Control生成的tstcon32.exe在win7下不能运行,但是在xp系统中却能正常编译,解决方法: 分别在TstCon和TCProps两个Project的StdAfx.h文件加入 #define _WIN32_WINNT 0x0600. 原始TstCon工程没有相应语句之间添加即可;原始TCProps工程将#define _WIN32_WINNT 0x0400改为#define _WIN32_WINNT 0x0600即可。参考:http://ww...
阅读全文
包容与聚合
摘要:【包容与聚合】 左边的是包容,右边的是聚合。
阅读全文
开启远程XUL
摘要:【开启远程XUL】 参考:https://developer.mozilla.org/zh-cn/Remote_XUL firefox自4.0起(2011年4月版本,目前最新版为13.0),开始禁用远程XUL,这阻碍了初学者的调试,我们可以修改firefox参数,来开启远程XUL。 1)location bar输入:about:config。 2)在客户区右键,选新建BOOL值,添加的键值对“dom.allow_XUL_XBL_for_file”:“TRUE”。 这样,firefox就可以启用远程XUL了。
阅读全文
Plugin的生命周期
摘要:【Plugin的生命周期】The life cycle of a plug-in, unlike that of an application, is completely controlled by the web page that calls it. This section gives you an overview of the way that plug-ins operate in the browser.When Gecko starts, it looks for plugin modules in particular places on the system.When t
阅读全文
WTL中对话框数据交换
摘要:【WTL中的对话框数据交换】 WTL的DDX(对话框数据交换)很像MFC,相当简单,核心思想是,做一张表统一管理所有的变量与控件的交互。(看了这么多代码,发现所谓的框架,其核心思想就是,统一管理,而统一管理的核心要点,就是表驱动) 一、使用DDX时,先让类继承CWinDataExchange,如下图: 二、定义交互表,如下图: 三、然后在OnCreate中调用,BEGIN_DDX_MAP宏定义的函数。 以上三步完了之后,就可以用m_wndEdit操作IDC_EDIT了。 最后,说明,DDX本质是Subclass,Subclass本质是Hook。Over。
阅读全文
WM_CLOSE、WM_DESTROY、WS_QUIT
摘要:【窗口的退出】 一个应用程序的退出涉及三个消息,WM_CLOSE、WM_DESTROY、WM_QUIT 。这三个消息很容易混淆,在这里记录一下。【WM_CLOSE】 Windows提供给开发人员一个决定是否关闭窗口的机会。如果要关闭,则调用::DestroyWindow。【WM_DESTROY】 在上一个消息中,如果调用了::DestroyWindow,则会有此消息的产生。此消息的目的是给程序员一个控制是否关闭线程的机会。如果关闭线程,则调用::PostQuitMessage。【WM_QUIT】 在上一个消息中,如果调用了::PostQuitMessage,则会产生此消息。此消息的目的...
阅读全文
WTL之窗口子类化
摘要:【窗口子类化】什么是子类化? 在某控件已经创建的情况下,为了获得窗口消息,必须子类化它。子类化不需要创建一个完整的新窗口类,只需要拦截单个窗口。子类化是通过创建某个窗口的实例,并且使用SetWindowLong(GWL_WNDPROC)将它的WndProc替换成我们自己的。替换的WndProc首先得到所有的消息,它可以决定是否让原来的WndProc处理这些消息。如果认为盐类化是一个类的特例,那么子类化就是单个实例的特例。
阅读全文
WTL之为什么需要WM_NOTIFY?
摘要:【相关的宏定义】1、COMMAND_HANDLER、COMMAND_ID_HANDLER、COMMAND_CODE_HANDLER、COMMAND_RANGE_HANDLER2、NOTIFY_HANDLER、NOTIFY_ID_HANDLER、NOTIFY_RANGE_HANDLER、NOTIFY_RANGE_HANDLER【为什么 需要WM_NOTIFY】 对于Windows1.0到Windows3.x,公用WM_COMMANDE就够了。但是当新的Shell组在建立新控件时,组员真的希望发送比控件的ID和通知码更多的信息。不幸的是,WM_COMMAND已经使用了WPARAM和LPARAM的.
阅读全文
WTL之窗口超类化(父类化)
摘要:【窗口超类化】 窗口超类化(superclass) Windows的超类化类似于C++的继承,超类化是一种技术,它复制已有窗口类的WNDCLASSES结构,并赋予它自己的名字和自己的WndProc。当窗口接收到一个消息后,消息就会被路由到新的WndProc。如果新的WndProc决定不完全处理这个消息,则消息将被路由到原来的WndProc,而不是被路由到DefWindowProc。--《ATL Internal》 使用超类化的原因与使用实现继承一样,由于派生类需要扩展基类的一些功能。ATL提供DECLARE_WND_SUPERCLASS来支持超类化。 …… 弄了这么久,今天算是弄明白...
阅读全文
ATL之STDTHUNK
摘要:【ATLSTDTHUNK】1、什么是_stdcallthunk?2、这个Thunk到底是个麻东西? Thunk在不同环境下,有着各自己的意思。这里的_stdcallthunk,在头文件“atlstdthunk.h”中,意思是自定义的代码片段。也就是,_stdcallthunk这个结构,是计算机指令,不是数据。3、汇编指令的组成是怎样的? 汇编指令的组成为:指令 + 数据4、那么_stdcallthunk这个结构代表什么指令呢? 两条:move [esp+0x4],pthis jmp relproc5、你怎么知道0x042444c7代表move [esp+0x4],0xe9代表jmp呢? 请使用
阅读全文
WTL之CMessageLoop
摘要:【WTL消息循环】1、WTL消息循环层次分明,结构清晰,通俗易懂,不多说,先上王道。m_aMsgFilter是个消息过滤器,m_aIdleHandler是个空闲消息处理器,m_msg可无视。2、消息循环通过一个Run函数来执行,真是相当相当简单。WTL消息循环太简单了,不多扯了。不懂的直接看源码。
阅读全文
WTL之CAppModule
摘要:【WTL起步】1、WTL应用程序入口代码处,_Module开始被使用,如下: 在这简单的4行代码间,就是你的应用程序代码运行的地方。2、那么这个_Module是应用程序定义的东西呢?还是WTL库定义的东西呢? 我们在工程主CPP里找到_Module的定义,所以,_Module定义在工程中,而非WTL库中。3、这个CAppModule到底是干嘛的呢?它有啥功能呢? 我们看到CAppModule继承了CComModule,第一眼看上去,以为扯上CComModule了,实际上不然。查阅MSDN文档,CComModule已经obsolete,它被拆分成CAtlWinModule、CAtlComModu
阅读全文
ATL之跨套间访问
摘要:【跨套间访问】 COM对象接口只能在COM线程中调用,COM允许从一个套间中引出接口,并且引用到另一个套间中,使得对象的套间之外也能看到套间的接口。 COM使用一种称为列集(Marshal)的技术,允许接口指针可以被跨越套间边界传递出去。 列集一个接口指针,实际上只是简单地把接口指针变换成一个可被传输的字节流,散集这个字节流,就能还原出接口指针。当散集发生在同一套间的时候,散集出来的指针指向实际的对象;当散集发生在不同套间的时候,散集出来的指针实际指向的一是一个代理指针,通过这个代理指针,保证了COM对象的线程安全性。 以上三段小文字言简意赅地介绍了跨套间访问的散集/列集技术。如有未明,请查看
阅读全文