• <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>

            Error

            C++博客 首頁 新隨筆 聯系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

            #

            之前一直要該tlb文件,或者修改生成之后的文件,結果總是有問題,果然VC牛逼啊,,,
            今天到網上看到終極方案了,確實是有效的

            解決辦法如下:
                UIFlash.h
              行:#import "..\Utils/Flash11.tlb" raw_interfaces_only, named_guids
              
              改為:
              #import "..\Utils/Flash11.tlb" raw_interfaces_only, named_guids, rename("IDispatchEx","IMyDispatchEx")
              可以解決以上的題目。
              
              為了兼容性更好,防止體系flash的插件更新后又有題目,干脆直接導入你本身體系的OCX,于是將這一行最好改為:
              #import "PROGID:ShockwaveFlash.ShockwaveFlash"      raw_interfaces_only,       /* Don""t add raw_ to method names */     named_guids,           /* Named guids and declspecs */        rename("IDispatchEx","IMyDispatchEx") /* fix conflicting with IDispatchEx ant dispex.h */  

            來了第二種姐姐方案:
            在UIWebXXXX.h 和.cpp中,把cpp的頭文件移動到h里邊,可能是<ExDisp.h>里邊一些宏在起作用

            #include <mshtml.h>
            #include <atlconv.h>
            #include <atlcomcli.h>
            #include "Utils/WebBrowserEventHandler.h"
            #include <ExDisp.h>
            ----------------------------------------------------
            #include "../Utils/downloadmgr.h"
            posted @ 2014-02-17 19:47 Enic 閱讀(959) | 評論 (0)編輯 收藏

            // filename: IRenderTarget.h
            // author: enic
            // date: 2014-02-12
            #pragma once
            #include "import_std.h"
            namespace elib
            {
            class IRenerTarget
            {
            public:
            virtual ~IRenerTarget(){}
                    // !!!這里原先的名字和Windows sdk中的DrawText,結果上當了。表現在基類定義的DrawText接口,派生類始終調用不到
                    // 正確的class,感覺是虛函數表查的不對,后來發現泥馬明明函數名字都是DrawText結果派生類調用DrawTextW編譯器都不
                    // 報錯誤,然后把基類的改了還居然就正常了,,,
                    // 最后發現是被windows sdk的UNICODE模式那些×××W ***A的宏忽悠了,然后編譯器這邊也沒能報錯出來,導致運行期間找
                    // 不到正確的虛函數然后傻逼了。
                    // 解決方案有兩個:1.在基類中也引入Windows的頭文件,這樣大家一起被宏定義,始終是一致的名字。但是感覺不太好,仿
                    // 佛被綁架了一樣,我不喜歡這個感覺。而且不利于跨平臺(總覺得編譯器不夠給力,應該報出來的)。或者是undefine,
                    // 或者把導致問題的依賴文件移動到cpp中,這樣應該報錯會明顯一點不至于到最后崩潰了無法分析(宏展開才能發現代碼問題)
                    // 2.該名字,果斷改了,,,以后windows api中有×××W ***A兩個版本的,果斷要記得危險,,,
            virtual bool DrawString(const estl::u16string& strText, int iX, int iY) = 0;
            };
            class CBaseRenderTarget : public IRenerTarget
            {
            public:
            virtual bool DrawString(const estl::u16string& strText, int iX, int iY)
            {
            return false;
            }
            };
            /*
            class IRenderTexture
            {};*/
            };  //~ end of namespace elib


            // filename: CDcRenderTarget.h
            // author: enic
            // date: 2014-02-13
            // note:
            //  @2014-02-14:現在最糾結的事情是,怎么在PaintEvent的時候獲取到RenderTarget,目前只能確定一件事:
            //               只有從NativeWnd才能獲取到DC,才可能創建出真實的RenderTarget,那么創建就只交給NativeWnd
            //               然后通過Paint事件傳遞出去.
            //               仔細想想,發現上面說的方式也不行,上面的方式限制了paint的時機,也就是只有發生Paint事件
            // 的時候才有可能得到Target然后繪圖,貌似不夠合理?下午想想有沒有別的辦法。
            #pragma once
            #include "../IRenderTarget.h"
            #include "CDCT.hpp"
            namespace elib
            {
                // DC渲染目標
                class CDcRenerTarget : public CBaseRenderTarget
                {
                public:
                    explicit CDcRenerTarget(CDCHandle dc);
            virtual ~CDcRenerTarget();
                public:
                    virtual bool DrawString(const estl::u16string& strText, int iX, int iY);
                private:
                    CDCHandle m_dcHandle;
                };
            };  //~ end of namespace elib
            posted @ 2014-02-15 20:39 Enic 閱讀(441) | 評論 (0)編輯 收藏

            開始使用boost::asio庫時,編譯碰到這個錯誤提示:

            fatal error C1189: #error :  WinSock.h has already been included

            查了下拋出這個錯誤的boost代碼,原來是定義了_WINSOCKAPI_,但沒有定義_WINSOCK2API_

            那哪里定義了_WINSOCKAPI_呢?

            后來在網上查了下,原來是我包含了Windows.h頭文件,而Windows.h頭文件又包含了WinSock.h這個老東西

            知道原因就簡單了,試了下,方法有三種可解決此錯誤:

            1、在包含Windows.h前定義宏WIN32_LEAN_AND_MEAN,就OK了(WIN32_LEAN_AND_MEAN表示不包含一些極少使用和偏門的資料)

            2、在包含Windows.h前包含winsock2.h

            3、在包含Windows.h前包含asio.hpp

            posted @ 2014-02-14 11:53 Enic 閱讀(568) | 評論 (0)編輯 收藏

            面試:
            1、面試心態要好,要知道,最終決定你的去留的絕對不是一個問題沒答上來——誰敢說自己都涉獵?
            2、遇到不好回答的問題要有技巧,比如下面的幾個方式:
              A、如果是比較開放的話題,可以說,感覺您這個問題很好,很有深度,我之前真沒有仔細考慮過。
              B、這個方面我了解不多,我覺得可以從幾個方面考慮會可能有助于解決問題。或者,這個我了解不多,感覺應該是××方式或者××方式或者是××方式實現的。注意,一般要說兩到三個方向。
              C、如果你回答的他說不對,一般可以問,這個我回去會仔細研究了解一下,您能否指點一個大致的方向。
            3、只要大部分基礎知識OK就行。
            4、要表現出你對程序的激情、狂熱,以及對程序的悟性。
            5、如果你能在他們所需要的行業知識或專業知識上能講個差不多,基本這事就成了。



            留下:
            1、技術上有相當大的進步空間,有人帶。
            2、開放流程的規范化上,項目框架、思想方面有進步空間——根據你的描述情況,估計沒有。
            3、能往上走一個級別。
            4、這個行業發展前景極好
            5、公司在預計的未來兩三年能看得到能高速增長。
            posted @ 2014-02-12 17:38 Enic 閱讀(296) | 評論 (0)編輯 收藏

            http://fangshunbao.blog.sohu.com/262524808.html
            posted @ 2014-02-10 20:09 Enic 閱讀(645) | 評論 (0)編輯 收藏

            #include <boost/locale.hpp>
            int _tmain(int argc, _TCHAR* argv[])
            {
            //std::locale::global(std::locale("utf-8"));
            std::locale::global(std::locale(""));  // 設置全局的C運行庫locale  可以針對cout  fstream等單獨設置 空表示默認使用當前系統字符集
            std::string strGbk = "天朝的方式開發刻錄機卡洛斯分123qwerwer繫";
            std::wstring wstr = boost::locale::conv::to_utf<wchar_t>(strGbk, "gbk");
            std::string strA = boost::locale::conv::from_utf(wstr, "GBK");
            std::cout << strGbk.c_str() << std::endl;
            std::wcout << wstr.c_str() << std::endl;
            std::cout << strA.c_str() << std::endl;
            try
            {
            std::string strBit5;
            strBit5 = boost::locale::conv::between(strA, "big5", "gbk");
            strA = boost::locale::conv::between(strBit5, "GBK", "BIG5");
            }
            catch (std::exception& e)
            {
            std::cout << e.what() << std::endl;
            }
            catch (...)
            {
            std::cout << "..." << std::endl;
            }
            std::cout << __FUNCTION__ << std::endl;
            return 0;
            }
            posted @ 2014-02-09 12:34 Enic 閱讀(3608) | 評論 (0)編輯 收藏

            以前一直沒留意:

            template<typename TCon>
            void StlClear(TCon& refCon)
            {
                TCon con;
                con.swap(refCon);
            }
            posted @ 2014-01-25 11:09 Enic 閱讀(499) | 評論 (0)編輯 收藏

            1.MFC中支持半透明button子控件
            以前一直覺得MFC中是不可能實現半透明子控件,或者透明子空間只能通過setrgn實現的,結果發現微軟沒有這么傻逼。在窗口屬性中有三個決定這個特性的三個屬性:WS_CHILD  WS_CLIPCHILDREN  WS_CLIPSIBINDGS

            2.C++異常堆棧追蹤
            出了谷歌那一套還有libcsdbg  addr2line
            posted @ 2014-01-24 10:18 Enic 閱讀(494) | 評論 (0)編輯 收藏

            //刷新
            void CTaskerDlg::Refresh()
            {
            DWORD NewProcessID[200];
            int NewProcessTotal;
            //獲得所有ID
            DWORD  cbNeeded;
            if ( !EnumProcesses( NewProcessID, sizeof(NewProcessID), &cbNeeded ) )  //receive all the Process ID Saved in aProcesses
            {::MessageBox(NULL,TEXT(""),TEXT("Can not EnumProsses"),0);return;}
            NewProcessTotal = cbNeeded / sizeof(DWORD); //the total of Process ID
            //假如沒有ID總數沒有變化,則無需更新列表
            if (NewProcessTotal==OldProcessTotal)
            return;
            //全部清除
            m_list.DeleteAllItems();
            m_imagelist.DeleteImageList( );
            //設置圖標
            m_imagelist.Create(16,16,ILC_COLORDDB,2,2); //創建CImageList 16,16是圖標的大小
            m_list.SetImageList(&m_imagelist,LVSIL_SMALL);//把CListCtrl中的CImageList聯   
            int nItem=0;
            HANDLE hProcess = NULL; //進程句柄
            TCHAR szProcessName[MAX_PATH] ={0}; //進程的名稱
            TCHAR szProcessPath[MAX_PATH] ={0}; //進程路徑
            HMODULE hMod=NULL; //進程的第一個模塊
                DWORD ModulecbNeeded; //儲存進程模塊的大小
            SHFILEINFO stFileInfo;
            char buf[10];
            for (int i = 0; i < NewProcessTotal; i++ )
            {
            hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,FALSE, NewProcessID[i]);//get the handle of every Process which is Indentified by Process ID
                    if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &ModulecbNeeded) ) // 列舉某個進程的模塊,第一個模塊就是創建此進程的主exe程序 
            {
            if (    GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ) //獲得程序名
                && GetModuleFileNameEx( hProcess, hMod, szProcessPath, sizeof(szProcessPath))  )//獲得模塊路徑
            {
            //獲取圖標
            :: SHGetFileInfo(szProcessPath,0, &stFileInfo,sizeof(stFileInfo),SHGFI_ICON|SHGFI_SMALLICON ); //添加圖標到m_imagelist (CImageList m_imagelist)
            //向m_imagelist添加圖標
            int n=m_imagelist.Add(stFileInfo.hIcon);
            //把程序名,路徑,進程ID添加到ClistCtrl
            m_list.InsertItem(nItem, szProcessName,n);//插入1行"11"代表第0列的數據 參數(行數,標題,圖標索引)
            m_list.SetItemText(nItem, 2, szProcessPath);
            //更新Processdata[nItem].ID
            Processdata[nItem].ID=NewProcessID[i];
            //更新進程CPU使用率
            m_list.SetItemText(nItem, 1, itoa( GetProcessUsage(&Processdata[nItem]) ,buf,10) );
            //改變nItem
            nItem++;
            }
            }
            CloseHandle(hProcess);
            }
            //更新OldProcessID
            OldProcessTotal=NewProcessTotal;
            }
            //刪除進程
            void CTaskerDlg::OnDeleteProcess() 
            {
            //獲得選中的行
            int nItem;
            POSITION   pos   =   m_list.GetFirstSelectedItemPosition();   
            if   (pos   !=   NULL)   
                    while   (pos)   
            nItem=m_list.GetNextSelectedItem(pos);   
            //關閉進程
            HANDLE hProcess = OpenProcess(  PROCESS_TERMINATE, FALSE, Processdata[nItem].ID );
            if( NULL != hProcess )
            {
            if(IDOK==MessageBox("確定要刪除此進程嗎?","提示",MB_OKCANCEL) )
            {
            if( TerminateProcess( hProcess, 0 ) )
            {
            CloseHandle( hProcess );
            //刪除CListCtrl上的項
            m_list.DeleteItem(nItem);
            }
            else
            MessageBox("不能結束進程!");
            }
            else 
            CloseHandle(hProcess);
            }
            }
            posted @ 2014-01-16 00:11 Enic 閱讀(307) | 評論 (0)編輯 收藏

            將boost更新到1.53時, 發現luabind死活編譯不過, 報錯如下

            error: missing binary operator before token "("

            根據老外的描述, boost中的BOOST_PP_ITERATION_FLAGS從1.49版本后發生了一些變化.

            在git找到一個patch, 鏈接在此

            以下簡單描述

            修改call_function.hpp, call_member.hpp及wrapper_base.hpp

            去掉#elif BOOST_PP_ITERATION_FLAGS() == 1

            更換為

            #else

            #if BOOST_PP_ITERATION_FLAGS() == 1

            然后在源碼底部加一個#endif即可

            posted @ 2014-01-15 14:42 Enic 閱讀(389) | 評論 (0)編輯 收藏

            僅列出標題
            共22頁: First 8 9 10 11 12 13 14 15 16 Last 
            久久综合狠狠综合久久综合88| 国产精品久久自在自线观看| 久久精品免费网站网| 精品久久久久久无码人妻热| 久久精品国产99久久丝袜| 色天使久久综合网天天| 久久亚洲中文字幕精品有坂深雪| 国产精品久久免费| 最新久久免费视频| 精品999久久久久久中文字幕| 久久精品国产精品亚洲艾草网美妙| 欧美与黑人午夜性猛交久久久| 日产精品久久久久久久性色| 久久99亚洲综合精品首页| 婷婷五月深深久久精品| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 一本色综合网久久| 精品无码久久久久久国产| 色婷婷综合久久久中文字幕| 欧美亚洲另类久久综合婷婷 | 精品久久久久久国产潘金莲| 亚洲午夜无码久久久久小说| 久久婷婷国产麻豆91天堂| 麻豆成人久久精品二区三区免费| 日本亚洲色大成网站WWW久久 | 久久亚洲国产成人影院| 大香网伊人久久综合网2020| 97精品久久天干天天天按摩| 日韩乱码人妻无码中文字幕久久| 久久亚洲中文字幕精品一区| 国产亚洲精久久久久久无码AV| www性久久久com| 亚洲一本综合久久| 日本福利片国产午夜久久| 香蕉久久一区二区不卡无毒影院| 久久夜色精品国产噜噜噜亚洲AV| 伊人久久综合成人网| 久久综合九色综合网站| 久久精品中文闷骚内射| avtt天堂网久久精品| 99久久99久久精品免费看蜜桃|