目前共有4篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:不轉換▼
 
點擊 回復
276 3
【方法】在文本框中设置和获取光标位置以及所选的位置
一派護法 十九級
1樓 發表于:2016-4-25 17:43
/* 光标移到开头 */
SetFocus(hwndEdit);
Edit_SetSel(hwndEdit, 0, 0);

/* 取消选中, 光标将出现在选中文字末尾 */
SetFocus(hwndEdit);
Edit_SetSel(hwndEdit, -1, 0);

/* 全部选中 */
SetFocus(hwndEdit);
Edit_SetSel(hwndEdit, 0, -1);

/* 光标移到末尾 */
SetFocus(hwndEdit);
Edit_SetSel(hwndEdit, 0, -1); // 先全部选中
Edit_SetSel(hwndEdit, -1, 0); // 再取消选中, 光标自动移到最后

/* 显示当前选中区域 */
SendMessage(hwndEdit, EM_GETSEL, (WPARAM)&dwStart, (LPARAM)&dwEnd);
_stprintf_s(szText, TEXT("Selection: (%u, %u)"), dwStart, dwEnd);
MessageBox(hwndEdit, szText, TEXT("Current Selection"), MB_ICONINFORMATION);
SetFocus(hwndEdit);
一派護法 十九級
2樓 發表于:2016-4-25 17:44
所用到的变量:
HWND hwndEdit;
TCHAR szText[100];
DWORD dwStart, dwEnd;
一派護法 十九級
3樓 發表于:2016-6-16 14:36
取消选中, 光标将出现在选中文字末尾 的意思是:
假设文本框中的内容是:abcdef
当前选中的文本是cde
执行:
SetFocus(hwndEdit);
Edit_SetSel(hwndEdit, -1, 0);
后的效果是:取消选中这段文本,并把光标移动到e的后面。

注意:文本框中一定有光标位置,但不一定有选中的文字。只要文本框获得了焦点,光标就会显示出来。文本框失去焦点后,虽然光标不显示,但系统还是记忆了光标位置的,再次获得焦点时光标就会在原位置显示。
一派護法 十九級
4樓 發表于:2016-6-16 14:44
Edit_SetSel只会修改系统记忆的该文本框中的光标位置。如果不调用SetFocus使文本框获得焦点的话,那么是看不到效果的。

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:276 回複數:3
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-6-16 14:44
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。