http://www.vckbase.com/article/mfc_database/0009.htm

解决方案 »

  1.   

    CString CStlibPage3::OperateBitmap(CString m_strname)//取出位图文件并保存于临时文件
    {
        CStandardSet* m_pStandard = new CStandardSet();
        m_pStandard->Open();
        if (m_pStandard->GetRecordCount()!=0)
            m_pStandard->MoveFirst();
        int tempnumber = 0;
        CByteArray Array1;
        while (!m_pStandard->IsEOF())
        {
            if(m_pStandard->m_StandardName == m_standard_name)
            {
                Array1.Copy(m_pStandard->m_StabitmapFile);
                tempnumber = Array1.GetSize();
                break;
            }
            m_pStandard->MoveNext();
        }
        m_pStandard->Close();
        delete m_pStandard;
        
        DWORD dwWritten;
        //**********************************************
        char temp_name[_MAX_PATH];
        GetTempPath(_MAX_PATH,temp_name);
        strcat(temp_name,"bitmap.tmp");
        HANDLE fh;    for (int nIndex = 0; nIndex < tempnumber; nIndex++)
        {
           if (Array1.GetAt(nIndex) == 'B' && Array1.GetAt(nIndex + 1) == 'M' 
               && Array1.GetAt(nIndex + 2) != 'P')
           {
            int HeaderLen =   nIndex;// + sizeof(BITMAPFILEHEADER); 
            Array1.RemoveAt( 0, HeaderLen );
            break;
           }
        }
     
        LPBITMAPINFOHEADER bmiHeader = (LPBITMAPINFOHEADER)Array1.GetData() ;    fh = CreateFile(temp_name,
                        GENERIC_WRITE,
                        0,
                        NULL,
                        CREATE_ALWAYS,
                        FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN,
                        NULL);    WriteFile(fh,(LPBYTE)bmiHeader,(DWORD)tempnumber,&dwWritten,NULL);
        Array1.RemoveAll(); //Relese Memory
        CloseHandle(fh);    return temp_name;
    }void CStlibPage3::Savebmp_Data()
    {
        CStandardSet* m_pStandard = new CStandardSet();
        m_pStandard->Open(); 
        
         CString tempid = "StandardName = '" + m_standard_name+"'";
        if(m_pStandard->FindLast(tempid))
         {
            if (strBitmapPath == "")
            {
               if (!m_pStandard->CanUpdate()) return;
               m_pStandard->Edit();
               CString strupdate = "NULL";
               m_pStandard->SetFieldValue(_T("[StabitmapFile]"),COleVariant(strupdate)); 
                m_pStandard->Update();
               goto ip;
            }        CFile tempfile;
            tempfile.Open(strBitmapPath,CFile::modeRead);
            DWORD dwBufSize;
             dwBufSize = tempfile.GetLength();
            Array.SetSize(dwBufSize);
            tempfile.ReadHuge((LPSTR)(Array.GetData()), dwBufSize);
            tempfile.Close();         (m_pStandard->m_StabitmapFile).Copy(Array);
            if (!m_pStandard->CanUpdate()) return;
            m_pStandard->Edit();
             m_pStandard->SetFieldValue(_T("[StabitmapFile]"),COleVariant(Array)); 
            m_pStandard->Update();
        }
    ip:
        m_pStandard->Close();
        delete m_pStandard;
    }
      

  2.   

    注意CStandardSet类中位图的属性
    DFX_Binary(pFX, _T("[StabitmapFile]"), m_StabitmapFile);
      

  3.   

    我现在怎在做一个有关图片资料存取的数据库,数据库是SqlSever,因刚刚接触,不熟练,希望
    得到大家的帮助!