Edit控件中使用SetWindowTextW時,光標總是在第一位?

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章