1. 程式人生 > >Edit控制元件中使用SetWindowTextW時,游標總是在第一位?

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());