重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这可能是用者在SDK下开发的,用于在sdk下面嵌入一个web浏览器
专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!创新互联为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,成都做网站、网站建设、外贸营销网站建设负责任的成都网站制作公司!
如果你了解一些COM知识,就想到你需要什么来使浏览器COM对象运行
你要提供四个对象给浏览器对象:IStorage, IOleInPlaceFrame, IOleClientSite, 和IOleInPlaceSite。这是四个结构,每个都有自己的VTable,这些结构和他们的VTable都在头文件中用C定义好了。他们每个都有自己的一系列成员函数。
IStorage对象,它定义了称为IStorageVtbl的Vtable结构。在这个VTable中一共有18个函数指针(也就是说IStorage本身就有18个特定的函数,这也是为什么大家更多的使用MFC,.NET,WTL以便来使工作更简单轻松)。当然前三个函数也必须为QueryInterface(), AddRef(),和Release()。在CWebPage.c中我把这三个函数命名为Storage_QueryInterface(), Storage_AddRef(),和Storage_Release(),后面的15个方程我都是用Storage_来开头的,它们是Storage_OpenStream(), Storage_CopyTo()等等,IStorage的函数的作用是管理程序和磁盘的读写的,具体的作用和参数可以参考MSDN关于IStorage的文档。
也就是说在MSDN里面有关于对他们的注释,你没仔细看,我也懒的找!
创建IStorage的最简单的办法是把它声明为全局变量,并且用18个函数指针来初始化它,代码就是你那里面的第一个花括号,现在知道什么意思了没,就是定义指针!
现在就有了一个全局的初始化好了的IStorage的VTable----MyIStorageTable
下一步就是创建IStorage对象。最简单的还是把它声明为全局的变量并且初始化它,它只有一个VTable:
IStorage MyIStorage = { MyIStorageTable };
现在就有了IStorage的被初始化好了的全局对象MyIStorage。现在操作系统的函数随时可以调用这个对象并把它交给浏览器对象这样它就可以调用上面的18个函数了。
如果看不懂,就好好找找MSDN的注释
TO 楼主:
IStorage不是一个实际意义上的函数或者结构,虽然他被称之为结构,但是我的理解不是,它必须要有一定的 条件才能被称为结构,就是必须定义了一个有实际意义的指针或者用途,而IStorageVtbl正是用它包含的 函数定义完了的实际意义,MSDN上没注释,是因为它只有被定义过才会有实际用途,我也查过一遍,的确是没怎么介绍,我初步估计可能是用者自己的定义,只有定义成功以后才会有初始化完的VTable,这样才能继续创建对象,否则不是成了空锅里放了米想煮饭,岂不明白有米有锅也未必能煮成饭,必须要有一定的条件啊
加花括号是为了结构清晰,程序易读
这是编程序的原则
一个函数体需要一对花括号把自身的循环体语句括起来
例如你在main()里面调用一个函数,调用的循环体语句就需要花括号
for(),if()while()等语句后的循环体也可以不加,程序也能正常运行。但最好把一个循环体语句放在一个花括号里
这对以后程序的维护有很大作用
看下面程序,自己领悟,阿弥陀佛。。。
题目:计算1!+2!+3!+……+100!.要求定义和跳函数fact(n)计算n的阶乘。
#includestdio.h
double fact (int n);
main()
{
int i,j;
double item,sum;
sum=0;
for(i=1;i=100;i++){
item=1;
for(j=1;j=i;j++)
item=item*j;
sum=sum+item;
}
printf("%e\n",sum);
}
这些都不是问题,你闲来无事多编编程序,久了自然就会了,不用刻意看书记
祝你成功,记得采纳哦,谢谢
main函数是C程序的主函数,C程序都是从这个函数开始运行的,main函数后面用花括号括住所有语句,如果你还定义有其它函数,则只需要把你定义的函数名放在main里。而if是个判断语句,如果if语句后面跟有多条语句则需要用花括号括起来,<接下