VC语言

本类阅读TOP10

·VC++下使用ADO编写数据库程序
·VC++ 学习笔记(二)
·Windows消息大全
·每个开发人员现在应该下载的十种必备工具
·在2000和xp下,隐藏进程,VC6.0测试通过!!!
·用Visual C++打造IE浏览器(1)
·Netmsg 局域网聊天程序
·教你用VC6做QQ对对碰外挂程序
·VC++学习笔记(四)
·VC++中经常使用的函数!~~

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
使用多线程绘图(三)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

   在CDib中我们每次读入图像的一行,然后发送WM_SETPOS消息给界面线
程,界面则刷新当前图像和进度条,在ON_WM_SETPOS中,wParam为bmp总行
数,lParam为目前处理的行数,为了简化程序我们只处理自底向上(即bmp图
像高度>0)的图像.
   void CDemoDlg::ON_WM_SETPOS(WPARAM wParam, LPARAM lParam)
   {
     CRect clientRc;
     GetClientRect(&clientRc);   //取得当前窗体大小

     CProgressCtrl *cw;
     cw=(class CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
     cw->SetRange (0,100);       //设置进度条

     float l;
     if (wParam!=0)
         l=(float) lParam/(float)wParam*100;
     else
         l=0;
    cw->SetPos ((int)l);       //更新进度条

    CRect rc;
    rc.SetRect (0,wParam-lParam,clientRc.Width(),wParam-lParam+1);
    InvalidateRect(&rc,false); //刷新当前行
   }
   至此我们的界面程序基本完成.

   2.CDib设置:
   下面我们进行CDib的构建,为了方便图像的显示处理我们继承CBitmap构建CDib,
为了解说方便,我们只处理24位色图,这里我们给出CDib基本结构,其他部分读者可以
自由扩充.

   class CDib : public CBitmap 
   {
    public:
             CDib();                            //构造函数
            virtual ~CDib();                //析构函数
            BYTE * m_lpBits;            //数据指针,指向cbitmap的数据区
            LPBITMAPINFOHEADER m_lpBmih;//图像头指针
            HANDLE hMutex;          //互斥变量
            HANDLE hStopEvent;    //线程读到此信号,立即退出现有的操作
            CWnd * m_Wnd;            //用于子线程发送消息界面指针
            CWinThread  *m_cAniThread;  //多线程中,子线程对象
            virtual void DoStop();      //用于界面线程中停止当前线程
            BOOL LoadBmp(LPCTSTR lpszPathName, CDC* pDC = NULL);
                                                   //由bmp读入图像
            static UINT ThreadProcRead(LPVOID parm);
                                                  //多线程函数读入图像
            .
            .
            .
    protected:
            BOOL AttachDib(HGDIOBJ hObject);
                                                 //Attach Object
            BOOL DeleteDib();      //delete object
            void Initialize();             //设置图像头等操作
            .
            .
            .
   }




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有