如何使用Text - RichEditBox C ++进行选择

时间:2016-02-11 07:06:29

标签: c++ winapi richeditbox

好吧所以我知道如何使用最小 - 最大字符位置进行选择,但如果添加文本,则必须重新查找文本并更新选择。所以我在搜索,发现你可以使用FindTextEx输入一个单词,最小/最大搜索位置,它将返回该单词的最小值/最大值。

但它总是对我失败而且我不知道为什么,MSDN也说后向搜索使用FR_DOWN但是当我输入它作为(WPARAM)属性时它说它是未定义的(就像其他FR_50的50%一样)在FindTextEx页面上)

包含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);

}

1 个答案:

答案 0 :(得分:0)

我发现了问题,我的WPARAM属性错误。它需要FR_DOWN,但由于某些奇怪的原因看到FR_DOWN未定义,我查找了FR_DOWN的代码并发现它是0x00000001。

现在可以了,

SendMessage(hUpdatesRE, EM_FINDTEXT, (WPARAM)0x00000001, (LPARAM)&FindTextExtended)