青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

kenlistian

厚積薄發. 勤為槳,思為帆

   :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理 ::
  73 隨筆 :: 4 文章 :: 22 評論 :: 0 Trackbacks

在vc6中編譯一個MFC程序時其中有段代碼在創建數據庫連接報錯。

  其源碼如下:

   其中聲明

   _ConectPtr m_pConn,在函數中

    HRESULT hr = m_pConn.CreateInstance(__uuidof(Connection));  //_T("ADODB.Connection"));
    if(FAILED(hr))
    {       
          return false;
    }

   后來在檢查,發現需要調用AfxOleInit()初始化組件即可解決。而我在文件中是加入了::CoInitialize(),但是在實際運行中該函數并沒有起到作用。

而在所宣言中,AfxOleInit包含了CoInitialize()。但是為啥AfxOleInit能解決數據連接的CreateInterface問題呢?觀察

AfxOleInit的源碼。
--------------------------------------------------------------------------------  
BOOL AFXAPI AfxOleInit()
{
    _AFX_THREAD_STATE* pState = AfxGetThreadState();
    ASSERT(!pState->m_bNeedTerm);    // calling it twice?

    // Special case DLL context to assume that the calling app initializes OLE.
    // For DLLs where this is not the case, those DLLs will need to initialize
    // OLE for themselves via OleInitialize.  This is done since MFC cannot provide
    // automatic uninitialize for DLLs because it is not valid to shutdown OLE
    // during a DLL_PROCESS_DETACH.
    if (afxContextIsDLL)
    {
        pState->m_bNeedTerm = -1;  // -1 is a special flag
        return TRUE;
    }

    // first, initialize OLE
    SCODE sc = ::OleInitialize(NULL);    //該句子做初始化ole
    if (FAILED(sc))
    {
        // warn about non-NULL success codes
        TRACE1("Warning: OleInitialize returned scode = %s.\n",
            AfxGetFullScodeString(sc));
        goto InitFailed;
    }
    // termination required when OleInitialize does not fail
    pState->m_bNeedTerm = TRUE;

    // hook idle time and exit time for required OLE cleanup
    CWinThread* pThread; pThread = AfxGetThread();
    pThread->m_lpfnOleTermOrFreeLib = AfxOleTermOrFreeLib;

    // allocate and initialize default message filter
    if (pThread->m_pMessageFilter == NULL)
    {
        pThread->m_pMessageFilter = new COleMessageFilter;
        ASSERT(AfxOleGetMessageFilter() != NULL);
        AfxOleGetMessageFilter()->Register();
    }
    return TRUE;

InitFailed:
    AfxOleTerm();
    return FALSE;
}

可見,AfxOleInit()是封裝了OleInitialize()來初始化com組件;
查詢網上資料說:OleInitialize內部調用了CoInitialize 。在OleInitialize比ConInitialize多了以下支持:  
  Clipboard    
  Drag   and   drop    
  Object   linking   and   embedding   (OLE)    
  In-place   activation    
  如果你不需要這些附加功能,就用CoInitialize或CoInitializeEx。

但是在本人程序中調用CoInitialize不行而AfxOleInit可以,難道OleInitialize中創建的所附幾個在ADO com控件上用到,但是在寫了一個控制臺上的ado程序,調用CoInitialize卻是可行的。其中細節和玄妙打個標記,容以后在研究吧,偷懶了,如果發現CoInitalize不行就用AfxOleInit吧。

0-----

汗顏:因為在app的InitInstance中的粗心末尾加了一句::UnCoInitialize(),造成coinitalize錯誤。實際上2個函數都可以初始化ado組件。mark。

posted on 2008-01-09 16:38 kenlistian 閱讀(6182) 評論(2)  編輯 收藏 引用

評論

# re: AfxOleInit 和CoInitlize的區別 2008-02-25 22:03 lls
我在控制臺程序中不能用初始化啊  回復  更多評論
  

# re: AfxOleInit 和CoInitlize的區別 2008-02-26 10:49 萬連文
記憶中AfxOleInit是對CoInitialize的成對封裝,就是簡單一點點。  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            宅男噜噜噜66一区二区66| 亚洲美女av网站| 久久精品在线播放| 国产亚洲精品激情久久| 欧美亚洲视频一区二区| 亚洲一区图片| 国产午夜精品久久久久久免费视| 欧美一区在线看| 久久精品视频在线看| 在线精品在线| 亚洲精品免费一区二区三区| 欧美人与性禽动交情品 | 国产一区二区三区在线观看免费视频| 亚洲综合精品自拍| 午夜精品久久久久久99热软件| 国产视频欧美| 欧美黄色网络| 国产精品久久9| 久久字幕精品一区| 欧美黄色精品| 欧美一区二区视频在线| 久久免费午夜影院| 一区二区三区精品视频在线观看| 亚洲一区二区在线播放| 在线不卡a资源高清| 亚洲国产一区二区视频| 国产精品毛片| 亚洲福利一区| 国产精一区二区三区| 久久久久网址| 欧美日韩免费看| 久久综合五月| 欧美理论片在线观看| 欧美专区第一页| 男人的天堂亚洲| 欧美在线|欧美| 欧美另类一区二区三区| 久久久精品一品道一区| 欧美精品九九| 久久久久久亚洲精品中文字幕 | 亚洲欧美日韩久久精品 | 国产欧美精品一区| 亚洲日本va午夜在线影院| 国产精品视频成人| 亚洲人人精品| 亚洲高清三级视频| 欧美一二三视频| 亚洲一区二区欧美日韩| 久久久久久久久岛国免费| 亚洲一线二线三线久久久| 美女视频黄a大片欧美| 久久国产精品黑丝| 欧美午夜一区二区| 欧美激情一区二区三区在线| 狠狠色狠狠色综合人人| 亚洲一区在线免费观看| 正在播放欧美视频| 你懂的成人av| 欧美成人精品不卡视频在线观看| 国产嫩草影院久久久久 | 免费观看成人| 好吊色欧美一区二区三区四区| 亚洲视频二区| 亚洲欧美变态国产另类| 国产精品v日韩精品v欧美精品网站| 亚洲国产精品一区二区尤物区| 在线色欧美三级视频| 欧美一区二视频| 久久精品综合| 国产一区视频在线观看免费| 一区二区三区久久久| 亚洲一区图片| 国产精品专区一| 午夜精品视频| 久久久噜噜噜久久中文字免| 国内精品国产成人| 久久亚洲精品伦理| 欧美国产日韩亚洲一区| 亚洲精品乱码久久久久久日本蜜臀 | 欧美黄色免费| 亚洲免费精彩视频| 欧美日韩大陆在线| 亚洲视频999| 久久九九免费视频| 在线观看日韩国产| 欧美黄色大片网站| 在线亚洲高清视频| 久久精品国产综合| 在线免费观看一区二区三区| 欧美高清在线视频| 一区二区高清| 久久久亚洲成人| 亚洲国产视频a| 国产精品99一区| 翔田千里一区二区| 免费成人高清在线视频| 一本到12不卡视频在线dvd| 欧美性事在线| 久久亚洲精品一区| 一区二区三区回区在观看免费视频| 午夜久久久久| 在线免费观看一区二区三区| 欧美理论电影在线观看| 亚洲欧洲99久久| 亚洲国产一区二区三区a毛片 | 在线观看日韩欧美| 欧美三级在线| 久久久综合激的五月天| 在线视频欧美日韩精品| 欧美freesex8一10精品| 亚洲视频中文字幕| 伊人精品在线| 国产精品久久久久久久久久久久久 | 久久久一二三| 这里只有视频精品| 在线高清一区| 国产精品自拍一区| 欧美日本亚洲| 久久综合中文字幕| 亚洲摸下面视频| 最新国产拍偷乱拍精品| 久久久国际精品| 亚洲欧美另类在线观看| 亚洲精品在线三区| …久久精品99久久香蕉国产| 国产精品久久久久久久久久久久久| 蜜桃久久精品一区二区| 午夜欧美大尺度福利影院在线看| 91久久久在线| 亚洲福利电影| 欧美成人一区二区三区片免费| 西西裸体人体做爰大胆久久久| 亚洲日本视频| 在线精品国精品国产尤物884a| 国产欧美精品日韩精品| 欧美三级免费| 欧美色123| 欧美视频一区在线| 欧美日韩成人综合在线一区二区| 久久综合精品国产一区二区三区| 羞羞色国产精品| 亚洲视频电影图片偷拍一区| 99精品国产热久久91蜜凸| 亚洲国产一成人久久精品| 欧美国产免费| 亚洲福利视频网| 亚洲国产裸拍裸体视频在线观看乱了中文| 久久蜜桃香蕉精品一区二区三区| 久久国产乱子精品免费女| 欧美伊人久久| 久久嫩草精品久久久精品| 久久精品视频导航| 久久午夜国产精品| 久久一日本道色综合久久| 久久综合九色欧美综合狠狠| 久久综合久久综合九色| 久久综合给合| 欧美高清一区| 日韩视频永久免费观看| 亚洲精品国产精品久久清纯直播 | 亚洲午夜一区| 亚洲午夜小视频| 亚洲综合色噜噜狠狠| 亚洲一区制服诱惑| 欧美一区二视频| 免费久久99精品国产自| 欧美激情免费在线| 欧美视频一区二区| 国产日本欧洲亚洲| 亚洲第一区在线| 99一区二区| 久久超碰97中文字幕| 久久综合成人精品亚洲另类欧美| 欧美成人精品福利| 日韩一级精品| 欧美一区三区三区高中清蜜桃| 久久午夜av| 国产精品xxxxx| 伊人婷婷欧美激情| 亚洲校园激情| 久久综合色一综合色88| 亚洲人成高清| 欧美亚洲系列| 欧美精品系列| 国产一区二区精品久久99| 亚洲伦理久久| 久久精品噜噜噜成人av农村| 亚洲成人在线网站| 亚洲欧美日韩一区二区三区在线观看 | 亚洲伊人网站| 欧美不卡一卡二卡免费版| 在线一区二区三区四区| 久久久综合免费视频| 欧美视频一区| 亚洲激情av| 久久精品30| 国产精品99久久久久久久vr| 麻豆av一区二区三区| 国产欧美精品va在线观看| 99精品视频网|