目前共有4篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:台灣正體▼
 
点击 回复
402 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)
 

本帖信息

点击数:402 回复数:3
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-6-16 14:44
 
©2010-2025 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。