• <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++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

            #

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

            解決辦法如下:
                UIFlash.h
              行:#import "..\Utils/Flash11.tlb" raw_interfaces_only, named_guids
              
              改為:
              #import "..\Utils/Flash11.tlb" raw_interfaces_only, named_guids, rename("IDispatchEx","IMyDispatchEx")
              可以解決以上的題目。
              
              為了兼容性更好,防止體系flash的插件更新后又有題目,干脆直接導(dǎo)入你本身體系的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 */  

            來(lái)了第二種姐姐方案:
            在UIWebXXXX.h 和.cpp中,把cpp的頭文件移動(dòng)到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 閱讀(952) | 評(píng)論 (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,結(jié)果上當(dāng)了。表現(xiàn)在基類定義的DrawText接口,派生類始終調(diào)用不到
                    // 正確的class,感覺是虛函數(shù)表查的不對(duì),后來(lái)發(fā)現(xiàn)泥馬明明函數(shù)名字都是DrawText結(jié)果派生類調(diào)用DrawTextW編譯器都不
                    // 報(bào)錯(cuò)誤,然后把基類的改了還居然就正常了,,,
                    // 最后發(fā)現(xiàn)是被windows sdk的UNICODE模式那些×××W ***A的宏忽悠了,然后編譯器這邊也沒能報(bào)錯(cuò)出來(lái),導(dǎo)致運(yùn)行期間找
                    // 不到正確的虛函數(shù)然后傻逼了。
                    // 解決方案有兩個(gè):1.在基類中也引入Windows的頭文件,這樣大家一起被宏定義,始終是一致的名字。但是感覺不太好,仿
                    // 佛被綁架了一樣,我不喜歡這個(gè)感覺。而且不利于跨平臺(tái)(總覺得編譯器不夠給力,應(yīng)該報(bào)出來(lái)的)。或者是undefine,
                    // 或者把導(dǎo)致問(wèn)題的依賴文件移動(dòng)到cpp中,這樣應(yīng)該報(bào)錯(cuò)會(huì)明顯一點(diǎn)不至于到最后崩潰了無(wú)法分析(宏展開才能發(fā)現(xiàn)代碼問(wèn)題)
                    // 2.該名字,果斷改了,,,以后windows api中有×××W ***A兩個(gè)版本的,果斷要記得危險(xiǎn),,,
            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:現(xiàn)在最糾結(jié)的事情是,怎么在PaintEvent的時(shí)候獲取到RenderTarget,目前只能確定一件事:
            //               只有從NativeWnd才能獲取到DC,才可能創(chuàng)建出真實(shí)的RenderTarget,那么創(chuàng)建就只交給NativeWnd
            //               然后通過(guò)Paint事件傳遞出去.
            //               仔細(xì)想想,發(fā)現(xiàn)上面說(shuō)的方式也不行,上面的方式限制了paint的時(shí)機(jī),也就是只有發(fā)生Paint事件
            // 的時(shí)候才有可能得到Target然后繪圖,貌似不夠合理?下午想想有沒有別的辦法。
            #pragma once
            #include "../IRenderTarget.h"
            #include "CDCT.hpp"
            namespace elib
            {
                // DC渲染目標(biāo)
                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 閱讀(438) | 評(píng)論 (0)編輯 收藏

            開始使用boost::asio庫(kù)時(shí),編譯碰到這個(gè)錯(cuò)誤提示:

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

            查了下拋出這個(gè)錯(cuò)誤的boost代碼,原來(lái)是定義了_WINSOCKAPI_,但沒有定義_WINSOCK2API_

            那哪里定義了_WINSOCKAPI_呢?

            后來(lái)在網(wǎng)上查了下,原來(lái)是我包含了Windows.h頭文件,而Windows.h頭文件又包含了WinSock.h這個(gè)老東西

            知道原因就簡(jiǎn)單了,試了下,方法有三種可解決此錯(cuò)誤:

            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 閱讀(558) | 評(píng)論 (0)編輯 收藏

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



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

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

            #include <boost/locale.hpp>
            int _tmain(int argc, _TCHAR* argv[])
            {
            //std::locale::global(std::locale("utf-8"));
            std::locale::global(std::locale(""));  // 設(shè)置全局的C運(yùn)行庫(kù)locale  可以針對(duì)cout  fstream等單獨(dú)設(shè)置 空表示默認(rèn)使用當(dāng)前系統(tǒng)字符集
            std::string strGbk = "天朝的方式開發(fā)刻錄機(jī)卡洛斯分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 閱讀(3599) | 評(píng)論 (0)編輯 收藏

            以前一直沒留意:

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

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

            2.C++異常堆棧追蹤
            出了谷歌那一套還有l(wèi)ibcsdbg  addr2line
            posted @ 2014-01-24 10:18 Enic 閱讀(491) | 評(píng)論 (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總數(shù)沒有變化,則無(wú)需更新列表
            if (NewProcessTotal==OldProcessTotal)
            return;
            //全部清除
            m_list.DeleteAllItems();
            m_imagelist.DeleteImageList( );
            //設(shè)置圖標(biāo)
            m_imagelist.Create(16,16,ILC_COLORDDB,2,2); //創(chuàng)建CImageList 16,16是圖標(biāo)的大小
            m_list.SetImageList(&m_imagelist,LVSIL_SMALL);//把CListCtrl中的CImageList聯(lián)   
            int nItem=0;
            HANDLE hProcess = NULL; //進(jìn)程句柄
            TCHAR szProcessName[MAX_PATH] ={0}; //進(jìn)程的名稱
            TCHAR szProcessPath[MAX_PATH] ={0}; //進(jìn)程路徑
            HMODULE hMod=NULL; //進(jìn)程的第一個(gè)模塊
                DWORD ModulecbNeeded; //儲(chǔ)存進(jìn)程模塊的大小
            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) ) // 列舉某個(gè)進(jìn)程的模塊,第一個(gè)模塊就是創(chuàng)建此進(jìn)程的主exe程序 
            {
            if (    GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ) //獲得程序名
                && GetModuleFileNameEx( hProcess, hMod, szProcessPath, sizeof(szProcessPath))  )//獲得模塊路徑
            {
            //獲取圖標(biāo)
            :: SHGetFileInfo(szProcessPath,0, &stFileInfo,sizeof(stFileInfo),SHGFI_ICON|SHGFI_SMALLICON ); //添加圖標(biāo)到m_imagelist (CImageList m_imagelist)
            //向m_imagelist添加圖標(biāo)
            int n=m_imagelist.Add(stFileInfo.hIcon);
            //把程序名,路徑,進(jìn)程ID添加到ClistCtrl
            m_list.InsertItem(nItem, szProcessName,n);//插入1行"11"代表第0列的數(shù)據(jù) 參數(shù)(行數(shù),標(biāo)題,圖標(biāo)索引)
            m_list.SetItemText(nItem, 2, szProcessPath);
            //更新Processdata[nItem].ID
            Processdata[nItem].ID=NewProcessID[i];
            //更新進(jìn)程CPU使用率
            m_list.SetItemText(nItem, 1, itoa( GetProcessUsage(&Processdata[nItem]) ,buf,10) );
            //改變nItem
            nItem++;
            }
            }
            CloseHandle(hProcess);
            }
            //更新OldProcessID
            OldProcessTotal=NewProcessTotal;
            }
            //刪除進(jìn)程
            void CTaskerDlg::OnDeleteProcess() 
            {
            //獲得選中的行
            int nItem;
            POSITION   pos   =   m_list.GetFirstSelectedItemPosition();   
            if   (pos   !=   NULL)   
                    while   (pos)   
            nItem=m_list.GetNextSelectedItem(pos);   
            //關(guān)閉進(jìn)程
            HANDLE hProcess = OpenProcess(  PROCESS_TERMINATE, FALSE, Processdata[nItem].ID );
            if( NULL != hProcess )
            {
            if(IDOK==MessageBox("確定要?jiǎng)h除此進(jìn)程嗎?","提示",MB_OKCANCEL) )
            {
            if( TerminateProcess( hProcess, 0 ) )
            {
            CloseHandle( hProcess );
            //刪除CListCtrl上的項(xiàng)
            m_list.DeleteItem(nItem);
            }
            else
            MessageBox("不能結(jié)束進(jìn)程!");
            }
            else 
            CloseHandle(hProcess);
            }
            }
            posted @ 2014-01-16 00:11 Enic 閱讀(304) | 評(píng)論 (0)編輯 收藏

            將boost更新到1.53時(shí), 發(fā)現(xiàn)luabind死活編譯不過(guò), 報(bào)錯(cuò)如下

            error: missing binary operator before token "("

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

            在git找到一個(gè)patch, 鏈接在此

            以下簡(jiǎn)單描述

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

            去掉#elif BOOST_PP_ITERATION_FLAGS() == 1

            更換為

            #else

            #if BOOST_PP_ITERATION_FLAGS() == 1

            然后在源碼底部加一個(gè)#endif即可

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

            僅列出標(biāo)題
            共22頁(yè): First 8 9 10 11 12 13 14 15 16 Last 
            国产精品久久久天天影视香蕉| 久久久久久曰本AV免费免费| 国内精品久久久久久久影视麻豆| 国产精品欧美久久久久无广告| 亚洲а∨天堂久久精品9966| 久久永久免费人妻精品下载| 久久这里只精品国产99热| 人妻无码久久精品| 97热久久免费频精品99| 久久影视综合亚洲| 久久久久四虎国产精品| 99蜜桃臀久久久欧美精品网站| 久久中文字幕一区二区| 色欲久久久天天天综合网| 久久久受www免费人成| 国产精品久久久久国产A级| 四虎亚洲国产成人久久精品| 伊人丁香狠狠色综合久久| 亚洲国产美女精品久久久久∴ | 精品久久亚洲中文无码| 岛国搬运www久久| 青青青国产成人久久111网站| 伊人久久久AV老熟妇色| 久久亚洲中文字幕精品一区四| 久久精品嫩草影院| 久久精品国产亚洲av高清漫画| 丁香色欲久久久久久综合网| 亚洲精品国精品久久99热| 久久久WWW成人| 久久国产福利免费| 久久久国产精品福利免费 | 人妻无码αv中文字幕久久琪琪布| 青青草国产97免久久费观看| 欧美久久亚洲精品| 久久久久国产精品麻豆AR影院| 久久久精品国产亚洲成人满18免费网站| 精品九九久久国内精品| 93精91精品国产综合久久香蕉| 亚洲国产精品婷婷久久| 国产精品一区二区久久精品无码 | 亚洲人成伊人成综合网久久久|