2013-07-22 58 views
0

我有一些代碼在ON_EN_CHANGE調用時從用戶輸入的字符串中去掉非法字符。 所以需要更正光標位置,如果任何被刪除。GetSel總是返回0,0

爲此,我一直試圖使用GetSel檢索位置,然後setsel將其設置爲如下。 f是另一個int變量。

m_ExportDirectory.GetWindowTextA(directory); 
//characters removed here 
if (rem > 0) 
{ 
    int j; 
    m_ExportDefaultName.GetSel(f, j); 
    m_ExportDirectory.SetWindowTextA(directory); 
    m_ExportDefaultName.SetSel(f-rem, f-rem); 
} 

但getsel總是將兩個F & J即可0。我已經嘗試了呼叫移動到上面GetWindowText函數,但沒有改變。

我在做一些愚蠢的事情嗎?如果沒有任何想法?

感謝

+1

你是否故意在另一個不是'SetWindowTextA'的對象上調用'GetSel' /'SetSel'?這似乎不是你想要做的。 – IInspectable

+0

好的..我不能相信我錯過了那個。 我猜是隧道視野。謝謝,我會給一個嘗試 – Hector

回答

1

我認爲這個問題是GetSel()返回選擇開始和結束位置。你得到(0,0),因爲用戶沒有選擇文本。

+0

根據這個答案http://stackoverflow.com/questions/92671/how-do-i-reserve-caret-position-in-cedit-control 它應該工作。互聯網上還有其他幾個來源說同樣的事情。 – Hector

+1

我用簡單的程序檢查過,確實有效。根據您提供的代碼,很難推論出爲什麼它不適用於您的案例。很多時候,這只是一些沒有設置在控件中的標誌。 –

0

解決Tims評論。出現問題是我的疲倦和愚蠢!

相關問題