百度網盤的登錄界面是DirectUI,還是其他的技術做的?
聽說是用nwjs做的,但是沒弄明白他是怎么輸出文字的。
我最近在做一個測驗,想通過HOOK API的形式獲取這個登錄界面的文字,看到這個界面會呼叫DrawTextW來輸出文字到一個兼容DC上,但是后面不會拷貝到真實的視窗DC上面去,也就是說在兼容DC上輸出完文字后沒有通過BitBlt、StretchBlt、GdiTransparentBlt、PatBlt以及AlphaBlend來拷貝兼容DC的內容到真實的視窗DC上面去,請問他是怎么實作這個的呢?
uj5u.com熱心網友回復:
DirectUI是可以實作的。請關注SOUI和REDM這兩個開源專案。
https://gitee.com/setoutsoft/soui
https://gitee.com/hgy413/REDM
uj5u.com熱心網友回復:
duiengine百度網盤檔案夾中都有duiengine license.txt
uj5u.com熱心網友回復:
你知道這個對于文字輸出的作業機制嗎?
謝謝,我先去看看了解一下
uj5u.com熱心網友回復:
我其實不是想實作這樣的界面,我只是想知道他是怎么輸出文字的,在兼容DC上輸出的文字是怎么拷貝到真實的視窗DC上來的
uj5u.com熱心網友回復:
看了幾個SOUI的例子,文字都是通過輸出到兼容DC 然后 AlphaBlend 到視窗DC上的,跟百度網盤登錄界面這個不一樣 ,百度網盤沒看到有拷貝兼容DC到視窗DC的動作,很費解。
uj5u.com熱心網友回復:

可以通過記憶體DC 輸出文字,畫圖等,然后把圖片貼到 視窗dc,實作繪制。
uj5u.com熱心網友回復:
嗯,一般的情況應該是這樣,但是問題就在于他是怎么樣把記憶體DC貼到視窗DC上的呢? 我沒看他呼叫BitBlt、StretchBlt、GdiTransparentBlt、PatBlt以及AlphaBlend 來拷貝記憶體DC到視窗DC上。
uj5u.com熱心網友回復:
然后還發現這種視窗使用 ::RedrawWindow(hwnd, &rc, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ALLCHILDREN | RDW_INTERNALPAINT); 無法強制重繪所有文字轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/15213.html
標籤:界面
