我的学习园地

昨夜西风凋碧树,独上高楼,望尽天涯路。

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  14 随笔 :: 0 文章 :: 36 评论 :: 0 Trackbacks

#

http://www.cnblogs.com/wayfarer/archive/2004/04/21/6779.aspx
  昨天开机打开Visual Studio.Net,准备新建一个项目,却发生一件奇怪的事情,系统报告“automation服务器不能创建对象”错误。然后在解决方案中只见项目名,而不见项目文件了。真是奇怪。再尝试打开已有项目,却一切正常。windows应用程序,控制台,或是Web应用程序,都无法建立。
  而上周关机之前我还做了项目,不是好好的吗?百思不得其解。无奈之下,只是恢复安装.net。熬过漫长的等待,装好后打开,满以为问题解决了。结果仍然让我郁闷。横下心,干脆彻底卸载.net,然后重装。又是漫长的等待,结果让我崩溃!!! 我已经要出离愤怒了。
  这时突然才想起google(为什么现在才想起它呢?),将错误作为关键字输入搜索,赫然在第一条就显示天软论坛的贴子,打开一看,真是又高兴有气愤啊。解决之道,原来如此简单。只需要运行:regsvr32 scrrun.dll 就可以了。照方抓药,赶紧运行,再打开.net,一切OK。唉,白白浪费我之前的宝贵光阴啊!
  看情况,应该是关机时出现异常,破坏了影响Automation服务的一个DLL。
  以后我会重视google的了,不是打广告,写在这里,也算给大家一个前车之鉴!
  ----------------------
  PS .本人用baidu搜到的
posted @ 2007-12-05 09:56 冷夜月 阅读(3301) | 评论 (6)编辑 收藏

     摘要: 转一些关于函数指针的文章  阅读全文
posted @ 2007-11-22 13:07 冷夜月 阅读(301) | 评论 (0)编辑 收藏

添加头文件:
  #include <GdiPlus.h>
  加载库文件:
  #pragma comment(lib,"gdiplus.lib") //也可以在设置中添加
  使用名字空间(可无):
  using namespace Gdiplus;
  定义用到的两变量:
  GdiplusStartupInput m_gdiplusStartupInput;//gdi+版本信息、调试的回调函数、是否禁用后台线程、是否支持外部图像代码
  ULONG_PTR m_pGdiToken;//unsigned long 用于接收返回标记?
  初始化GDI+:
  GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
  使用GDI+后要清理GDI+资源:
  GdiplusShutdown(m_pGdiToken);
  注意:必须在使用任何"GDI+ Object"之前调用GdiplusStartup, 必须在调用GdiplusShutdown之前删除/销毁"GDI+ Object" 、可以在一个线程中初始化及在另外一个线程中清理资源、不能在DllMain或任何被DllMain调用的函数中初始化GDI+或清理GDI+资源,如果打算在DLL中初始化GDI+,参见MSDN


posted @ 2007-11-21 11:15 冷夜月 阅读(872) | 评论 (1)编辑 收藏

  http://bbs.gameres.com/showthread.asp?threadid=83247
  COM是得到windows支持的一个特殊功能,提供方便、简单的对象编程模型。(我对此表示怀疑^0^)
  CoInitialize、CoInitializeEx都是windows的API,主要是告诉windows以什么方式为程序创建COM对象。
  有哪些方式呢?单线程和多线程。
  CoInitialize指明以单线程方式创建。
  CoInitializeEx可以指定COINIT_MULTITHREADED以多线程方式创建。
  创建单线程方式的COM服务器时不用考虑串行化问题,多线程COM服务器就要考虑。
  在使用中,使用CoInitialize创建可使对象直接与线程连接,得到最高的性能。创建多线程对象可以直接接收所有线程的调用,不必像单线程那样需要消息排队,但却需要COM创建线程间汇集代理,这样访问效率不高。

  http://blog.csdn.net/redpetallsg/archive/2007/06/01/1633989.aspx
  CoInitialize并不装载com库,这个函数只是用来初始化当前线程使用什么样的套间。当使用这个函数以后,线程就和一个套间建立了对应关系。
线程的套间模式决定了该线程如何调用com对象,是否需要列集等
你可以看一下有关列集的资料,使用不同套间之间对象接口是通过列集来完成的。关于列集的实现,很多书上都有较详细的说明。
  CoInitialize()并不会干扰客户和服务之间的通信,套所作的事情只是让线程注册一个套间,而线程运行过程中就必然在此套间中,就象我们每个活着的人,都一定属于某个国家一样。
  需要强调的是,套间是com中用来解决并发调用冲突的很有效的办法

  用CoUninitialize释放com套间。
posted @ 2007-11-21 10:27 冷夜月 阅读(1742) | 评论 (0)编辑 收藏

仅列出标题
共2页: 1 2