2010年2月2日 星期二

FindWindow與多語系

最近遇到一個問題
有支程式,原本是日本人開發的。有個部份是程式會去檢查是否有跳出"另存新檔"的視窗
如果有,程式會代替使用者按下"儲存"按鈕.. 原本的程式是這樣寫的

FindWindow(NULL, _T("名前を付けて保存"))

"名前を付けて保存"就是日本的另存新檔的意思
這樣子寫,在日文的作業系統下運作當然是沒有問題

但是到了中文的系統下就不行了 因為中文的系統下 另存新檔視窗的title就是"另存新檔"
所以程式如果不修改的話,FindWindow一定會找不到對應的視窗

當然改成FindWindow(NULL, _T("另存新檔"))這樣子就沒問題了
但是變成要維護兩份source 而且一但之後再增加新語言支援 又要再多一份source..

原本是想把這個字串放到resource裡面,不過resource editor好像原生不支援unicode
看起來打進去的字串 會依照我們設定的語言跟codepage存起來 等到compile time才會轉成unicode存起來..

而且看起來這個視窗的標題應該是系統內部有定義好 如果可以由程式拿到這個字串的話
就能解決這個問題了

沒有留言: