Hook textout可能遇到的問題

2021-10-05 04:41:43 字數 595 閱讀 3038

一、因為textouta等函式還會呼叫exttextoutw之類函式,如果hook所有textout函式,則對同一次文字輸出,會產生兩次攔截。

事實上,所有文字輸出函式最終都會呼叫exttextoutw。所以,如果僅僅是檢視是否有文字輸出,只hook這個函式就可以了。

二、exttextouta(.......uint c,.....)函式中,引數c表示輸出字串的個數。按api參手冊,如果c為-1,則字串必須以'\0'字元結束。這是乙個陷阱,c 是uint型別,不可能正確與-1比較。如果不仔細,很容易根據參考手冊寫出以下程式:

if((c-1))  //max_len原來buffer長度

len=c;                //len表示需要處理的字串長度。

這個條件永遠不可能得到滿足,所以,len不可能得到正確設定。如果以這個len作後續的字串處理動作,將產生奇怪的結果(如得到一串亂碼)或造成程式非正常終止。

三、多位元組字元到16位unicode轉換有多種函式可以用,經過實踐證明,如下呼叫最為安全:

multibytetowidechar(cp_acp, mb_precomposed, lpstring, b*2, txtbuffer, b);

unreal Lightmass可能遇到的問題

光照貼圖的uv問題是造成lightmass的最大的問題。注意事項是,不能重疊,每個之間要留有空隙從而避免洩露可擴散。最好的方法當然是在max裡自己來展開每個uv。如果我們發現例如,角落邊緣透光,重疊,接縫瑕疵等問題,那麼需要返回3d工具。手動的使用第一種方法自己建立光照貼圖uv.對於uv重疊。只需要...

平時可能遇到的指令碼

下面羅列一些平時中可能會遇到 python指令碼篇 1 氣泡排序 1 lis 56,12,1,8,354,10 2for i in range 0,len lis 3for j in range i 1,len lis 4if lis i lis j 5 lis i lis j lis j lis ...

平時可能遇到的指令碼

下面羅列一些平時中可能會遇到 python指令碼篇 1 氣泡排序 1 lis 56,12,1,8,354,10 2for i in range 0,len lis 3for j in range i 1,len lis 4if lis i lis j 5 lis i lis j lis j lis ...