HTMLayout的窗口创建过程
1. 注册自己的窗口类型,包括wndproc处理函数
2. 创建窗口,并制定刚才注册的窗口类型和当前窗口进程句柄
3. 将自己的window类指针传给窗口的userdata,SetWindowLongPtr(非必须)
4. 用api HTMLayoutSetCallback 设定消息回调
5. 锁定htm资源,并用HTMLayoutLoadHtml载入htm资源
6. HTMLayoutWindowAttachEventHandler来指定一个继承自event_handler的结构体
7. 添加behavior的过程,有些部分是在运行初期执行的,在1~6之前
首先自己定义的behavior继承自struct behavior。并且在定义之外,创建一个自定义的behavior的实例,通过构造函数将这
个behavior添加到全局的behavior列表里面去。
然后再loadhtml的某一个元素的时候,HTMLayoutNotifyHandler里面受到
HLN_ATTACH_BEHAVIOR的消息,然后调用默认的htmlayout::behavior::handle来绑定之前已经添加进去的行为。
其他
1.默认的htm文件要作为资源加到工程里面去。
2.虽然执行了HTMLayoutLoadHtml但是还是空白一片原因是:
WndProc里面没有追加消息转发函数HTMLayoutProcND
3.htmlayout里面有对行为的自己的实现,比如说对hyperlink的。因此当它为默认的behavior的时候,即使你没有登陆,
提供的dll也能提供一部分机能。如果将官方提供的hyperlink的源码拷贝进工程之后,可以对它的机能进行自定义,
包括在notify函数中进行自己的处理。
其他没关系的
1.在C++中,class和struct是同样的东西
区别在于class中的成员函数和变量如果不指定访问类型的话,缺省是private的,而struct中的成员函数和变量如果不知定访问类型,缺省是public。class可以继承struct。
2.1>LINK : fatal error LNK1104: ファイル'D:/visual.obj' を開くことができません。
是因为在指定追加lib的时候,所含的路径里面包含了空格。加上引号即可。
3.想查看具体link哪些lib的话,可以在工程link设定里面添加/VERBOSE:LIB