你有GIF的开发许可吗?PrecSubclassWindow 以及 MFC 中的 EOF
2009-02-21 20:00:10 来源:WEB开发网图二 在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 用路径名加载图像。
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››开发一个自己的HTML在线编辑器(一)
- ››开发一个自己的HTML在线编辑器(二)
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››开发移动 Web Ajax 应用
- ››开发者眼中的iPhone与Android
- ››开发者或想使用的10个Android2.2新特性
更多精彩
赞助商链接