From e28b59b7d7ce1a5ef6ccadbd80ca5440079dfe6a Mon Sep 17 00:00:00 2001 From: craftwar Date: Tue, 10 Jul 2018 19:18:35 +0800 Subject: [PATCH] unicode3 --- Lite/AutoUpdate.cpp | 8 +- Lite/BBSHyperLink.cpp | 20 ++--- Lite/Clipboard.h | 2 +- Lite/ConfigFile.cpp | 7 +- Lite/ConnectPage.cpp | 8 +- Lite/CtrlEdit.cpp | 6 +- Lite/CustomizeDlg.cpp | 56 ++++++------- Lite/SiteSettings.h | 12 +-- Lite/TermView.cpp | 184 +++++++++++++++++++++--------------------- 9 files changed, 152 insertions(+), 151 deletions(-) diff --git a/Lite/AutoUpdate.cpp b/Lite/AutoUpdate.cpp index db8a415..1e24f02 100644 --- a/Lite/AutoUpdate.cpp +++ b/Lite/AutoUpdate.cpp @@ -325,7 +325,7 @@ int CAutoUpdater::CompareVersions(CString ver1, CString ver2) } // Get version 1 to DWORDs - TCHAR *pToken = strtok(pVer1, _T(".")); + TCHAR *pToken = _tcstok(pVer1, _T(".")); if (pToken == NULL) { return -21; @@ -339,13 +339,13 @@ int CAutoUpdater::CompareVersions(CString ver1, CString ver2) return -21; // Error in structure, too many parameters } wVer1[i] = _tstoi(pToken); - pToken = strtok(NULL, _T(".")); + pToken = _tcstok(NULL, _T(".")); i--; } ver1.ReleaseBuffer(); // Get version 2 to DWORDs - pToken = strtok(pVer2, _T(".")); + pToken = _tcstok(pVer2, _T(".")); if (pToken == NULL) { return -22; @@ -359,7 +359,7 @@ int CAutoUpdater::CompareVersions(CString ver1, CString ver2) return -22; // Error in structure, too many parameters } wVer2[i] = _tstoi(pToken); - pToken = strtok(NULL, _T(".")); + pToken = _tcstok(NULL, _T(".")); i--; } ver2.ReleaseBuffer(); diff --git a/Lite/BBSHyperLink.cpp b/Lite/BBSHyperLink.cpp index 133d8d3..01f2ac4 100644 --- a/Lite/BBSHyperLink.cpp +++ b/Lite/BBSHyperLink.cpp @@ -136,7 +136,7 @@ const char* CBBSHyperLink::FindHyperLink(const char *src, int &len) const if (pemail && pemail < plink) return pemail; - //檢查是否為已知連結 + //瑼X交臬衣箏歇仿蝯 for (int i = 0;i < links.GetSize();i++) { int scheme_len = links[i].scheme.GetLength(); @@ -158,16 +158,16 @@ const char* CBBSHyperLink::FindHyperLink(const char *src, int &len) const void CBBSHyperLink::OpenURL(LPCTSTR url) { - //查詢是否有設定超連結開啟程式,如果沒有,用預設程式開啟 + //亥岷臬行閮剖頞蝯蝔撘嚗憒瘝嚗券閮剔撘 int t = GetURLType(url); CString mailto; LPCTSTR path = url; LPCTSTR param = NULL; - //檢查是不是e-mail + //瑼X交臭疾-mail if (t >= 0) { - if (t == email) //如果是E-mail + if (t == email) //憒浩-mail { mailto = "mailto:"; mailto += url; @@ -184,11 +184,11 @@ void CBBSHyperLink::OpenURL(LPCTSTR url) else { #ifdef _COMBO_ - if (path == url) //如果是預設程式開啟,而且不是E-mail + if (path == url) //憒舫閮剔撘嚗銝銝浩-mail ((CMainFrame*)AfxGetApp()->m_pMainWnd)->view.ConnectWeb(CAddress(url), AppConfig.link_autoswitch); else #endif - ::ShellExecute(AfxGetMainWnd()->m_hWnd, "open", path, param, NULL, + ::ShellExecute(AfxGetMainWnd()->m_hWnd, TEXT("open"), path, param, NULL, AppConfig.link_autoswitch ? SW_SHOWMAXIMIZED : SW_SHOWMINIMIZED); } } @@ -215,7 +215,7 @@ void CBBSHyperLink::Default() d.color = 0x00ff00; links.Add(d); -// E-mail為內建型態,要進階處理 +// E-mail箏批遣嚗閬脤 d.scheme = "@"; d.color = 0xff0080; email = links.Add(d); @@ -226,16 +226,16 @@ void CBBSHyperLink::Default() int CBBSHyperLink::GetURLType(const char *url) { CBBSHyperLinkData* plinks = links.GetData(); - //檢查是不是e-mail + //瑼X交臭疾-mail const char* psymbol = strstr(url, "://"); - if (!psymbol && strchr(url, '@')) //如果是E-mail + if (!psymbol && strchr(url, '@')) //憒浩-mail return email; int len = int(psymbol) - int(url); int i; for (i = 0;i < links.GetSize(); ++i) { - if (strnicmp(plinks[i].scheme, url, len) == 0) //如果有偵測到 + if (strnicmp(plinks[i].scheme, url, len) == 0) //憒菜葫 break; } diff --git a/Lite/Clipboard.h b/Lite/Clipboard.h index a1dbafc..0c06d7a 100644 --- a/Lite/Clipboard.h +++ b/Lite/Clipboard.h @@ -22,7 +22,7 @@ class CClipboard inline BOOL CClipboard::SetText(HWND owner, LPCTSTR str) { - return SetText(owner, str, strlen(str)); + return SetText(owner, str, _tcslen(str)); } inline BOOL CClipboard::SetTextW(HWND owner, const wchar_t* str) diff --git a/Lite/ConfigFile.cpp b/Lite/ConfigFile.cpp index 16a8376..1aebe17 100644 --- a/Lite/ConfigFile.cpp +++ b/Lite/ConfigFile.cpp @@ -194,7 +194,7 @@ bool CConfigFile::DoSave(ConfigTable table) CString str, esc_str; for (; table->name; table++) { - str.Format("[%s]\r\n", table->name); + str.Format(TEXT("[%s]\r\n"), table->name); file.Write(LPCTSTR(str), str.GetLength()); if (table->type == VT_CUSTOM_SECT) @@ -209,7 +209,8 @@ bool CConfigFile::DoSave(ConfigTable table) else cur_sect = (ConfigEntry*)table->data; - char strval[64]; const char* pstrval; + char strval[64]; + const char* pstrval; for (; cur_sect->name; cur_sect++) { pstrval = strval; @@ -256,7 +257,7 @@ bool CConfigFile::DoSave(ConfigTable table) } break; } - str.Format("%s=%s\r\n", cur_sect->name, pstrval); + str.Format(TEXT("%s=%s\r\n"), cur_sect->name, pstrval); file.Write(LPCTSTR(str), str.GetLength()); } file.Write("\r\n", 2); diff --git a/Lite/ConnectPage.cpp b/Lite/ConnectPage.cpp index 88f8cd0..6bc3b47 100644 --- a/Lite/ConnectPage.cpp +++ b/Lite/ConnectPage.cpp @@ -39,7 +39,7 @@ void CConnectPage::InitWithAddress(const CString& addr) int pos = address.ReverseFind(':'); if (pos != -1) { - port = (unsigned short)atoi(address.Mid(pos + 1)); + port = (unsigned short)_tstoi(address.Mid(pos + 1)); address = address.Left(pos); } } @@ -53,7 +53,7 @@ CString CConnectPage::GetFormattedAddress() const if (port == 23 || port <= 0) return address; CString buf; - buf.Format("%s:%d", LPCTSTR(address), port); + buf.Format(TEXT("%s:%d"), LPCTSTR(address), port); return buf; } @@ -117,7 +117,7 @@ void CConnectPage::OnAddressChanged() if (addr.IsValid()) { CString port_text; - port_text.Format("%d", addr.Port()); + port_text.Format(TEXT("%d"), addr.Port()); port_field->SetWindowText(port_text); } -} \ No newline at end of file +} diff --git a/Lite/CtrlEdit.cpp b/Lite/CtrlEdit.cpp index 8ba6eb7..b649c38 100644 --- a/Lite/CtrlEdit.cpp +++ b/Lite/CtrlEdit.cpp @@ -40,15 +40,15 @@ LRESULT CCtrlEdit::OnPaste(WPARAM w, LPARAM l) if (hmem != NULL) { LPSTR data = (LPSTR)GlobalLock(hmem); - if (strstr(data, "\x1b[")) //如果含有色彩控制碼 + if (strstr(data, "\x1b[")) //憒急脣蔗批嗥Ⅳ { CString tmp = data; - tmp.Replace("\x1b[", "^[["); + tmp.Replace(TEXT("\x1b["), TEXT("^[[")); ReplaceSel(tmp, FALSE); CStringDlg* pdlg = (CStringDlg*)GetParent(); if (pdlg) { - pdlg->ansi.SetCheck(1); //勾選控制碼選項 + pdlg->ansi.SetCheck(1); //暸豢批嗥Ⅳ賊 } } else diff --git a/Lite/CustomizeDlg.cpp b/Lite/CustomizeDlg.cpp index 5848c66..a931b66 100644 --- a/Lite/CustomizeDlg.cpp +++ b/Lite/CustomizeDlg.cpp @@ -45,15 +45,15 @@ char* CCustomizeDlg::UIRead(CTreeCtrl& tree, char* buf, HTREEITEM parent) BYTE type = *buf; // *buf=TYPE; buf++; - WORD count = *(WORD*)buf; //取得sub item count - buf += 6 + *(WORD*)(buf + 4); //到第一個sub item + WORD count = *(WORD*)buf; //敺sub item count + buf += 6 + *(WORD*)(buf + 4); //啁洵銝sub item while (count) { LPSTR text; WORD len; // type=*buf; id=*(WORD*)(buf+1); - if (!*buf) //如果是separator + if (!*buf) //憒盎eparator { tree.InsertItem(separator, parent); buf++; @@ -72,7 +72,7 @@ char* CCustomizeDlg::UIRead(CTreeCtrl& tree, char* buf, HTREEITEM parent) data->key = data->fVirt = 0; data->hitem = hitem; - //將HotkeyData中的id對照accels table,順便建立每個使用同樣id的其他熱鍵 + //撠HotkeyData銝剔id撠吧ccels table,靘踹遣蝡瘥雿輻典璅ξd嗡梢 if (!(data->type & CT_HAS_SUB)) { WORD id = data->id; @@ -128,10 +128,10 @@ BOOL CCustomizeDlg::OnInitDialog() DWORD l = ui->GetLength(); char* ui_buf = new char[l]; ui->Read(ui_buf, l); -// 讀取Accelerator +// 霈Accelerator accel_count = *(WORD*)ui_buf; accels = (ACCEL*)(ui_buf + sizeof(WORD)); -// 讀取Accelerator結束,開始讀取 UI,建立HotkeyData的list +// 霈Accelerator蝯,憪霈 UI,撱箇HotkeyDatalist char* menu = ((char*)accels) + accel_count * sizeof(ACCEL); menuitem_count = *(WORD*)(menu + 1); UIRead(tree, menu, TVI_ROOT); @@ -179,7 +179,7 @@ void CCustomizeDlg::OnApply() if (!data) return; - if (!hkedit.key) //沒設定熱鍵或是有子選單的項目都只更新文字顯示 + if (!hkedit.key) //瘝閮剖梢菜舀摮詨桃桅賢芣湔唳摮憿舐內 { UpdateItemDisplay(hitem); return; @@ -187,16 +187,16 @@ void CCustomizeDlg::OnApply() HotkeyData* old = HotkeyDataFromKeys(hkedit.fVirt, hkedit.key); - if (old) //如果現在正要設定熱鍵原本已經被使用 + if (old) //憒曉冽迤閬閮剖梢萄砍歇蝬鋡思蝙 { - if (old->id != data->id) //如果本來是被別的功能使用 + if (old->id != data->id) //憒砌航◤亦賭蝙 { if (MessageBox(LoadString(IDS_REPLACE_OLD_HOTKEY_CONFIRM) , NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) return; } - else //如果是正在設定的功能本來就有的熱鍵,先刪除再新增到第一個 + else //憒舀迤刻身摰賣砌撠望梢,芷文啣啁洵銝 { - //找出list中對應的項目並刪除 + //曉槌ist銝剖桐蒂芷 int c = list.GetCount(); for (int i = 0;i < c;i++) if (list.GetItemData(i) == DWORD(old)) @@ -208,16 +208,16 @@ void CCustomizeDlg::OnApply() DeleteHotkeyForID(old); } - //新增熱鍵 + //啣梢 HotkeyData* hkitem = (HotkeyData*)tree.GetItemData(hitem); WORD id = hkitem->id; - //加到hkitem前一個,並且更新畫面 + //退kitem銝嚗銝虫湔啁恍 hkitem = HotkeyDataFromID(pfirst, id); while (hkitem) { HotkeyData* newkitem; - if (hkitem->key) //如果原本有熱鍵,建立新的,插入到他前面 + if (hkitem->key) //憒祆梢,撱箇啁,亙唬 { newkitem = new HotkeyData; newkitem->type = hkitem->type; @@ -226,7 +226,7 @@ void CCustomizeDlg::OnApply() newkitem->fVirt = hkedit.fVirt; newkitem->key = hkedit.key; newkitem->hitem = hkitem->hitem; - //插入串列 + //乩葡 newkitem->pnext = hkitem; newkitem->pprev = hkitem->pprev; hkitem->pprev = newkitem; @@ -234,16 +234,16 @@ void CCustomizeDlg::OnApply() pfirst = newkitem; else newkitem->pprev->pnext = newkitem; - //插入串列完成 + //乩葡摰 } - else //如果本來沒熱鍵,不用配置記憶體 + else //憒砌瘝梢,銝券蝵株園 { newkitem = hkitem; hkitem->fVirt = hkedit.fVirt; hkitem->key = hkedit.key; } - if (newkitem->hitem == hitem) //如果是現在正選取的項目 + if (newkitem->hitem == hitem) //憒舐曉冽迤詨 { list.InsertString(0, HotkeyToStr(newkitem->fVirt, newkitem->key)); list.SetItemData(0, DWORD(newkitem)); @@ -251,7 +251,7 @@ void CCustomizeDlg::OnApply() tree.SetItemData(newkitem->hitem, DWORD(newkitem)); UpdateItemDisplay(newkitem->hitem); - while (hkitem && hkitem->id == id) //略過相同id的其他熱鍵 + while (hkitem && hkitem->id == id) //仿詨id嗡梢 hkitem = hkitem->pnext; hkitem = HotkeyDataFromID(hkitem, id); @@ -281,7 +281,7 @@ void CCustomizeDlg::OnDel() void CCustomizeDlg::OnSelChanged(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; - list.ResetContent(); //清除list顯示 + list.ResetContent(); //皜子ist憿舐內 HTREEITEM item = tree.GetSelectedItem(); if (!item) return; @@ -349,7 +349,7 @@ void CCustomizeDlg::OnSelChanged(NMHDR* pNMHDR, LRESULT* pResult) LRESULT CALLBACK CCustomizeDlg::HotkeyEdit2Proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { - char a[] = {0, 0}; + TCHAR a[] = {0, 0}; if (msg == WM_CHAR) { if (isalnum(wparam)) @@ -447,9 +447,9 @@ void CCustomizeDlg::UIWriteAccels() HotkeyData* hkitem = pfirst; while (hkitem) { - hkitem->fVirt |= (FNOINVERT | FVIRTKEY); //加入fVirt的其他flags + hkitem->fVirt |= (FNOINVERT | FVIRTKEY); //卯Virt嗡flags BOOL can_add = TRUE; - for (int i = 0;i < accel_count;i++) //檢查是否已經有此熱鍵 + for (int i = 0;i < accel_count;i++) //瑼X交臬血歇蝬甇斤梢 { if (accels[i].fVirt == hkitem->fVirt && accels[i].key == hkitem->key) { @@ -544,7 +544,7 @@ CCustomizeDlg::HotkeyData* CCustomizeDlg::HotkeyDataFromKeys(BYTE fVirt, WORD ke return NULL; } -// 從所有具有相同 ID (hkdel->id) 的選單項目中,移除和 hkdel 相同的熱鍵 (hkdel->fVirt + hkdel->key) +// 敺瑟詨 ID (hkdel->id) 詨桅桐葉嚗蝘駁文 hkdel 詨梢 (hkdel->fVirt + hkdel->key) void CCustomizeDlg::DeleteHotkeyForID(CCustomizeDlg::HotkeyData* hkdel) { WORD id = hkdel->id; @@ -558,19 +558,19 @@ void CCustomizeDlg::DeleteHotkeyForID(CCustomizeDlg::HotkeyData* hkdel) if (hkdel->fVirt == fVirt && hkdel->key == key) { HTREEITEM hitem = hkdel->hitem; - if (hkdel->pprev && hkdel->pprev->id == id) //如果同id前一個還有熱鍵 + if (hkdel->pprev && hkdel->pprev->id == id) //憒id銝梢 DeleteHotkeyData(hkdel); - else if (hkdel->pnext && hkdel->pnext->id == id) //如果同id前一個沒有但是後一個還有熱鍵 + else if (hkdel->pnext && hkdel->pnext->id == id) //憒id銝瘝雿臬銝梢 { tree.SetItemData(hitem, DWORD(hkdel->pnext)); DeleteHotkeyData(hkdel); } - else //已經沒有熱鍵了,不能釋放記憶體 + else //撌脩瘝梢萎,銝賡曇園 { hkdel->fVirt = 0; hkdel->key = 0; } - UpdateItemDisplay(hitem); //更新文字顯示 + UpdateItemDisplay(hitem); //湔唳摮憿舐內 } hkdel = knext; } diff --git a/Lite/SiteSettings.h b/Lite/SiteSettings.h index c80edfb..dd68e54 100644 --- a/Lite/SiteSettings.h +++ b/Lite/SiteSettings.h @@ -45,8 +45,8 @@ class CSiteSettings BYTE auto_dbcs_backspace; BYTE localecho; - BYTE text_output_conv; // 顯示文字轉碼 0=none, 1=gb2big5, 2=big52gb - BYTE text_input_conv; // 輸入文字轉碼 0=none, 1=gb2big5, 2=big52gb + BYTE text_output_conv; // 憿舐內摮頧蝣 0=none, 1=gb2big5, 2=big52gb + BYTE text_input_conv; // 頛詨交摮頧蝣 0=none, 1=gb2big5, 2=big52gb BYTE use_global; // Use global settings @@ -55,7 +55,7 @@ class CSiteSettings CString termtype; CString idle_str; CString esc_convert; - CTriggerList triggers; //觸發字串 + CTriggerList triggers; //閫貊澆銝 // inline void CopyFrom(CSiteSettings* newval); inline CSiteSettings& operator = (CSiteSettings& newval); @@ -68,7 +68,7 @@ class CSiteSettings esc_convert == ss.esc_convert && text_output_conv == ss.text_output_conv && text_input_conv == ss.text_input_conv && - !strncmp(key_map_name, ss.key_map_name, 10); + !_tcsnccmp(key_map_name, ss.key_map_name, 10); } inline bool operator !=(CSiteSettings &ss) @@ -107,8 +107,8 @@ inline void CSiteSettings::Default() termtype = "VT100"; esc_convert = "\x15"; // Ctrl+U - text_output_conv = 0; // 顯示文字轉碼 0=none, 1=gb2big5, 2=big52gb - text_input_conv = 0; // 輸入文字轉碼 0=none, 1=gb2big5, 2=big52gb + text_output_conv = 0; // 憿舐內摮頧蝣 0=none, 1=gb2big5, 2=big52gb + text_input_conv = 0; // 頛詨交摮頧蝣 0=none, 1=gb2big5, 2=big52gb use_global = 1; } diff --git a/Lite/TermView.cpp b/Lite/TermView.cpp index 05e45ea..b82e73c 100644 --- a/Lite/TermView.cpp +++ b/Lite/TermView.cpp @@ -122,7 +122,7 @@ BEGIN_MESSAGE_MAP(CTermView, CWnd) ON_MESSAGE(WM_DNSLOOKUP_END, OnDNSLookupEnd) ON_WM_MOUSEWHEEL() ON_COMMAND_RANGE(ID_EDIT_OPENURL, ID_EDIT_OPENURL_FTP, OnEditOpenURL) - ON_COMMAND_RANGE(ID_FIRST_HISTORY, ID_LAST_HISTORY, OnHistory) //連線紀錄 + ON_COMMAND_RANGE(ID_FIRST_HISTORY, ID_LAST_HISTORY, OnHistory) //蝺蝝 ON_REGISTERED_MESSAGE(WM_FINDREPLACE, OnFind) ON_COMMAND_RANGE(CSearchPluginCollection::ID_SEARCHPLUGIN00, CSearchPluginCollection::ID_SEARCHPLUGIN31, OnSearchPlugin) ON_COMMAND(CSearchPluginCollection::ID_TRANSLATION, OnTranslation) @@ -233,7 +233,7 @@ void CTermView::OnInitialUpdate() return; } - if (!AppConfig.auto_font) //如果不使用動態字體調整 + if (!AppConfig.auto_font) //憒銝雿輻典摮擃隤踵 { fnt.DeleteObject(); fnt.CreateFontIndirect(&AppConfig.font_info); @@ -258,7 +258,7 @@ BOOL CTermView::OnEraseBkgnd(CDC* pDC) return FALSE; } -UINT CTermView::SetDCColors(CDC *dc, BYTE color, BOOL invirt) //傳回 draw_opt: ETO_OPAQUE or 0 +UINT CTermView::SetDCColors(CDC *dc, BYTE color, BOOL invirt) //喳 draw_opt: ETO_OPAQUE or 0 { BYTE fg = GetAttrFgColor(color), bk = GetAttrBkColor(color); @@ -581,7 +581,7 @@ void CTermView::OnLButtonDown(UINT nFlags, CPoint point_In) point = point_In; /* - //測試用--------- + //皜祈岫--------- CWindowDC dc(this); DWORD tc=GetTickCount(); for(int i=0;i<100;i++) @@ -743,7 +743,7 @@ void CTermView::OnTimer(UINT nIDEvent) } else if (item->is_disconnected) { - //如果設定自動重連,而且在時間內被斷線,且間隔時間已到 + //憒閮剖芸嚗銝冽扯◤瑞嚗銝撌脣 if (item->site_settings.auto_reconnect) { if (item->time <= item->site_settings.connect_interval) @@ -751,7 +751,7 @@ void CTermView::OnTimer(UINT nIDEvent) if (item->site_settings.reconnect_interval > 0) item->site_settings.reconnect_interval--; else - ReConnect(item); //重新連線 + ReConnect(item); //圈蝺 } } } @@ -789,7 +789,7 @@ void CTermView::OnLButtonUp(UINT nFlags, CPoint point_In) ::KillTimer(NULL, mouse_sel_timer); if (!telnet) return; -// ----------如果有選取區,考慮是否有自動複製------------ +// ----------憒詨嚗格臬行芸銴鋆------------ if (telnet->sel_start.x != telnet->sel_end.x || telnet->sel_start.y != telnet->sel_end.y) { if (AppConfig.auto_copy) @@ -797,12 +797,12 @@ void CTermView::OnLButtonUp(UINT nFlags, CPoint point_In) } else { -// ----------如果不是在選取文字,就處理超連結-------------- +// ----------憒銝臬券詨摮嚗撠梯頞蝯-------------- int l; char* url; - if ((url = HyperLinkHitTest(point, l))) //如果滑鼠點選到超連結 + if ((url = HyperLinkHitTest(point, l))) //憒皛曌暺詨啗蝯 { char tmp; tmp = url[l]; url[l] = 0; - // 呼叫程式開啟超連結 + // 澆怎撘頞蝯 AppConfig.hyper_links.OpenURL(url); url[l] = tmp; } @@ -830,7 +830,7 @@ void CTermView::OnMouseMove(UINT nFlags, CPoint point_In) PtToLineCol(point, lx, ly, false); - BOOL bsel = (nFlags & MK_LBUTTON && ::GetCapture() == m_hWnd); //是否正在選取? + BOOL bsel = (nFlags & MK_LBUTTON && ::GetCapture() == m_hWnd); //臬行迤券詨? point.x -= left_margin; point.y -= top_margin; if (point.x < 0) point.x = 0; @@ -839,13 +839,13 @@ void CTermView::OnMouseMove(UINT nFlags, CPoint point_In) { cy = telnet->site_settings.lines_per_page - 1; if (bsel) - OnVScroll(SB_LINEDOWN, 0, NULL); //跨頁選取,捲動 + OnVScroll(SB_LINEDOWN, 0, NULL); //頝券詨嚗脣 } if (point.y < 0) { cy = 0; if (bsel) - OnVScroll(SB_LINEUP, 0, NULL); //跨頁選取,捲動 + OnVScroll(SB_LINEUP, 0, NULL); //頝券詨嚗脣 } int y2 = telnet->scroll_pos + cy; @@ -855,15 +855,15 @@ void CTermView::OnMouseMove(UINT nFlags, CPoint point_In) cx = (point.x / chw); if (telnet->site_settings.auto_dbcs_mouse) { - //-----------新的支援中文的座標計算----------- - if (cx > 0 && IsBig5(tmpstr, cx - 1)) //如果選擇中文後半段,就選取下一個字 + //-----------啁舀港葉摨扳閮蝞----------- + if (cx > 0 && IsBig5(tmpstr, cx - 1)) //憒豢銝剜敺畾蛛撠梢詨銝銝摮 cx++; - else if (!IsBig5(tmpstr, cx) && (point.x % chw)*2 > chw) //如果也不是中文前半,才是英文 + else if (!IsBig5(tmpstr, cx) && (point.x % chw)*2 > chw) //憒銋銝臭葉嚗航望 cx++; } else { - //------------不考慮雙位元組的座標計算----------- + //------------銝桅雿蝯摨扳閮蝞----------- if ((point.x % chw)*2 > chw) cx++; } @@ -960,7 +960,7 @@ void CTermView::OnMouseMove(UINT nFlags, CPoint point_In) void CTermView::OnContextMenu(CWnd* pWnd, CPoint point) { -// 超連結選單 +// 頞蝯詨 /* char text[32]; MENUITEMINFO inf; inf.cbSize=sizeof(inf); @@ -1015,7 +1015,7 @@ void CTermView::OnContextMenu(CWnd* pWnd, CPoint point) ScreenToClient(&pt); PtToLineCol(pt, x, y, false); - if ((link = HyperLinkHitTest(pt, len))) //如果偵測到是超連結 + if ((link = HyperLinkHitTest(pt, len))) //憒菜葫唳航蝯 { InsertMenu(parent->edit_menu, 0, MF_SEPARATOR | MF_BYPOSITION, 0, 0); InsertMenu(parent->edit_menu, 0, MF_STRING | MF_BYPOSITION, ID_EDIT_COPYURL, LoadString(IDS_COPY_URL)); @@ -1360,7 +1360,7 @@ BOOL CTermView::Connect(CAddress address, CString name, LPCTSTR cfg_path) if (name.IsEmpty()) return FALSE; - CConn* ncon = NewConn(address, name, cfg_path); //產生了新的連線畫面,完成所有設定 + CConn* ncon = NewConn(address, name, cfg_path); //Y鈭啁蝺恍g摰閮剖 if (!ncon) return FALSE; @@ -1368,7 +1368,7 @@ BOOL CTermView::Connect(CAddress address, CString name, LPCTSTR cfg_path) if ((ncon->is_ansi_editor)) return TRUE; -//開始連接socket +//憪叫ocket ConnectSocket((CTelnetConn*)ncon); return TRUE; } @@ -1378,7 +1378,7 @@ LRESULT CTermView::OnDNSLookupEnd(WPARAM found, LPARAM lparam) DNSLookupData* data = (DNSLookupData*)lparam; CTelnetConn* new_telnet = data->new_telnet; SOCKADDR_IN& sockaddr = data->sockaddr; -//設定好相關資訊 +//閮剖憟賜賊鞈閮 sockaddr.sin_family = AF_INET; // XXX: This path only serves telnet, but we might server others as well later. // Don't hard code default port 23. @@ -1449,7 +1449,7 @@ void CTermView::ReConnect(CTelnetConn *retelnet) retelnet->Close(); retelnet->ClearScreen(2); retelnet->site_settings.Load(retelnet->cfg_path); - //不用重新載入鍵盤對應 + //銝券啗仿萇文 ConnectSocket(retelnet); } @@ -1612,7 +1612,7 @@ CString CTermView::GetSelAnsi() else //select several line { int x, x2; - if (telnet->sel_block) //使用區塊選取 + if (telnet->sel_block) //雿輻典憛詨 { x = telnet->sel_start.x; x2 = telnet->sel_end.x; @@ -1951,15 +1951,15 @@ CConn* CTermView::NewConn(CAddress address, CString name, LPCTSTR cfg_path) new_telnet->name = name; #if defined _COMBO_ - if (!new_telnet->is_web) //如果是連線BBS,新開BBS畫面 + if (!new_telnet->is_web) //憒舫蝺BBS,圈BBS恍 { #endif new_telnet->cfg_path = cfg_path; - //為新的socket載入設定值 - if (!new_telnet->site_settings.Load(new_telnet->cfg_path)) //如果載入設定發生錯誤 + //箸啁socket頛亥身摰 + if (!new_telnet->site_settings.Load(new_telnet->cfg_path)) //憒頛亥身摰潛航炊 { - //這很有可能會在密碼輸入錯誤的時候發生! + //敺航賣典蝣潸撓仿航炊潛! delete new_telnet; return NULL; } @@ -2084,14 +2084,14 @@ void CTermView::ConnectTcp(CTelnetConn* new_telnet, CString host, unsigned short new_telnet->Connect((SOCKADDR*)&sockaddr, sizeof(SOCKADDR_IN)); return; } -// 如果不是IP,必須尋找主機 +// 憒銝涅P嚗敹撠曆蜓璈 new_telnet->is_lookup_host = true; -// 加入新執行緒 +// 交啣瑁蝺 DNSLookupData *newfind = new DNSLookupData; newfind->new_telnet = new_telnet; newfind->address = host; DWORD tid; -// 開始新的執行緒 +// 憪啁瑁蝺 memset(&sockaddr, 0, sizeof(SOCKADDR_IN)); newfind->hTask = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)DNSLookupThread, newfind, 0, &tid); @@ -2164,7 +2164,7 @@ inline void CTermView::DrawScreen(CDC &dc) int y = top_margin; HANDLE fold = SelectObject(dc.m_hDC, fnt.m_hObject); - //計算選取區,將倒置的選取區還原 + //閮蝞詨嚗撠蝵桃詨 long selstarty = telnet->sel_start.y; long selendy = telnet->sel_end.y; long selstartx = telnet->sel_start.x; long selendx = telnet->sel_end.x; if (telnet->sel_block) @@ -2185,17 +2185,17 @@ inline void CTermView::DrawScreen(CDC &dc) swap(selstartx, selendx); } - BYTE* pline_selstart; //設為最大 - BYTE* pline_selend; //設為最小 + BYTE* pline_selstart; //閮剔箸憭 + BYTE* pline_selend; //閮剔箸撠 int last_line = telnet->scroll_pos + telnet->site_settings.lines_per_page; for (int i = telnet->scroll_pos ; i < last_line; i++) { LPBYTE atbline = telnet->GetLineAttr(i); //attribs - if (i >= selstarty && i <= selendy) //如果在選取區內 + if (i >= selstarty && i <= selendy) //憒券詨 { - pline_selstart = (BYTE*)0xffffffff; //設為最大 - pline_selend = (BYTE*)0x00000000; //設為最小 - if (telnet->sel_block) //區塊選取 + pline_selstart = (BYTE*)0xffffffff; //閮剔箸憭 + pline_selend = (BYTE*)0x00000000; //閮剔箸撠 + if (telnet->sel_block) //憛詨 { pline_selstart = atbline + selstartx; pline_selend = atbline + selendx; @@ -2220,13 +2220,13 @@ inline void CTermView::DrawScreen(CDC &dc) } SelectObject(dc.m_hDC, fold); -//-----------填滿畫面周圍------------- +//-----------憛急遛恍W典------------- int right_margin = left_margin + telnet->site_settings.cols_per_page * chw; CRect rc; GetClientRect(rc); - int t = rc.bottom; rc.bottom = top_margin; FillBkRect(dc, rc, 0); //上 - rc.bottom = t; rc.top = y; FillBkRect(dc, rc, 0); //下 - t = rc.right; rc.right = left_margin; rc.top = top_margin; rc.bottom = y; FillBkRect(dc, rc, 0); //左 - rc.right = t; rc.left = right_margin; FillBkRect(dc, rc, 0); //右 + int t = rc.bottom; rc.bottom = top_margin; FillBkRect(dc, rc, 0); //銝 + rc.bottom = t; rc.top = y; FillBkRect(dc, rc, 0); //銝 + t = rc.right; rc.right = left_margin; rc.top = top_margin; rc.bottom = y; FillBkRect(dc, rc, 0); //撌 + rc.right = t; rc.left = right_margin; FillBkRect(dc, rc, 0); // } @@ -2257,11 +2257,11 @@ void CTermView::DrawLine(CDC &dc, LPCSTR line, BYTE* pline_selstart, BYTE* pline int dx = chw * w; rc.right = rc.left + dx; - if (w == 2) //如果是雙位元組字,檢查是否為雙色字 + if (w == 2) //憒舫雿蝯摮嚗瑼X交臬衣粹脣 { bool bsel2 = ((patb + 1) >= pline_selstart && (patb + 1) < pline_selend); - //如果是雙色字,或是中文前後半選取狀態不同 - if (patb[0] != patb[1] || bsel != bsel2) //先輸出整個文字,再輸出前半 + //憒舫脣嚗臭葉敺詨銝 + if (patb[0] != patb[1] || bsel != bsel2) //頛詨箸游摮嚗頛詨箏 { if (patb[1] != prevatb || bsel2 != prevbsel) { @@ -2308,10 +2308,10 @@ void CTermView::DrawLineBlink(CDC &dc, LPCSTR line, int y) rc.right = rc.left + dx; bool update = IsAttrBlink(patb[0]); - if (w == 2) //如果是雙位元組字,檢查是否為雙色字 + if (w == 2) //憒舫雿蝯摮嚗瑼X交臬衣粹脣 { - //如果是雙色字 - if (patb[0] != patb[1]) //先輸出整個文字,再輸出前半 + //憒舫脣 + if (patb[0] != patb[1]) //頛詨箸游摮嚗頛詨箏 { if (IsAttrBlink(patb[1])) { @@ -2475,9 +2475,9 @@ BOOL CTermView::OpenAnsFile(LPCTSTR filepath) } -void CTermView::SendAnsiString(CString data) //送出ESC轉換後的ANSI字串 +void CTermView::SendAnsiString(CString data) //慟SC頧敺ANSI摮銝 { -//使用彩色貼上含有控制碼,要暫時關閉自動換行功能 +//雿輻典蔗脰票銝急批嗥Ⅳ嚗閬急芸銵 BOOL tmp_autowrap = AppConfig.site_settings.paste_autowrap; AppConfig.site_settings.paste_autowrap = 0; @@ -2503,7 +2503,7 @@ BOOL CTermView::OpenAnsFile(LPCTSTR filepath) } telnet->SendString(data); -//重新恢復自動換行 +//唳W儔芸銵 AppConfig.site_settings.paste_autowrap = tmp_autowrap; } @@ -2576,8 +2576,8 @@ void CMainFrame::SendFreqStr(CString str, BYTE inf) if (inf & 1 << 7) { - if (!(inf & 1 << 6)) //沒做控制碼轉換 - str.Replace("^[[", "\x1b["); //轉換 ^[ 成 ESC + if (!(inf & 1 << 6)) //瘝批嗥Ⅳ頧 + str.Replace("^[[", "\x1b["); //頧 ^[ ESC view.SendAnsiString(str); } @@ -2612,9 +2612,9 @@ LRESULT CTermView::OnFind(WPARAM w, LPARAM l) bool first_time = (telnet->sel_start.x == telnet->sel_end.x) || (find_str != find_text); int first_line = pfinddlg->MatchWholeWord() ? 0 : telnet->first_line; - if (pfinddlg->SearchDown()) //向後搜尋 + if (pfinddlg->SearchDown()) //敺撠 { - if (first_time) //第一次尋找 + if (first_time) //蝚砌甈∪ { telnet->sel_start.y = telnet->sel_end.y = first_line; telnet->sel_start.x = telnet->sel_end.x = 0; @@ -2643,10 +2643,10 @@ LRESULT CTermView::OnFind(WPARAM w, LPARAM l) line = telnet->screen[y]; } } - else //向前搜尋 + else //撠 { strnrstrfunc pstrnrstr = pfinddlg->MatchCase() ? strnrstr : strnrstri; - if (first_time) //第一次尋找 + if (first_time) //蝚砌甈∪ { telnet->sel_start.y = telnet->sel_end.y = telnet->last_line; telnet->sel_start.x = telnet->sel_end.x = telnet->site_settings.cols_per_page; @@ -2664,17 +2664,17 @@ LRESULT CTermView::OnFind(WPARAM w, LPARAM l) } } - if (found) //如果有找到 + if (found) //憒曉 { - InvalidateRect(&rc, FALSE); //清除原本的舊選取區 + InvalidateRect(&rc, FALSE); //皜文祉詨 startx = (found - telnet->screen[y]); telnet->sel_start.x = startx; telnet->sel_end.y = telnet->sel_start.y = y; telnet->sel_end.x = startx + find_str.GetLength(); - if (telnet->scroll_pos > y || y >= telnet->scroll_pos + telnet->site_settings.lines_per_page) //如果不在目前視野內 + if (telnet->scroll_pos > y || y >= telnet->scroll_pos + telnet->site_settings.lines_per_page) //憒銝函桀閬 { - int pg = (y / telnet->site_settings.lines_per_page); //找出所在的頁數 + int pg = (y / telnet->site_settings.lines_per_page); //曉箸函 telnet->scroll_pos = pg * telnet->site_settings.lines_per_page; SetScrollPos(SB_VERT, telnet->scroll_pos); Invalidate(FALSE); @@ -2697,7 +2697,7 @@ LRESULT CTermView::OnFind(WPARAM w, LPARAM l) #include // AUTOCHECKBOX "Match &whole word only", chx1, 4, 26, 100, 12, WS_GROUP -// 偷偷借用FindDialog的Match Case作為尋找全部緩衝區的選項 :) +// 瑕瑕沙indDialogMatch Case雿箏曉券函楨銵賊 :) void CTermView::FindStart() { @@ -2708,7 +2708,7 @@ void CTermView::FindStart() pfinddlg = new CFindReplaceDialog; pfinddlg->m_fr.lpstrFindWhat = (LPTSTR)(LPCTSTR)find_text; pfinddlg->Create(TRUE, NULL, NULL, FR_DOWN, this); - pfinddlg->GetDlgItem(chx1)->SetWindowText(LoadString(IDS_FIND_IN_ALL_BUF)); //"尋找整個緩衝區(&B)" + pfinddlg->GetDlgItem(chx1)->SetWindowText(LoadString(IDS_FIND_IN_ALL_BUF)); //"撠暹游蝺抵(&B)" pfinddlg->ShowWindow(SW_SHOW); } else @@ -2731,15 +2731,15 @@ void CTermView::PtToLineCol(POINT pt, int &x, int &y, bool adjust_x) { if (telnet->site_settings.auto_dbcs_mouse) { - //-----------新的支援中文的座標計算----------- - if (x > 0 && IsBig5(curstr, x - 1)) //如果選擇中文後半段,就選取下一個字 + //-----------啁舀港葉摨扳閮蝞----------- + if (x > 0 && IsBig5(curstr, x - 1)) //憒豢銝剜敺畾蛛撠梢詨銝銝摮 x++; - else if (!IsBig5(curstr, x) && (pt.x % chw)*2 > chw) //如果也不是中文前半,才是英文 + else if (!IsBig5(curstr, x) && (pt.x % chw)*2 > chw) //憒銋銝臭葉嚗航望 x++; } else { - //------------不考慮雙位元組的座標計算----------- + //------------銝桅雿蝯摨扳閮蝞----------- if ((pt.x % chw)*2 > chw) x++; } @@ -2762,8 +2762,8 @@ CRect CTermView::TextRect() const } -char* CTermView::HyperLinkHitTest(CPoint client_point, int& len) //用來測試畫面上某點是否為超連結 -//x,y為終端機行列座標,而不是滑鼠座標 +char* CTermView::HyperLinkHitTest(CPoint client_point, int& len) //其皜祈岫恍V暺臬衣箄蝯 +//x,y箇蝡舀銵摨扳嚗銝舀曌摨扳 { CRect text_rect = TextRect(); if (!PtInRect(&text_rect, client_point)) @@ -2793,9 +2793,9 @@ void CTermView::OnCurConSettings() CPropertySheet dlg(IDS_CUR_CON_SETTINGS); CSiteSettings tmpset; - if (!telnet->cfg_path.IsEmpty()) //嘗試載入個別設定 + if (!telnet->cfg_path.IsEmpty()) //閰西亙亥身摰 tmpset.Load(telnet->cfg_path); - tmpset = telnet->site_settings; //並使用目前設定值覆蓋無法載入的部分 + tmpset = telnet->site_settings; //銝虫蝙函桀閮剖潸⊥頛亦典 CSitePage page1; page1.psettings = &tmpset; @@ -2809,10 +2809,10 @@ void CTermView::OnCurConSettings() if (!telnet->cfg_path.IsEmpty()) tmpset.Save(telnet->cfg_path); - //重新載入字串觸發 + //啗亙銝脰孛 telnet->site_settings.triggers.CopyFrom(tmpset.triggers); - if (strncmp(telnet->site_settings.key_map_name, tmpset.key_map_name, 10)) //如果鍵盤對映更改 + if (strncmp(telnet->site_settings.key_map_name, tmpset.key_map_name, 10)) //憒萇文湔 { telnet->key_map->Release(); telnet->key_map = CKeyMap::Load(tmpset.key_map_name); @@ -2873,7 +2873,7 @@ CString CTermView::GetSelText() tmp = telnet->sel_end.y; telnet->sel_end.y = telnet->sel_start.y; telnet->sel_start.y = tmp; - //x也需要倒過來 + //x銋閬靘 tmp = telnet->sel_end.x; telnet->sel_end.x = telnet->sel_start.x; telnet->sel_start.x = tmp; @@ -2900,14 +2900,14 @@ CString CTermView::GetSelText() data = ret.GetBuffer(len + 1); memset(data, 0, len + 1); strncpy(data, telnet->screen[selstarty] + telnet->sel_start.x, len); - if (telnet->sel_block) //如果區塊選取 + if (telnet->sel_block) //憒憛詨 paste_block = TRUE; strstriptail(data); } else //select several line { char crlf[] = {13, 10, 0}; - if (telnet->sel_block) //如果區塊選取 + if (telnet->sel_block) //憒憛詨 { paste_block = TRUE; int oll = telnet->sel_end.x - telnet->sel_start.x; @@ -2965,7 +2965,7 @@ LRESULT CTermView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) void CTermView::AdjustFont(int cx, int cy) { -//-----動態字體調整------ +//-----摮擃隤踵------ int cols_per_page = telnet ? telnet->site_settings.cols_per_page : AppConfig.site_settings.cols_per_page; int lines_per_page = telnet ? telnet->site_settings.lines_per_page : AppConfig.site_settings.lines_per_page; if (AppConfig.auto_font) @@ -2987,7 +2987,7 @@ void CTermView::AdjustFont(int cx, int cy) CWindowDC dc(this); CGdiObject* pold = dc.SelectObject(&fnt); - CSize &sz = dc.GetTextExtent(" ", 2); + CSize &sz = dc.GetTextExtent("", 2); chw = sz.cx / 2; // lineh=y; lineh = sz.cy; @@ -3051,23 +3051,23 @@ void CTermView::DrawLineOld(CDC &dc, LPSTR line, LPSTR hol = line; //head of line LPSTR eol = line + telnet->site_settings.cols_per_page; //end of line LPBYTE patb = atbline; //attributes - int l; //每次輸出的文字長度 + int l; //瘥甈∟撓箇摮瑕漲 int x = left_margin; //x position - CRect rc; //用來輸出文字的rect + CRect rc; //其頛詨箸摮rect rc.top = y; rc.bottom = y + lineh; -// 開始輸出文字 +// 憪頛詨箸摮 while (line < eol) { BYTE attr; BOOL bsel; for (attr = *patb, bsel = (patb >= pline_selstart && patb < pline_selend); attr == *patb && bsel == (patb >= pline_selstart && patb < pline_selend); - patb++); //如果是相同屬性就向後移動 + patb++); //憒舐詨撅祆批停敺蝘餃 - l = patb - atbline; //字串長度 + l = patb - atbline; //摮銝脤瑕漲 UINT drawopt = AppConfig.bktype ? 0 : ETO_OPAQUE; bool textout = (!IsAttrBlink(attr) || blight || telnet->sel_end != telnet->sel_start); - if (IsBig5(hol, line + l - 1)) //最後一個字如果是中文前半段 + if (IsBig5(hol, line + l - 1)) //敺銝摮憒臭葉畾 { int x2 = x + l * chw - chw; rc.left = x2; @@ -3082,7 +3082,7 @@ void CTermView::DrawLineOld(CDC &dc, LPSTR line, FillBkRect(dc, rc, 0, bsel2); } if (!IsAttrBlink(*patb) || blight || telnet->sel_end != telnet->sel_start) - ExtTextOut(dc, x2, y, drawopt, rc, line + l - 1, 2); //先輸出整個中文,再切掉前半 + ExtTextOut(dc, x2, y, drawopt, rc, line + l - 1, 2); //頛詨箸游銝剜嚗 else // only draw background dc.ExtTextOut(x2, y, drawopt, rc, NULL, 0, NULL); @@ -3138,10 +3138,10 @@ inline void CTermView::DrawLineBlinkOld(CDC &dc, LPSTR line, int y) int pos = int(pblink - atbline); x += chw * pos; line += pos; - //開始輸出文字 + //憪頛詨箸摮 CRect rc(x, y, 0, y + lineh); UINT drawopt = 0; - //如果第一個字是中文後半 + //憒蝚砌摮臭葉敺 if (hol != line && IsBig5(hol, line - 1)) { rc.right = x + chw; @@ -3164,7 +3164,7 @@ inline void CTermView::DrawLineBlinkOld(CDC &dc, LPSTR line, int y) if (blight || !IsAttrBlink(tmpatb)) ExtTextOut(dc, rc.left, y, drawopt, rc, line - 1, 2); - //略過第一個字的屬性色彩和文字內容 + //仿蝚砌摮撅祆扯脣蔗摮批捆 line++; x += chw; l--; @@ -3172,7 +3172,7 @@ inline void CTermView::DrawLineBlinkOld(CDC &dc, LPSTR line, int y) } drawopt = 0; - //如果最後一個字是中文前半 + //憒敺銝摮臭葉 if (IsBig5(hol, line + l - 1)) { rc.left = x + chw * l - chw; @@ -3211,7 +3211,7 @@ inline void CTermView::DrawLineBlinkOld(CDC &dc, LPSTR line, int y) ExtTextOut(dc, rc.left, y, drawopt, rc, line, l); } - //輸出文字結束 + //頛詨箸摮蝯 atbline = pblink + l; line += l; @@ -3250,7 +3250,7 @@ BOOL CTermView::ExtTextOut(CDC& dc, int x, int y, UINT nOptions, LPCRECT lpRect, // FIXME: nCount is the number of half-width character on the screen, // not size of bytes for the string to draw. - // in全為dbcs, in[n]=out[n/2+1]; in全為acsii, in[n]=out[n+1] + // in函榛bcs, in[n]=out[n/2+1]; in函榮csii, in[n]=out[n+1] memset(wbuf, 0, (nCount + 1)*sizeof(wchar_t)); // <-- in bytes ::MultiByteToWideChar(cp_id, 0, lpszString, nCount, wbuf, nCount + 1); return ::ExtTextOutW(dc.GetSafeHdc(), x, y, nOptions, lpRect, wbuf, wcslen(wbuf) , NULL);