WEB开发网
开发学院软件开发VC 你有GIF的开发许可吗?PrecSubclassWindow 以及 M... 阅读

你有GIF的开发许可吗?PrecSubclassWindow 以及 MFC 中的 EOF

 2009-02-21 20:00:10 来源:WEB开发网   
核心提示: 图二 在ImgView中旋转10月份的专栏提供了一个CPicture类,它基于 IPicture(用于处理图像的COM接口),你有GIF的开发许可吗?PrecSubclassWindow 以及 MFC 中的 EOF(6),在ImgView2中,我使用 GDI+ 中的 Image 类重写了C

图二 在ImgView中旋转

10月份的专栏提供了一个CPicture类,它基于 IPicture(用于处理图像的COM接口)。在ImgView2中,我使用 GDI+ 中的 Image 类重写了CPicture。所有给出的 Image 与 IPicture 转换相对比较简单,都已经在类中封装好了。一旦我在 CPicture 中使用 Image 代替IPicture,所有其它的类如 CPictureView 和 CPictureCtrl 都不会受影响。当然还 是会有一些小麻烦。

首先,你要初始化和释放GDI库,这不能算是麻烦,仅仅是因为 GDI+ 需要这样做。最好在程序中的 InitInstance 和 ExitInstance 做这些事:

class CMyApp : public CWinApp {
protected:
 GdiplusStartupInput m_gdiplusStartupInput;
 ULONG_PTR m_gdiplusToken;
 ...
};
BOOL CMyApp::InitInstance()
{
 VERIFY(GdiplusStartup(&m_gdiplusToken,
  &m_gdiplusStartupInput, NULL)==Ok);
 ...
}
int CMyApp::ExitInstance()
{
 GdiplusShutdown(m_gdiplusToken);
 return CWinApp::ExitInstance();
}

CMyApp::m_gdiplusToken 是一个很有用的成员变量,从 GdiplusStartup 中获得赋值,然后传递给 GdiplusShutdown;m_gdiplusStartupInput 是一个结构变量,用于保存 GDI+ 启动参数,其默认的构造函数会自动给结构体赋以默认值,这也再一次证明了 C++ 比 C 要好。

一旦加载了 GDI+,你就能使用它了。旧的 CPicture 保存了一个指向 IPicture 的指针,新版的 CPicture 则保存了一个指向 Image 的指针。跟以前一样, 有多个重载的 Load 函数可用不同的方式加载图像。以下的例子展示了新的 CPicture 用路径名加载图像。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:GIF 开发 许可

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接