Edit控制元件中使用SetWindowTextW時,游標總是在第一位?
阿新 • • 發佈:2018-11-08
最近,我在修改自己繪製的CMyEdit類,發現了一個特別奇怪的問題:
1:當我在自繪CMyEdit時,使用SetWindowTextW()時,發現,每次游標都在第一位顯示。
2:當使用m_edit.SetFouce()時,再使用SetWindowTextW()時,也會出現這個問題。
後來,說是使用SetSel設定一下游標的位置。
好多博友說SetSel(-1 , -1);時,可以將游標設定到最後一位上,結果我嘗試了很久都不能成功。但是,只有不是-1 時都可以成功,說明,當引數是-1時是無效的
我的解決方案:
CStringW strText = L"123456";
第一步:
獲取字串的長度
int nLength = strText.GetLength();
第二步:
根據字串的長度,設定游標的位置
m_edit.SetSel(nLength , nLength);
這樣就可以設定成功
**************************************************************************************************************************************************
需要注意的是:必須設定了SetWindowTextW()這個函式後,再使用SetSel才會生效
m_edit->MoveWindow(rect); m_edit->ShowWindow(SW_SHOW); m_edit->SetWindowTextW(strInfo); m_edit->SetFocus(); m_edit->SetSel(strInfo.GetLength(), strInfo.GetLength());