易截截图软件、单文件、免安装、纯绿色、仅160KB

使用纯C在自己的窗口中嵌入HTML控件

标 题: 【翻译】过年了,献上小礼 - 使用纯C在自己的窗口中嵌入HTML控件
作 者: xiep
时 间: 2010-01-22,13:42:29
链 接: http://bbs.pediy.com/showthread.php?t=105702
前段时间因为项目需要,所以翻译了这篇,希望对某些人有用。由于时间仓促,错误之处在所难免,请不吝指出。
另:browser lib为我改写的一个静态库,test为测试程序。
使用纯C在自己的窗口中嵌入HTML控件
原文链接:http://www.codeproject.com/KB/COM/cwebpage.aspx
翻译:xiep
简介
必须被创建的COM对象
可以选择创建的COM对象
获取浏览器对象
显示一个网页
显示一个HTML格式的缓冲区
显示一个CHM页面
调整浏览器的显示区域
后退,返回,和其他动作
释放浏览器对象
cwebpage.dll
事件
  
 
简介
将Internet Explorer当作OLE/COM对象中嵌入自己的窗口的例子很多。但这些例子通常使用MFC,.NET,C#,至少使用了Windows模板库(WTL),因为这些框架都被已经将Internet Explorer预先包装为一个易用的HTML控件。如果你想使用纯C,而不是MFC,WTL,.NET,C#,甚至是根本不使用任何C++代码,那么像使用IE的IWebBrowser2控件的例子就很少了。本文就是关于使用纯C在自己的窗口中嵌入IE浏览器的详细描述,并且附带可以运行的例子。
事实上,我已经使用C代码将IWebBrowser2包装成一个动态链接库,因此你可以在你所创建的窗口中简单的调用其中的某个函数显示一个网页或者HTML文本,而不需要了解关于COM的任何内容,除非你想修改该动态链接库的源码。
在继续阅读本文之前,你应当阅读我关于《纯C中的COM》系列文章。其中第一部分是使用COM对象的基础知识;第四部分是关于处理含有多接口的COM对象的;第二部分关于自动数据类型的使用;以及第五部分关于处理事件(回调函数)的内容。
必须被创建的COM对象
只要阅读了以上提到的文章,你就已经具备了在纯C中编写COM对象的基础知识。下面我们看看使用浏览器对象都需要做些什么。你可以边读本文边查看Simple.c(在Simple目录)。
首先浏览器对象希望我们提供至少3个COM对象,即一个IOleInPlaceFrame对象,一个IOleClientSite对象,以及一个IOleInPlaceSite对象。这些对象以及它们的虚函数表和GUID都已经在SDK的头文件中被定义。因此它们都有自己的预定义的虚函数集合。
我们来看看IOleClientSite对象吧。它的虚函数表被定义为IOleClientSiteVtbl结构。IOleClientSiteVtbl实际上是一个


相关文档:

堆栈、linux c程序存储空间布局的总结

栈主要用来存放局部变量, 传递参数, 存放函数的返回地址.esp 始终指向栈顶, 栈中的数据越多, esp的值越小.
堆用于存放动态分配的对象, 当你使用 malloc , new 等进行分配时,所得到的空间就在堆中. 动态分配得到的内存附带有分配信息, 所以你能够 realloc 和 free调它们.
全局,静态和常量是分配在数据区中的。数据区包括b ......

c程序的预处理,编译,连接过程。

自己搜集并且整理,用于参考。
1.完整流程:
C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件
 
 
 
pic from http://edmulroy.portbridge.com/oview.htm
 
2. c的预处理
预编译程序所完成的基本上是对源程序的& ......

C/S 与 B/S 的区别


 C/S 与 B/S 
1.硬件环境不同: 
  C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
  B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行&n ......

又是3只C。。。= =

1.写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
#include<stdio.h>
int gcd(int,int);
int lcm(int,int);
int gcd(int m,int n)
{
if(m%n==0)
return n;
else
return gcd(n,m%n);
}
int lcm(int m,int n)
{
return m*n/(gc ......

我的C实践(8):字搜索

  字搜索就搜索一个数中具有某些特征的位。实现如下:
/* wsearch.c:字搜索 */
/* 从左边寻找第一个0字节:第0(1,2,3)个字节是0时,返回0(1,2,3),否则返回4 */
int zbytel(unsigned x){
if((x>>24)==0) return 0;
else if((x & 0x00ff0000)==0) return 1;
else if((x & 0x0000ff00)==0) r ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号