好的,所以我知道如何使用最小-最大字符位置进行选择,但是如果添加文本,则必须重新查找文本并更新选择。所以我在搜索,发现您可以使用 FindTextEx 输入一个单词,最小/最大搜索位置,它将返回该单词的最小/最大值。
但它对我来说总是失败,我不知道为什么,MSDN 也说向后搜索使用 FR_DOWN 但是当我将它作为(WPARAM)属性输入时,它说它是未定义的(就像 FindTextEx 页面上列出的其他 FR_ 的 50% )
包含 RichEdit.h(这只是一个函数,因为我的程序目前太大而无法发布整个源代码)
void UpdateLog() {
CHARFORMAT CharFormat;
CharFormat.cbSize = sizeof(CHARFORMAT);
CharFormat.dwMask = CFM_BOLD | CFM_EFFECTS;
CharFormat.dwEffects = CFE_BOLD | CFE_AUTOCOLOR;
std::wstring szUpdatesString;
szUpdatesString += L"SQL Manager V1.3 - Trevin Corkery\r\n\r\n";
szUpdatesString += L"New:\r\nAdded \"Information\" Tab\r\n\r\n";
szUpdatesString += L"Improvements:\r\n\r\n";
szUpdatesString += L"Fixes:\r\nTabs now work correctly.\r\n";
SetWindowText(hUpdatesRE, szUpdatesString.c_str());
CHARRANGE CharRange = { 0 };
FINDTEXTEX FindTextExtended;
FindTextExtended.chrg.cpMin = 0;
FindTextExtended.chrg.cpMax = -1;
FindTextExtended.lpstrText = L"New";
SendMessage(hUpdatesRE, EM_FINDTEXTEX, FR_NOT_ENUM, (LPARAM)&FindTextExtended);
SendMessage(hUpdatesRE, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&CharFormat);
}