• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            小步慢跑

             

            richedit 打開包含 ole 對象 的大文件出現“內存不足”

            起因是我在ocx中封裝了一個 richedit2.0 控件,并自己寫了一個 用于顯示圖片 ole 對象 。在我的ocx中插入大量的ole對象,大約3000個,然后保存為rtf。再使用我的ocx控件打開這個rtf時,會提示 內存不足。跟蹤代碼時發現在我實現的  IRichEditOleCallback 接口的 GetNewStorage(LPSTORAGE* lplpstg) 中報錯。

            我的程序中創建 IStorage的思路是,在   IRichEditOleCallback 接口初始化時調用 StgCreateDocfile 創建一個根 Istorage,以后每個對象插入的時候   IRichEditOleCallback 的  GetNewStorage 接口被調用,在 GetNewStorage 方法中 在   根 Istorage 下建立一個subStroage。 



            HRESULT hResult = ::StgCreateDocfile(NULL,STGM_TRANSACTED|STGM_READWRITE | STGM_SHARE_EXCLUSIVE |STGM_CREATE ,
            0, &m_pStorage );


            //建立一個sub storage

            WCHAR tName[50] = {0};
             swprintf(tName, L"substorage%d", m_iNumStorages);

            HRESULT hResult = pStorage->CreateStorage(tName,
            STGM_TRANSACTED|STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE ,
            0, 0, lplpstg );


            后來發現 把  STGM_TRANSACTED 標識去掉就可以了。有點莫名其妙,估計是事務的處理會導致內存的占用增加的緣故吧。

            另外 在msdn 中 搜索 STGM ,注意紅色的字體,也就是收 使用com中的 IStorage 接口,是不能創建具有  STGM_TRANSACTED 表示的 IStream對象的 

            STGM_TRANSACTED
            In transacted mode, changes are buffered and written only if an explicit commit operation is called. To ignore the changes, call the Revert method in the IStream, IStorage, or IPropertyStorage interface. The COM compound file implementation of IStorage does not support transacted streams, which means that streams can be opened only in direct mode, and you cannot revert changes to them, however transacted storages are supported. The compound file, stand-alone, and NTFS file system implementations of IPropertySetStorage similarly do not support transacted, simple property sets because these property sets are stored in streams. However, transactioning of nonsimple property sets, which can be created by specifying the PROPSETFLAG_NONSIMPLE flag in the grfFlags parameter of IPropertySetStorage::Create, are supported.

            posted on 2012-07-13 09:43 zaccheo 閱讀(1254) 評論(0)  編輯 收藏 引用

            導航

            統計

            常用鏈接

            留言簿

            隨筆分類(23)

            隨筆檔案(26)

            文章分類(1)

            文章檔案(1)

            csdn

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品99久久久久久www| 久久精品国产半推半就| 色综合久久精品中文字幕首页| 久久99精品免费一区二区| 精品国产日韩久久亚洲| 久久久无码精品亚洲日韩蜜臀浪潮 | 久久久久国色AV免费观看| 国产激情久久久久影院小草| 2020久久精品国产免费| 亚洲欧美日韩中文久久| 久久久久亚洲精品天堂| 久久精品国产一区二区三区日韩| 久久精品www| 久久99国产精品99久久| 一本色道久久88综合日韩精品 | 久久精品18| 欧美成人免费观看久久| www亚洲欲色成人久久精品| 91久久九九无码成人网站| 九九久久自然熟的香蕉图片| 久久影院综合精品| 久久国产免费观看精品3| 日本福利片国产午夜久久| 久久综合久久伊人| 欧洲人妻丰满av无码久久不卡 | 中文成人无码精品久久久不卡| 亚洲国产成人精品无码久久久久久综合| 久久久噜噜噜久久中文字幕色伊伊 | 国产人久久人人人人爽| 久久国产免费直播| 色综合久久最新中文字幕| 伊人伊成久久人综合网777| 99国产欧美精品久久久蜜芽| 一级a性色生活片久久无| 久久精品国产亚洲精品2020| 久久免费香蕉视频| 99久久久国产精品免费无卡顿| 婷婷久久综合九色综合绿巨人| 国内精品久久久久影院优 | 久久精品视频网| 91精品国产综合久久四虎久久无码一级|