• <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>
            共4頁: 1 2 3 4 
            re: 博客一周年紀(jì)念貼 Richard Wei 2013-05-02 19:40
            @lwch
            嗯,說得好。 確實會收到一些邀請 ^_^
            re: 博客一周年紀(jì)念貼 Richard Wei 2013-05-01 17:25
            @萬連文
            確實,無論你寫什么東西,網(wǎng)上都或多或少的有人寫過,但是很多時候你可能是似懂而非懂, 如果你能以別人看的懂的方式寫出來, 就表示你真的懂了。

            閱讀優(yōu)秀源碼我覺的確實是一種除寫博客之外的積累技術(shù)好方法, 當(dāng)然閱讀源碼的前提是你已經(jīng)有了比較好的技術(shù)積累, 你能真正看懂這些源碼,理解作者的想法,理論上通過源碼你可以達(dá)到國外技術(shù)專家的水平。

            另外,不愿分享我覺得也是國內(nèi)一些技術(shù)人員的“通病”, 學(xué)了一點“小技巧”就當(dāng)成寶貝藏著掖著,實際上這樣反而阻礙了自己的成長。
            re: 山寨STL Richard Wei 2013-04-18 09:29
            @Rick
            這個我覺得沒有標(biāo)準(zhǔn)答案, 跟你的C++功底和STL的使用頻率有關(guān),而且個人覺得STL的學(xué)習(xí)方式既可以走"瀑布"模型,也可以走"敏捷"模型,。
            所謂瀑布指的是每步都走踏實之后再進(jìn)入下一步,比如STL用的很熟練之后再深入原理。所謂敏捷是指先把所有的東西都走一遍,知道大概情況之后再深入每個階段。我覺得兩種方式各有利弊, 主要還是看個人情況。
            @春秋十二月
            受益就好, 其實關(guān)于菜單的原理我也是想了好久才明白的 ^_^
            做了幾年客戶端開發(fā),一直想學(xué)游戲開發(fā), 無奈數(shù)學(xué)都忘光了.
            如果進(jìn)入游戲公司不搞核心,只是寫寫邏輯,感覺也沒啥意思.
            博主在該領(lǐng)域混,不知有啥建議?
            應(yīng)該是機器翻譯的,看起來挺費勁。
            @jacky
            這是系統(tǒng)系統(tǒng)的默認(rèn)行為。
            當(dāng)然我上面的是簡化版的實現(xiàn), 實際情況要考慮更多問題, 具體可以參考MFC里DoModal的實現(xiàn)源碼
            分析的不錯,支持下.
            @waiting4you

            對, OnIdle如果是放在Timer里是沒有影響的 ,如果是自己在在消息循環(huán)里調(diào)用, 就只能寫成全局函數(shù),然后在這里調(diào)用了。

            Windows系統(tǒng)對于菜單的實現(xiàn)應(yīng)該不是用SetCapture的方式, 調(diào)用TrackPopupMenu后也是阻塞式的,至于父窗口有保持沒有激活可以看標(biāo)題欄是不是保持高亮。
            @waiting4you
            SetCapture的方法應(yīng)該是不正確定。
            菜單彈出時焦點當(dāng)然還在父窗口上,這是菜單窗口是沒有獲得焦點的, 菜單窗口的鍵盤消息需要父窗口轉(zhuǎn)發(fā)給他。我的測試代碼基本上已經(jīng)完整的模擬了菜單的行為。
            re: 軟件換膚的原理 Richard Wei 2013-03-05 08:59
            @mike

            這個看產(chǎn)品定位吧?
            GDI最通用, 各個系統(tǒng)上都能直接跑;
            GDI+稍微有點依賴,但是一般問題不大,開發(fā)也方便很多;
            D2D性能和效果都不錯,如果自己開發(fā)DirectUI的界面庫可以考慮,另外它也不支持XP;
            WPF依賴.net, 程序大小和性能方面都有些限制,但是開發(fā)效率和效果都不錯。

            所以一般來說如果你開發(fā)的是通用軟件,比如QQ或者迅雷,既要考慮性能還要考慮各個平臺的支持,在XP沒有消亡之前還是會選擇GDI(+)。
            如果你做是項目型的管理軟件, 要考慮開發(fā)效率, 一般會選擇WPF。
            如果你是自己開發(fā)DirectUI界面庫, 可以考慮同時支持GDI(+)和Direct2D。
            re: 基于WinDbg的內(nèi)存泄漏分析 Richard Wei 2013-03-01 20:08
            @zuhd
            懂得程序運行的原理是關(guān)鍵, 工具都差不多, 用GCC和VC一樣可以寫C++代碼。
            @路人甲
            是的, C#語言本身支持property, C++中只能通過Get,Set函數(shù)了, COM也是這么做的。
            re: 基于WinDbg的內(nèi)存泄漏分析 Richard Wei 2013-02-27 17:30
            @Hunter
            需要memleaktest.exe的pdb符號文件,我用Vs2008, release版也會默認(rèn)生成,如果沒有生成就要在編譯選項里設(shè)置了。
            re: 開源一套DirectUI界面庫 Richard Wei 2013-02-25 20:49
            這里有內(nèi)存泄露 :
            else if(info.wParam == WPARAM_KILL_TIMER)
            {
            if(pTimerRet != NULL)
            {
            ::KillTimer(m_hWnd, pTimerRet->nTimerIndex);
            m_arTimer.erase(std::remove(m_arTimer.begin(), m_arTimer.end(), pTimerRet), m_arTimer.end());
            delete pTimerRet; //內(nèi)存泄露
            lRet = S_OK;
            }
            }
            @a_very_big_graywolf
            只是總結(jié), 以后再用到會方便一些。
            不錯, 前2個需求也可以用繼承來實現(xiàn), 但是如果該特化函數(shù)基類內(nèi)部有調(diào)用,就可能要搞成虛函數(shù)了。
            @korall
            不錯 ,這種可能更通用, 雖然我一直沒用。
            已在文章后面加上你提的方案。:)
            re: 范型編程雜談 Richard Wei 2013-02-19 17:11
            @華夏之火
            不錯, 從C++11的變化可以看到好多新特性都是針對模板編程的,范型編程是C++編程的趨勢
            @lwch
            慚愧, 雖然工作好多年,最近才開始研究模板,準(zhǔn)備稍微深入一下。
            @lwch
            不懂, 什么意思?
            不過看了你的博客,學(xué)習(xí)了 ^_^
            re: 在C++中實現(xiàn)事件(委托) Richard Wei 2013-02-07 17:03
            @Jeff Chen
            慚愧, 沒研究過boost。
            可能優(yōu)點就是簡單,可以自己掌控吧,實際上好多公司是禁用boost的。
            re: 在C++中實現(xiàn)事件(委托) Richard Wei 2013-02-01 17:05
            @zdhsoft
            恩,本身就是借助c++11的 function和bind進(jìn)行封裝
            re: 在C++中實現(xiàn)事件(委托) Richard Wei 2013-01-31 17:36
            @lierlier
            多謝指點,感覺你的實現(xiàn)方式對外界比較靈活,性能也比較高。
            而我的實現(xiàn)更強調(diào)封裝,適合于在某個框架中使用。
            re: 在C++中實現(xiàn)事件(委托) Richard Wei 2013-01-31 14:49
            @lierlier
            確實, 所以.Net里的事件返回類型都都void。這里帶返回值的事件適用于只有一個函數(shù)綁定。
            re: 2012龍年之旅 Richard Wei 2013-01-27 22:00
            牛, 一個人把微軟一幫人的事情都做了。

            啥時候?qū)懳恼陆榻B下微軟RPC內(nèi)部的實現(xiàn)原理, 對這個比較有興趣, 呵呵。
            re: 理解WinRT Richard Wei 2013-01-13 17:47
            WinRT的API看MSDN, 大部分和Xaml相關(guān),其實沒多少東西: http://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspx
            re: 理解WinRT Richard Wei 2013-01-13 17:44
            @bukebushuo
            WinRT的定義看這里:http://en.wikipedia.org/wiki/Windows_Runtime

            Windows Runtime, or WinRT, is a platform-homogeneous application architecture on the Windows 8 and Windows RT operating systems.
            膜拜并學(xué)習(xí)
            re: QQ截圖時窗口自動識別的原理 Richard Wei 2012-12-20 13:11
            @嘿嘿
            是的, QQ這種實時的方式如果啟動截圖后, 后臺窗口一變, 識別出來的就是錯誤的了.
            我這種在啟動截圖時保存所有窗口Rect的做法才是可靠的.
            re: QQ截圖時窗口自動識別的原理 Richard Wei 2012-11-17 20:12
            看到有些人對窗口識別的代碼感興趣,在博文最后加上了通過Enum方式查詢窗口的代碼
            還是直接用C++ 11中的function吧
            re: 范型編程雜談 Richard Wei 2012-11-11 23:56
            @r.h
            用GP實現(xiàn)運行時多態(tài)在C++ 中現(xiàn)在來說還做不到,ATL同時用了GP和OO。
            有興趣的話可以看下這篇http://m.shnenglu.com/longshanks/archive/2007/12/06/37915.aspx
            re: C++模板會使代碼膨脹嗎 Richard Wei 2012-11-09 08:42
            @溪流
            繼承和模板在一定程度上都可以實現(xiàn)代碼重用, 我想我們平時所說的模板使代碼膨脹是相對OO里的繼承而言.
            re: GacUI 0.4.0.0 發(fā)布啦 Richard Wei 2012-10-19 15:09
            Hoho, 支持下大牛
            re: 消息耦合還是接口耦合 Richard Wei 2012-10-15 10:25
            @zaccheo

            接口的管理,我感覺有2種方式: 一種是基于COM的引用計數(shù),大家都可以保存接口指針,這里要避免循環(huán)引用;還有一種是讓Module Manger統(tǒng)一管理,也就是只有Module Manager保存有接口指針,其他模塊不保存接口指針,要使用時統(tǒng)一向Module Manger要。

            第一種高效,第二種相對安全
            re: 消息耦合還是接口耦合 Richard Wei 2012-10-13 22:28
            @123
            我們是客戶端應(yīng)用,各模塊內(nèi)部卻確實會有多線程,但是各模塊間的調(diào)用及事件觸發(fā)都是跑在主線程里,所以這種情況下,如果走消息,基本上要給每個消息維護(hù)一個數(shù)組,內(nèi)部保存哪些人訂閱了該消息,當(dāng)該消息到達(dá)時進(jìn)行依次分發(fā),所以這里無論是內(nèi)存大小還是性能都會比接口直接調(diào)用消耗更多。

            接口每個方法都有各自不同的明確的參數(shù)定義, 消息的話因為要求所有消息參數(shù)一致,所以會導(dǎo)致參數(shù)含義不明確,內(nèi)部保存的指針需要強制轉(zhuǎn)換才能使用。

            "客戶端小規(guī)模應(yīng)用";是相對“大規(guī)模Server集群”, 其實我們要做的東西本身也挺大挺復(fù)雜,好幾十人同時開發(fā)。
            在Win7的Aero模式下因為桌面的窗口層次有變化, 上面的代碼會找不到窗口"SHELLDLL_DefView"窗口

            簡單改了下,未完全測試:
            HWND GetShellDLLForWin7()
            {
            HWND hWndShell = NULL;
            HWND hWndDesktop = GetDesktopWindow();
            if(hWndDesktop == NULL) return NULL;

            HWND hWndWorkerW = NULL;
            while(TRUE)
            {
            hWndWorkerW = FindWindowEx(hWndDesktop, hWndWorkerW, _T("WorkerW"), NULL);
            if(hWndWorkerW == NULL) break;

            if(::GetWindowLong(hWndWorkerW, GWL_STYLE) & WS_VISIBLE)
            {
            break;
            }
            else
            {
            continue;
            }
            }

            if(hWndWorkerW != NULL)
            {
            hWndShell = FindWindowEx(hWndWorkerW, NULL, _T("SHELLDLL_DefView"), NULL);
            }

            return hWndShell;
            }

            BOOL CheckParent(HWND hWnd)
            {
            static HWND s_hWndOldParent = NULL;

            HWND hWndProgram = NULL;
            HWND hWndShellDLL = NULL;
            hWndProgram = FindWindow(_T("Progman"), _T("Program Manager"));
            if(hWndProgram != NULL)
            {
            hWndShellDLL = FindWindowEx(hWndProgram, NULL, _T("SHELLDLL_DefView"), NULL);

            //Win7
            if(hWndShellDLL == NULL)
            {
            hWndShellDLL = GetShellDLLForWin7();
            }
            }

            if(hWndShellDLL != NULL
            && hWndShellDLL != s_hWndOldParent)
            {
            SetWindowLong(hWnd, GWL_HWNDPARENT, (LONG)hWndShellDLL);
            s_hWndOldParent = hWndShellDLL;
            return TRUE;
            }

            return FALSE;
            }
            @春秋十二月
            多謝,總結(jié)的挺好
            @萬連文
            確實,C++11里把這個叫住Alias templates
            re: 理解程序內(nèi)存 Richard Wei 2012-09-20 19:25
            @春秋十二月
            沒看過windows高級調(diào)試一書, 但是感覺比較經(jīng)典的書是<<軟件調(diào)試>>
            re: API Hook在TA中的應(yīng)用 Richard Wei 2012-09-19 19:14
            @birdhsy
            不好意思,因為是公司代碼,所以不好外傳
            re: QQ截圖時窗口自動識別的原理 Richard Wei 2012-09-06 12:47
            @m775@sina.com
            其實我用enum的方式已經(jīng)自己實現(xiàn)了,參考http://m.shnenglu.com/weiym/archive/2012/08/21/187801.html
            @畢達(dá)哥拉斯半圓
            貌似上面的朋友 溪流 寫過,http://m.shnenglu.com/Streamlet/archive/2010/10/24/131064.aspx
            共4頁: 1 2 3 4 
            久久天天躁狠狠躁夜夜躁2014| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 国产精品久久久久久久app| 久久久久久久国产免费看| 色天使久久综合网天天| 亚洲愉拍99热成人精品热久久| 久久国产色AV免费观看| 国产精品嫩草影院久久| 久久经典免费视频| 久久99久久99小草精品免视看| 狠狠色丁香婷婷综合久久来来去 | 99久久精品国产免看国产一区| 国产农村妇女毛片精品久久| 久久综合亚洲色一区二区三区| 久久青草国产精品一区| 久久亚洲AV无码精品色午夜 | 97久久久久人妻精品专区 | 99精品国产99久久久久久97| 亚洲国产精品久久久久久| 久久久久久国产精品无码下载| 亚洲国产成人久久综合一| 伊人久久大香线蕉av不卡 | 99精品久久精品| 一本色道久久综合狠狠躁 | 精品久久久久久中文字幕| 久久久久国产精品人妻| 午夜视频久久久久一区| 国产国产成人久久精品| www.久久热| 国产99久久精品一区二区| 99久久夜色精品国产网站| 欧美一区二区久久精品| 国产高潮久久免费观看| 香港aa三级久久三级| 天天爽天天爽天天片a久久网| 久久精品国产亚洲AV无码麻豆| 精品无码久久久久国产动漫3d| 无码八A片人妻少妇久久| 婷婷久久五月天| 97精品伊人久久久大香线蕉| 亚洲av日韩精品久久久久久a|