功能:
1。定义图标的位置(是否采用拖放)
2。显示图标不同的状态(没有拖放,图标可以变化)

解决方案 »

  1.   

    1)用CImageList类,不采用拖放,用draw 函数就可以控制位置
    1、在View类客户区绘制动画    在类的定义文件中加入下列变量:    POINT pt1;//图像显示的位置
        int m_Play; //将要显示图像的索引
        void CreateImageList();//创建图像列表的函数
        CImageList m_ImageList1;//图像列表对象
        int m_ImageNumber; //图像列表中图像的总数目    首先在口在函数时初始化pt1,m_Play,m_ImageNumber:        CImageView::CImageView()
        {
        // TODO: add construction code here
           pt1.x =1;
            pt1.y =1;
           m_Play=0;
          m_ImageNumber=0;
         }    CreateImageList()的实现如下:   void CImageView::CreateImageList()
    {
         m_ImageList1.Create (64,32,ILC_COLOR,5,2);
         HICON hIcon = ::LoadIcon(AfxGetResourceHandle(),
            MAKEINTRESOURCE(IDI_ICON1));
        m_ImageList1.Add(hIcon);
        m_ImageNumber++;
        hIcon = ::LoadIcon(AfxGetResourceHandle(),
            MAKEINTRESOURCE(IDI_ICON2));
        m_ImageList1.Add(hIcon);
        m_ImageNumber++;
        hIcon = ::LoadIcon(AfxGetResourceHandle(),
            MAKEINTRESOURCE(IDI_ICON3));
        m_ImageList1.Add(hIcon);
        m_ImageNumber++;   .........//把您要播放的所有资源加入图像列表。}在OnCreate函数中设置计时器,并创建图像列表:     int CImageView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if (CView::OnCreate(lpCreateStruct) == -1)
            return -1;    // TODO: Add your specialized creation code here
        CreateImageList();
        SetTimer(1,500,NULL);
        return 0;
    }
    响应ON_TIMER消息,显示动画:         void CImageView::OnTimer(UINT nIDEvent)
    {
        // TODO: Add your message handler code here and/or call default
        CDC *pDC=GetDC();    if(m_Play>m_ImageNumber)
            m_Play=0;
            m_ImageList1.Draw(pDC,m_Play,pt1,ILD_TRANSPARENT);
            m_Play++;
            ReleaseDC(pDC);
            CView::OnTimer(nIDEvent);
    }
      

  2.   

    改变相应的参数就可以啊你说的图表数组放在CImageList里就很好
    设置界面用对话框
      

  3.   

    改变位置用MoveWindow,改变图标用LoadIcon在运行的时候根据需要再改变好了