最近,我在修改自己繪製的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());