登录
首页 » VC++源码 » 用VS2008+ATL开发可以显示Gif的ActiveX控件源码

用VS2008+ATL开发可以显示Gif的ActiveX控件源码

于 2022-03-31 发布 文件大小:885.40 kB
0 218
下载积分: 2 下载次数: 1

代码说明:

VS2008%2BATL开发Gif的ActiveX控件%28毛坯%29   创建一个空的解决方案,名称GifSolution。将来包含控件项目和测试项目。新建项目,弹出的对话框中选ATL项目,名称为GifAnimate确定。弹出的对话框中选择DLL服务器(可选允许合并代理存根,这样不会产生代理dll),完成后编译,这样工程框架就完成了。   组件分有窗口的和无窗口的,这里应该用有窗口的,所以添加组件的时候,外观不要基于none,最好基于CStatic。因为gif是动态的,应该用另一个线程绘制,这样不影响主线程响应消息,绘图更加流畅。   为GifAnimate项目添加类-选择ATL控件,点击添加,弹出对话框。   1.本文只是举例说明开发过程,抛砖而已。   2.样例只是框架,不能直接使用,所有代码没有经过测试   3.样例接收器GifSink和属性页卡片没有完成,懒了,呵呵   4.样例背景等很多属性没有实现   5.使用了GDI+,但GDI+的Image类的SetActiveFrame函数有问题,网上貌似没有解决办法。Debug版本不影响使用,Release版本没有测试。如果有兴趣,可以使用IPicture接口,网上很多。

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • VC++6.0 在工具栏中图标下面显示文本
    VC++6.0 在工具栏中图标下面显示文本,其实这个源码表达的功能,从事电脑的几乎每天都能看到,在Windows界面中,几乎每个图标都会有文字标签,本源码正是实现了在图标的下方添加文字标签,这样更人性化的指示出该图标的作用,本源码运行于VC6.0环境 ,编译运行后如下图所示的效果,面向VC初学者,这是个不错的基础范例。
    2023-06-03 00:00:03下载
    积分:1
  • VC++ 设置打印图形的位置
    VC++ 6.0 设置打印图形的位置,实现所见即所得的打印功能。   if(pDC->IsPrinting())//判断是否因打印或打印预览而调用OnPrepareDC()函数   {    pDC->SetViewportOrg(250,400);//设置视口坐标原点   }   //以下为显示和打印的内容   pDC->TextOut(10,10,"实现所见即所得的打印");   pDC->SetBkMode(TRANSPARENT);   pDC->Rectangle(10,40,310,350);   pDC->Ellipse(50,50,210,220);   pDC->Ellipse(70,240,280,320)   //设置映射模式   pDC->SetMapMode(MM_ANISOTROPIC);   CSize winSize = CSize(1024,768);   pDC->SetWindowExt(winSize); //设定窗口大小   //得到实际设备每逻辑英寸的像素数量   int xLogPixPerInch,yLogPixPerInch;   xLogPixPerInch=pDC->GetDeviceCaps(LOGPIXELSX);   yLogPixPerInch=pDC->GetDeviceCaps(LOGPIXELSY);   //得到设备坐标和逻辑坐标的比例   以下是实现打印:   int xExt,yExt;   xExt=winSize.cx*600/xLogPixPerInch; //按照打印机扩大视口   yExt=winSize.cy*600/yLogPixPerInch;   pDC->SetViewportExt(xExt,yExt); //设定视口大小
    2022-01-27 16:52:24下载
    积分:1
  • VC 使用LineDDA画有节点的连线实例
    本源码主要演示使用VC ++中的LineDDA画有节点的连线,画出的效果可参见截图所示。   //画线   pDC->MoveTo(10,10);   pDC->LineTo(300,300);   //使用LineDDA沿线按一定间隔画“0”   //这个回调例程将在线上每个点处被调用   //实现注解:使用lpData传递用于绘图的CDC对象的引用   CDC* pDC;   pDC = (CDC*)lpData;      if( X % 20 ==0)   {    pDC->TextOut(X,Y,_T("0"));   }
    2022-02-19 23:13:45下载
    积分:1
  • VC++ 生成Brush笔刷程序
    VC++ 生成Brush笔刷程序,使用了三种方法创建笔刷,第一种和第二种使用构造函数,第三种 创建CBrush类的一个对象myBrush3,调用CreateBrushIndirect()函数。创建了纯色、斜纹、网状方格三种形式的笔刷。   void CCreateBrushView::OnDraw(CDC* pDC)   {    CCreateBrushDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    // TODO: add draw code for native data here    // 第一种方法创建画刷    // 定义时调用构造函数    CBrush myBrush1(RGB(0,0,255));    CBrush* pOldBrush1 = pDC->SelectObject(&myBrush1);    pDC->Rectangle(100,150,250,400);    // 恢复画刷对象    pDC->SelectObject(pOldBrush1);    // 第二种方法创建画刷    // 定义时调用构造函数    CBrush myBrush2(HS_BDIAGONAL,RGB(255,0,0));    CBrush* pOldBrush2 = pDC->SelectObject(&myBrush2);    pDC->Rectangle(300,100,450,360);    // 恢复画刷对象    pDC->SelectObject(pOldBrush2);    // 第三种方法创建画刷    // 创建CBrush类的一个对象myBrush3    CBrush myBrush3;    // 设置LOGBRUSH结构;    LOGBRUSH lb;    lb.lbStyle = BS_HATCHED;    lb.lbColor = RGB(0,255,0);    lb.lbHatch = HS_CROSS;    // 调用CreateBrushIndirect()函数    myBrush3.CreateBrushIndirect(&lb);    CBrush* pOldBrush3 = pDC->SelectObject(&myBrush
    2022-01-30 23:25:40下载
    积分:1
  • VC++ Thread多线程执行不同任务的例子
    VC++ 创建多个 Thread多线程,用以执行不同任务的例子,运行程序后你可看到分别有红色、蓝色的小球,在沿各自不同的轨迹做运动,在代码中,我们创建了一个小球运动线程的主函数,分别用两个线程调用这个函数,但设定的参数不一样,在小球运动函数中,分别定义了小球X、Y方向的运动,确定重绘区域,重绘小球,挂起线程,控制小球速度,并取得客户区大小以及取得小球客户区相对于窗口客户区的位置等,最好还写了一个函数,终止蓝色和红色线程。
    2022-12-06 04:40:03下载
    积分:1
  • VC++三种直线扫描转换算法范例演示
    本源码演示了三种VC++直线扫描转换算法,这3种方式是:bresenham方法、数值微分法、中点画线法。本程序同时是一个MFC单文档程序,进行直线段扫面转换算法的算法验证。   1.使用Wizard建立单文档程序;   2.绘制20*20的网格线,格子X和Y方向间隔均为20像素,网格起始坐标在(20,20)。我们使用此网格模拟像素矩阵(),格子交叉点是像素中心。   3.输入直线段两端点,可使用以下两种方法之一:   a)对话框输入   b)鼠标在网格内以鼠标左键按下-拖动-抬起方式输入。注意:直线段两端点要自动取整到模拟的像素中心位置   4.进行直线段扫描转换,通过点击鼠标右键调用方式或者菜单调用的方式执行。计算完成后,将扫描转换结果,在模拟的像素矩阵中,使用圆形显示出来。   通过这个实验,我们可以熟悉扫描的算法,其中要注意的是判断直线的斜率,分情况处理竖直直线段、斜率绝对值大于1、斜率绝对值小于1的情况,这部分需要花费一些时间去算。总之还是对扫描算法的理解和编程基矗
    2022-03-19 09:46:38下载
    积分:1
  • 华南理工大VC++ 实验报告:学生信息管理系统 附文档
    华南理工大软件学院2016级VC++ 实验报告:学生信息管理系统 附文档,这套系统的功能分为两部分,学生部分和教务管理员部分。包括系统功能模块划分;类体系设计,即主要数据和函数功能描述;界面设计等。   1)学生功能:查看信息:个人基本信息,课表,成绩表等内容    修改信息:可修改个人基本信息   2)教务员功能: 查看信息:学生个人基本信息、课表、成绩等内容   修改信息:学生个人基本信息、课表、成绩等内容   添加学生信息:学生个人基本信息后对同班级同年级的学生进行成绩表和课表的初始化   删除学生全部信息   展示同专业同年级学生的基本信息   对同专业同年级的学生的各科成绩进行排名   3)其他功能:分文件储存不同专业不同年级学生的信息资料,方便信息的处理   添加新年级和专业的数据并初始化   各模块说明:   1)基本信息类:个人基本信息,信息的生成和获取   2)学生信息类:继承于基本信息类,增加学生特有的信息,信息的生成和获取,
    2022-03-16 11:59:31下载
    积分:1
  • VC++ 使用WinInet通过HTTP协议读取网上文件
    VC++ 6.0 使用WinInet通过HTTP协议读取网上文件   在一个按钮事件中定义了网络连接Session:   CInternetSession httpsession;//定义网络连接Session   CString Line;   CInternetFile* webfile=NULL;//定义一个文件对象指针   UpdateData();   if(m_Url.Left(7)!="http://")//如果地址不含HTTP类型标志则添加本地文件类型标志   读出文件前一部分,如果文件多于80行,三示例中只显示前80行.然后更新显示文件:   UpdateData(FALSE);//更新显示文件   delete webfile;//删除文件   GetDlgItem (IDC_SHOW)->EnableWindow (FALSE);//禁用显示按钮   httpsession.Close();//关闭连接
    2023-09-07 18:35:03下载
    积分:1
  • VC++ WeiXinPay微信扫描二维支付相关
    VC++ WeiXinPay微信扫描二维码支付相关源码,这是个VC.NET源码项目,使用了qrencode生成了二维码,本微信支付项目功能包括了生成二维码、结果签名验证、下单测试、生成15位随机字符串等,有一些公共支付接口部分,需要用时候,自己修改:   CString g_strAPIKey("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");//*改* 32位的APIkey   CString g_strAppId("xxxxxxxxxxxxxxxxxx");//*改* 用户的APPID 貌似是18位的   CString g_strBody("刘隽曦的支付测试");//*改* 商品名   CString g_strMchId("xxxxxxxxxx");//*改* 商户号貌似10位   CString g_strIp("192.168.0.136");//*改* 本机IP   int g_nTotalFree = 1;//*改*商品价格 分   本源代码仅供支付,有时候微信支付接口在变化,可能会导致程序不可用。
    2022-03-24 04:25:36下载
    积分:1
  • VC6.0模拟实现模态对话框
    VC++6.0模拟实现模态对话框,一般情况下的窗口都是基于此方式 ,当然也有非模态对话框,本款模态对话框,实现要点如下:   void MyDialog::OnButton1() //确定按钮   {    CDialog::OnOK();//调用OnOK()函数退出对话框      }   void MyDialog::OnButton2() //取消按钮   {    CDialog::OnCancel();//调用OnCancel()函数退出对话框   }   void MyDialog::OnButton3() //关闭按钮   {    int nRet = 5; // 自定义返回值    CDialog::EndDialog(nRet); // 调用EndDialog退出对话框   }
    2022-05-27 01:17:22下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载