re: 最近幾天被MFC折騰~ 萬連文 2010-05-20 08:36
通過窗口消息能保證處理過程在本窗口創建的線程
1、大音希聲,大道無形,大智之人,不耽于形,不逐于力,不恃于技
2、用建議的方式而不是批評的方式對待他人的成果,這樣會更好
re: 甘特圖1.0.0β發布[未登錄] 萬連文 2010-01-10 19:10
您說.h嘛? 如果是基于對話框編程直接添加activex就會生成,或者從dll導入類都行,前提是基于mfc開發,如果是win32可能需要原始.h,需要可以跟我聯系 wlwlxj@gmail.com
@forgot
OK,我已經從首頁摘下來了,不過我還是要把自己的事情記錄下來,我不太喜歡爭論,也不喜歡評論別人。
@forgot
我大部分時間都在學習,都在寫代碼,研究windows代碼,只是不知道學多少算多,懂得多少算夠,進什么公司算牛,做過什么大軟件才算有天賦,也不知道你是如何得出的"你這5年學的太少了",希望能夠指點。
@日番谷冬獅郎
誒,痛并快樂著,不過喜歡什么就做什么吧,興趣最重要。
哇,我一個同事也是跟你類似差不多。 .net轉C++都喜歡這個折疊功能,不過我就不太習慣很少使用。
暈,看到你的截圖了,只是太冤枉我了,你確信使用的是我的控件? 那種惡作劇我還真想不出來啊。
沒有吧,什么玩笑? 可能是IE版本差異,這個是老的IE6的內核,后來MFC SDK對這個問題支持的比較好了,就不用這么做了。
XTP的Skin模塊里面也有API的HOOK,做的也相當不錯
這個咚咚跟我看的pdlparse有點類似......
看似不錯,讓我想起研究生期間做地圖。 這地圖沒泄露機密吧,哈哈~~~~
re: 使用boost庫需要一定的素質 萬連文 2009-07-31 09:10
遠離boost一直是我時刻提醒自己的,講架構、講對象模型比這些要來的更加務實。
re: Xindows的試用 萬連文 2009-07-25 08:04
有2個是我的,一個是IE的,恰好在一起了,所以就截圖下來。GoLive_Hidden隱藏窗口主要是為后臺的消息轉發提供一個中間站,也恰好解決了托盤的Notify消息的麻煩;Xindow_Hidden是界面庫的隱藏窗口,是多線程調用核心對象方法的一個排隊隊列,以及庫全局消息轉發的中間站。庫不知道好不好用,有待于檢驗和改善,如果能很好的使用,肯定會讓別人享用,當然也有可能夭折,所以還是未知的。庫本身主要是想提供無窗口的界面支持,核心的有edit、select、list等通用控件以及文字排版和類似Div的一個布局器,支持activex控件,支持界面的Filter特效。目前來說Filter還沒走通,整個庫的接口導出的不理想,內部底層有很多雜亂的東西待清理。
re: 頂層窗口的Skin[未登錄] 萬連文 2009-07-23 07:22
那個是根據美工的圖片來確定的,沒有規律,就是把點坐標起始和長寬卡住就可以了。
這個是具體的代碼,有些可以確定的東西沒有必要去猜測:
page , 132
subttl "RtlEnterCriticalSection"
;++
;
; NTSTATUS
; RtlEnterCriticalSection(
; IN PRTL_CRITICAL_SECTION CriticalSection
; )
;
; Routine Description:
;
; This function enters a critical section.
;
; Arguments:
;
; CriticalSection - supplies a pointer to a critical section.
;
; Return Value:
;
; STATUS_SUCCESS or raises an exception if an error occured.
;
;--
align 16
cPublicProc _RtlEnterCriticalSection,1
cPublicFpo 1,0
mov ecx,fs:PcTeb ; get current TEB address
mov edx,CriticalSection ; get address of critical section
cmp CsSpinCount[edx],0 ; check if spin count is zero
jne short Ent40 ; if ne, spin count specified
;
; Attempt to acquire critical section.
;
Lock1: ;
lock inc dword ptr CsLockCount[edx] ; increment lock count
jnz short Ent20 ; if nz, already owned
;
; Set critical section owner and initialize recursion count.
;
Ent10:
if DBG
cmp CsOwningThread[edx],0
je @F
stdCall _RtlpCriticalSectionIsOwned, <edx>
mov ecx,fs:PcTeb ; get current TEB address
mov edx,CriticalSection ; get address of critical section
@@:
endif ; DBG
mov eax,TbClientId + 4[ecx] ; get current client ID
mov CsOwningThread[edx],eax ; set critical section owner
mov dword ptr CsRecursionCount[edx],1 ; set recursion count
if DBG
inc dword ptr TbCountOfOwnedCriticalSections[ecx] ; increment owned count
mov eax,CsDebugInfo[edx] ; get debug information address
inc dword ptr CsEntryCount[eax] ; increment entry count
endif ; DBG
xor eax,eax ; set success status
stdRET _RtlEnterCriticalSection
;
; The critical section is already owned, but may be owned by the current thread.
;
align 16
Ent20: mov eax,TbClientId + 4[ecx] ; get current client ID
cmp CsOwningThread[edx],eax ; check if current thread is owner
jne short Ent30 ; if ne, current thread not owner
inc dword ptr CsRecursionCount[edx] ; increment recursion count
if DBG
mov eax,CsDebugInfo[edx] ; get debug information address
inc dword ptr CsEntryCount[eax] ; increment entry count
endif ; DBG
xor eax,eax ; set success status
stdRET _RtlEnterCriticalSection
;
; The critcal section is owned by another thread and the current thread must
; wait for ownership.
;
Ent30: stdCall _RtlpWaitForCriticalSection, <edx> ; wait for ownership
mov ecx,fs:PcTeb ; get current TEB address
mov edx,CriticalSection ; get address of critical section
jmp Ent10 ; set owner and recursion count
;
; A nonzero spin count is specified.
;
align 16
Ent40: mov eax,TbClientId + 4[ecx] ; get current client ID
cmp CsOwningThread[edx],eax ; check if current thread is owner
jne short Ent50 ; if ne, current thread not owner
;
; The critical section is owned by the current thread. Increment the lock
; count and the recursion count.
;
Lock6: ;
lock inc dword ptr CsLockCount[edx] ; increment lock count
inc dword ptr CsRecursionCount[edx] ; increment recursion count
if DBG
mov eax,CsDebugInfo[edx] ; get debug information address
inc dword ptr CsEntryCount[eax] ; increment entry count
endif ; DBG
xor eax,eax ; set success status
stdRET _RtlEnterCriticalSection
;
; A nonzero spin count is specified and the current thread is not the owner.
;
align 16
Ent50: push CsSpinCount[edx] ; get spin count value
Ent60: mov eax,-1 ; set comparand value
mov ecx,0 ; set exchange value
Lock7:
lock cmpxchg dword ptr CsLockCount[edx],ecx ; attempt to acquire critical section
jnz short Ent70 ; if nz, critical section not acquired
;
; The critical section has been acquired. Set the owning thread and the initial
; recursion count.
;
add esp,4 ; remove spin count from stack
mov ecx,fs:PcTeb ; get current TEB address
mov eax,TbClientId + 4[ecx] ; get current client ID
mov CsOwningThread[edx],eax ; set critical section owner
mov dword ptr CsRecursionCount[edx],1 ; set recursion count
if DBG
inc dword ptr TbCountOfOwnedCriticalSections[ecx] ; increment owned count
mov eax,CsDebugInfo[edx] ; get debug information address
inc dword ptr CsEntryCount[eax] ; increment entry count
endif ; DBG
xor eax,eax ; set success status
stdRET _RtlEnterCriticalSection
;
; The critical section is currently owned. Spin until it is either unowned
; or the spin count has reached zero.
;
; If waiters are present, don't spin on the lock since we will never see it go free
;
Ent70: cmp CsLockCount[edx],1 ; check if waiters are present,
jge short Ent76 ; if ge 1, then do not spin
Ent75: YIELD
cmp CsLockCount[edx],-1 ; check if lock is owned
je short Ent60 ; if e, lock is not owned
dec dword ptr [esp] ; decrement spin count
jnz short Ent75 ; if nz, continue spinning
Ent76: add esp,4 ; remove spin count from stack
mov ecx,fs:PcTeb ; get current TEB address
jmp Lock1 ;
stdENDP _RtlEnterCriticalSection
re: 閑暇時間做的幾個界面 萬連文 2009-07-18 08:43
@23
你的這種認為是基于快速開發或者小應用而言,對于大型應用,C++在界面方面的積累足以使得后期開發加速,“路遙知馬力”應該是這種情況,當然我不否認其他RAD工具在界面開發上的高效。
re: 頂層窗口的Skin 萬連文 2009-07-10 10:05
看最后面的注釋:
注:VS2008開發,左鍵雙擊登錄窗口客戶區顯示主界面。代碼部分修改后可使用,但請不要使用圖片資源。
re: 頂層窗口的Skin 萬連文 2009-07-09 12:56
當鼠標移動到關閉等系統按鈕上時,不會高亮顯示
這個是故意處理的,因為我們的系統里面inactive只有一種狀態,所以沒有區分,就沒有做inactive的高亮
最小化之后程序掛掉?? 沒發現這個問題
12個方位貼圖中,有一個錯了。 左上的IA狀態搞成上左了,已經修改,我說怎么老是感覺inactive狀態左邊有一個小白點,謝謝!
re: 頂層窗口的Skin 萬連文 2009-07-09 12:37
@Touchsoft
是的,很久以前看過,做的比較好,不過當初還是發現一些不完美的地方。
re: 頂層窗口的Skin 萬連文 2009-07-09 11:03
呃~~~,剛剛還說滿意就發現問題,主界面最小化后就會發生問題,修改中......
已經修改完畢,最小化的時候隱藏窗口(到托盤,過程沒有做),當然最小化之后你就沒法關閉了,由于沒有做托盤部分顯示主窗口的編程,所以測試的時候只能殺掉進程了。這樣應該不會再有什么麻煩了。
re: 這幾個月的成果 萬連文 2009-06-21 21:14
一個界面翻譯引擎,按照自己的想法加上一些現有的實現,模擬類似Flash WPF這樣的界面框架,僅僅是猜想而已,不一定可以達到,重在學習的過程與積累的過程。
沒有仔細看,不過和wtl呢?還有一個做的大點的winx,還有一個HongSoft的模板插件框架? 如果能夠做幾個看得見的截圖和特性就更加明了了。
微軟的什么我沒有必要告訴你,crt的動態庫我不曉得你怎么想,用dependency工具看看就曉得依賴不依賴了,我對自己的認識也不是十足的把握。
因為我是看微軟這么做的,自己確實沒有發現什么錯誤,我沒法不承認她的實現可以為我所用,可能就是中毒太深吧。您上面寫的那些已經超出了我的知識范圍,我需要好好學習。至于 vc6不支持動態crt庫 好像可以通過修改/MLd到/MDd實現。
感謝你的指導, 我沒有說跨平臺, 也沒有說實用多個編譯器,我一直使用VC系列工具在Windows上面寫程序,其他的編譯器和OS了解很少,對C++標準也研究不夠,出發點只是想找到一個經過驗證的(大的、成功的產品使用過的)簡便的工具。 我想軟件工具都不是完美的,考慮太多就沒完沒了了,我堅持實用原則。
因為底層實現是Heap**操作,所以delete和delete[]都會調用HeapFree,所以恰好可以完成任務。
re: 高薪招聘 萬連文 2009-05-27 08:09
流一下口水.....吸溜~~~~~
re: 甘特圖1.0.0β發布 萬連文 2009-05-26 08:31
xgantt確實是這個行業的控件產品里面最優秀的,功能很強大,毋庸置疑。在性能上面我覺得自己還是有把握的,功能方面根據自己的經驗慢慢優化結構增加功能點,應該會彌補差距。
re: 最近老是喝醉 萬連文 2009-05-25 18:04
@小不點 外加另一個要控制網頁里面編輯框的網友
不好意思,我最近有點忙瘋了,事情太多,實在沒時間幫你們親手制作demo。但是我提供思路了,我知道這對于初學者無用,但是真不好意思,如果對你們很重要,沒有實現請過一段時間之后與我再次聯系。
網頁中嵌入自己的MFC對話框 假如是atl制作使用復合控件比較簡單(等同對話框,但是不能使用mfc類了比較麻煩),mfc的activex只能自己create一個對話框到主控件上面,也可以嘗試formview視圖。
控制網頁里面編輯框,可以寫一個js函數 function SetEditValue(val) { //dom控制 } 之后在C++里面call script具體參見我那篇文章。
阿彌托福,老衲已返璞歸真一年有余,早已遠離team,不知何時再入俗沾塵重回team,輪回一次。善哉善哉!
re: 筆記本顯示器不亮,有人遇見過嗎?? 萬連文 2009-03-27 23:21
是燈管的問題,維修費用大概是100左右,吾已經被js敲詐一把,希望他人能吸取教訓。燈管導致屏不亮是筆記本過保修期之后最容易出現的情況。
re: 技術實現思路備忘錄 萬連文 2009-02-21 21:57
Sorry,不太清楚您的需求。對于你所說的我暫時還沒有做過研究。不過你可以參考ie src里面reader模式下的函數過程去了解。
re: 自己寫內存泄露檢測庫 萬連文 2009-01-23 23:55
需要考慮多線程,否則太不安全了,沒有實際意義。
re: 提問: 可以根據字符串創建類嗎 萬連文 2009-01-10 20:59
ACDK這個庫可以,不過比較大,使用C++語言按照java語言規范來實現的基礎庫。不過如果走到這一步,大可不比使用C++了。
一個好的想法,被演變成一口水貼,實在不該,兩個都好,各有各的長短。爭論沒撒意思,都不是中國的OS。
re: 筆記本顯示器不亮,有人遇見過嗎?? 萬連文 2008-12-29 21:43
本來是那么打算的,誰知道一回家居然又可以啟動了,矮,這下以后可得小心了,再不拿到公司用了,以延遲它的壽命。
re: linux學習一:wchar輸出 萬連文 2008-12-29 10:38
不是,只是希望了解一下,吾主要是win下面做界面,希望了解之后以后寫代碼的時候稍微注意下移植性。
比較好的做法是誰分配誰釋放,api一般導出Create*** Delete*** 類一般添加接口DeleteThis,這個是我的做法,不曉得是否合理。
re: 簡單的屬性結構設計 萬連文 2008-12-28 09:33
struct tagDBAttrs
{
long lA;
long lB;
...
long lN;
};
This is POD.
其實方法的調用是比較簡單,不用去網上找資料。使用excel的marco編輯器記錄下想要的操作,之后查看vba代碼就知道如何使用代碼調用功能了。
re: LoadString的一些小用法 萬連文 2008-12-17 23:24
看看VC的CString的LoadString的方法,可以自己封裝一個Win32版本的,你這個方法不是那么徹底解決問題。
謝謝你的回復,進一步確認,as2 as3都支持這種語法,只是需要發布到flash player9版本以上(我測試的是這種發布方式)。
re: 研究幾個C/C++編譯器 萬連文 2008-12-03 21:33
修改入口點,release似乎8k。不過做開發,最好不用計較這些。
re: 我繪制的圓餅圖 萬連文 2008-12-03 10:19
鋸齒問題,使用gdiplus解決,不過不是大問題。codeproject上面有很多不錯的,可以參考。
re: 終于治好了 萬連文 2008-11-26 10:38
1)freetype221.lib 和 freetype221_D.lib 一個release lib 一個debug lib。2)是我自己編譯的,如假包換。我似乎是vc8編譯的,沒有修改任何東西。這個庫很多版本我下載后都可以直接編譯幾乎沒有遇到過問題,不曉得您為何編譯不過去。
re: 終于治好了 萬連文 2008-11-22 17:16
從你的目錄看上去軟件安裝的有點亂, microsoft sdks\windows v6.0 不曉得你的開發環境和platform sdk如何搭配的,我想可能是sdk本身混亂導致的錯誤。
re: 終于治好了 萬連文 2008-11-21 18:39
re: 終于治好了 萬連文 2008-11-21 18:28
1、具體是何錯誤呢?你只說報錯我也無辦法。
2、gnuWin32我沒有研究過,不過據說freetype可以通過減少一些模塊的編譯減少尺寸,估計需要查看config目錄下一些咚咚,具體沒有做過不敢瞎扯。還有一個原因可能它的是動態庫,你編譯的的是靜態庫,因為靜態庫包含很多函數指令也可能導致庫很大。Release和debug也有很大差別,請綜合考慮。
很早以前,為了幫助幾個臺灣大學生,曾經找過一些code,完成了漢字的緩存、字符串的alpha渲染(似乎是,記不清楚了),如果以后用的著,可以找我索取。其實freetype我也只是當時在學校寂寞的無聊,瞅了幾天,沒想到能幫助這么多人,真是善哉善哉。