-3
好吧,我知道如何使用最小 - 最大字符位置進行選擇,但是如果添加文本,則必須重新查找文本並更新選區。所以我搜索並發現可以使用FindTextEx鍵入一個單詞,最小/最大搜索位置,它將返回該單詞的最小/最大值。如何使用文本獲取選區 - RichEditBox C++
但它總是失敗,我不知道爲什麼,也MSDN說後向搜索使用FR_DOWN,但是當我鍵入它作爲(WPARAM)屬性它說它是未定義的(像50%的其他FR_ 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);
}
失敗怎麼辦? 'EM_FINDTEXTEX'返回匹配開始位置,在你的代碼中你根本沒有使用返回值。 –
我知道,那是因爲如果它「返回」它沒有找到所選文本,它將對cpMin和cpMax都返回-1。 我沒有使用它,只是因爲它沒有返回任何東西。我只是在調試器中檢查返回值。 –
根據文檔,您應該使用EM_FINDTEXTEXW用於Unicode。你嘗試過嗎? –