2011年10月2日

IE中事件详细解析(二)

摘要: 这次主要分析在不同的页面下,主要的DWebBrowserEvent2的发生时机。我们先定义一个最简单的html<html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title></head><body>HELLO</body></html>这是,生成的序列如下所示:[7012] DISPID_BEFORENAVIGATE2 paramCount:7, p0(VT_BOOL):0 p1(VT_BSTR):(null) 阅读全文

posted @ 2011-10-02 16:55 一颗麦粒 阅读(7463) 评论(1) 推荐(1) 编辑

WTL 实践笔记

摘要: 1.碰到一个很奇怪的问题,建立一个窗体后,代码如下: 1 class CAddressBar: 2 public CWindowImpl<CAddressBar> 3 { 4 public: 5 CAddressBar(void); 6 ~CAddressBar(void); 7 8 DECLARE_WND_CLASS(L"address"); 9 10 BEGIN_MSG_MAP(CAddressBar)11 //MESSAGE_HANDLER(WM_CREATE, OnCreate)12 END_MSG_MAP()13 };... 阅读全文

posted @ 2011-10-02 11:37 一颗麦粒 阅读(356) 评论(0) 推荐(0) 编辑

2011年10月1日

IE中事件详细解析

摘要: DWebBrowserEvents2::DocumentComplete Eventvoid DocumentComplete( IDispatch *pDisp, VARIANT *URL );pDisp: 指向一个文档所属window或者frame的IDispatch接口,次参数可以QueryInterface接口IWebBrowser2。URL: 一个VT_BSTR类型的VARIANT指针,代表URLDISPID : DISPID_DOCUMENTCOMPLETEnotes:URL可能和传递给WebBrowserControl的URL不一致,参数中得URL是规范化后的URL。也可能是经过 阅读全文

posted @ 2011-10-01 14:26 一颗麦粒 阅读(1349) 评论(0) 推荐(0) 编辑

2011年9月29日

如何实现IE中JS和VC之间的互相调用

摘要: 一直做IE相关的东西,但是发现对JS和VC之间如何调用不是很明白。虽然知道通过IDispatch接口可以在VC程序和JS之间进行交互,但是如何具体做一直有点模糊,所以就专门做了个实验,看看他们到底如何进行沟通。脚本语言和编译型语言之间进行通信是通过IDispatch接口来行的,这里我对双接口的理论就不进行讨论,直接看看如何用WTL代码来实现。首先定义如下的一个IDispatch实现: 1 class CExternalDisp: 2 public CComObjectRoot, 3 public IDispatch 4 { 5 public: 6 CExternalDi... 阅读全文

posted @ 2011-09-29 20:51 一颗麦粒 阅读(7065) 评论(3) 推荐(0) 编辑

2011年9月6日

C++编码规范 学习笔记

摘要: 今天上了培训C++编码规泛的课,这里做个回顾吧,强化记忆一下。成员变量在构造函数的初始化列表里进行初始化,否则,系统会生成一个临时对象,然后再赋值给成员变量。尽量使用抛异常的方式来处理非常规问题。如果要使用错误码,错误码的含义要一致。构造函数使用explickit,可以禁止掉一些默认的类型转换。(未确定)函数的名字要有含义,大小写规则要遵守嵌套括号不能多于5层。assert在release版本下是没有作用的。对于指针的使用,尽量使用智能指针来进行资源的自动释放。(RAII)对代码做profiling分析 G—profiling要有赋值构造和拷贝构造函数。就记得这么多了 阅读全文

posted @ 2011-09-06 22:01 一颗麦粒 阅读(217) 评论(0) 推荐(0) 编辑

2011年8月12日

调试JS技巧

摘要: 今天向别人学了两种调试JS脚本的方法,可以用来调试我们的脚本或者一个网站上的脚本。第一种,调试网站的JS脚本我们可以在IE8环境下按F12键,然后选择“脚本”标签页,选择启动调试,然后再脚本中打个断点就可以调试了,刷新一下页面,当执行到断点处时,就可以调试了。在firefox下装firebug也可以进行类似的操作。第二种,调试IE内核其他浏览器中的脚本打开VS,然后选择“tool”中的“attach to process”, 如果可以调试脚本的进程,就会在弹出的对话框中的TyPE属性中有一个script的选项,此时就可以attach到这个进程中。调试这个浏览器中脚本的行为。注意,需要先在Int 阅读全文

posted @ 2011-08-12 20:59 一颗麦粒 阅读(365) 评论(0) 推荐(0) 编辑

2011年8月8日

关于WM_WINDOWPOSCHANGING时间的一个小疑问

摘要: 当在WTL中处理这个事件时,如果MESSAGE_HANDLER(WM_WINDOWPOSCHANGING, OnPosChanging)LRESULT OnPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled){ WINDOWPOS wp = *(LPWINDOWPOS)lParam; WINDOWPOS* wndPos =&wp;....}按照MSDN中的说明,lParam是一个指向WINDOWPOS的指针。以我的理解可以直接使用这个数据来进行处理。但是实验发现,如果我将这个结构数据复制一下(如 阅读全文

posted @ 2011-08-08 19:23 一颗麦粒 阅读(3627) 评论(0) 推荐(0) 编辑

2011年8月7日

关于DIPS的DLL注入(第22章)

摘要: 对应于《window核心编程》第五版的576页。这个例子主要通过SetWindowsHookEx函数来将一个指定的DLL加载进目标进程,进而到达一些特殊的处理目的。DIPS这个例子实现的功能是保存桌面上所有图标的位置,使桌面的分辨率发生改变后仍然能够保持原来的布局不变。我们没有办法直接获取到这些图标的位置,因为我们的程序进程和桌面进程不是同一个,必须要将我们的dll放置在桌面的进程空间中才能访问桌面上的内容。其思路如下:整个solution分为两个项目,第一个是一个exe的程序,用来将dll注入,并且通过给dll中的窗口发消息来和dll通信,控制dll的行为。第二个是一个dll程序,用来被注入 阅读全文

posted @ 2011-08-07 11:37 一颗麦粒 阅读(407) 评论(0) 推荐(0) 编辑

2011年8月6日

WTL学习(一)窗口框架

摘要: wtl这个开发框架在开发win32程序方面有很多应用 ,现在chrome和金山等都是用的这个库,所以我要好好学习一下,故写此博客,以推动自己学习。开始我从都开始建立一个win32的窗口程序,然后一步一步的添加wtl中的模块,以求达到熟悉win32中的各个api和wtl中类的目的。首先,包含一下atlapp.h这个头文件。这个头文件中包含了CMessageLoop,这个类主要是用来管理win32的消息循环的(具体的以后再仔细分析吧);CAppModule这个类封装了一个程序中的所有的线程消息循环 。class CAppModule : public ATL::CComModule{public: 阅读全文

posted @ 2011-08-06 19:53 一颗麦粒 阅读(1936) 评论(0) 推荐(0) 编辑

2011年7月30日

Window Feature 学习

摘要: 从msdn上看到一篇文章,ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.WIN32COM.v10.en/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.htm。文中主要讲一些windows窗口的基本知识,以及一些窗口的消息流程,对我这样对window系统不熟的人来说,感觉收获还是不小。做个学习笔记,强化一下记忆。Window的窗口类型(Window Type)Overlapped Windows在window的头文件中,这种类型定义如下#define WS_OVERLAP 阅读全文

posted @ 2011-07-30 12:35 一颗麦粒 阅读(1316) 评论(0) 推荐(0) 编辑

导航